1

我正在学习 perl 编程语言。我正在寻找一个代码或一个想法来检查我所有当前正在运行的应用程序。这应该为 Windows 应用程序实现。它也可以是 shell 脚本,但只需要跟踪 Windows 应用程序。

请帮助我。

4

2 回答 2

1

If you want a list of running applications (like the Applications tab in the Task Manager), you want to enumerate the open windows, rather than look at processes.

I was able to make this work with ActivePerl 5.12 (x64). First I installed Win32::GuiTest (ppm install Win32::GuiTest).

use Win32::GuiTest qw/:FUNC/;
use strict;
use warnings;

my @windowlist = FindWindowLike(undef, undef, undef, undef, 1);

foreach my $whandle (@windowlist)
{
    if (IsWindowVisible($whandle))
    {
        my $wintitle = GetWindowText($whandle);
        my $winclass = GetClassName($whandle);
        unless($wintitle eq "" || ($wintitle eq "Program Manager" && $winclass eq "Progman"))
        {
            print GetWindowText($whandle)."\n";
        }
    }
}
于 2012-07-01T01:23:11.137 回答
0

像 MS-DOS 中的任务列表这样的东西有用吗?

它基本上吐出 Windows 任务管理器的“进程”选项卡。您可以使用tasklist' 的内置过滤,或者如果您真的想使用 perl,您可以将输出通过管道传输到 perl 脚本。

于 2012-05-23T14:45:34.347 回答