Thread win32 EnumWindows klappt nicht (5 answers)
Opened by PerlProfi at 2007-03-14 22:02

PerlProfi
 2007-03-14 22:02
#75050 #75050
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte eine Applikation auf Windows per Titel finden.
Dabei würde ich gerne die Titel der offenen Applikationen mit einem regulären Ausdruck durchprobieren.
Deshalb habe ich mich jetzt ein bisschen auf MSDN umgeschaut und die Funktion EnumWindows() dafür ausgewählt.

Leider stürzt Perl bei folgendem Beispielprogramm immer mit der Meldung Perl Command Line Interpreter hat ein Problem festgestellt und muss beendet werden. ab.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl
use strict;
use warnings;

use Win32;
use Win32::API;
use Win32::API::Callback;

my $EnumWindows = Win32::API->new( "user32", "EnumWindows", "PN", "N" );
my $GetWindowText = Win32::API->new( "user32", "GetWindowText", "NPN", "N" );

my $title = qr/abc/;
my $hwnd = 0;
my $EnumWindowsProc = Win32::API::Callback->new(
sub {
my($acthwnd, $param) = @_;

my $apptitle = ' ' x 256;
my $len = $GetWindowText->Call($acthwnd, $apptitle, length($apptitle)-1);
$apptitle = substr($apptitle, 0, $len);

if ($apptitle =~ $title)
{
$hwnd = $acthwnd;
return 0;
}

return 1;
}, "NN", "N" );

$EnumWindows->Call( $EnumWindowsProc, 0 );

Kann mir jemand sagen was ich falsch mache?

Ich habe mir auch mal den Artikel von esskar im WIKI angesehen, bin aber hierbei trotzdem noch nicht weiter gekommen.

MfG\n\n

<!--EDIT|PerlProfi|1173902695-->

View full thread win32 EnumWindows klappt nicht