Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8842[/thread]

win32 EnumWindows klappt nicht

Leser: 1


<< >> 6 Einträge, 1 Seite
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-->
GoodFella
 2007-03-15 16:19
#75051 #75051
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Bei mir tritt das Problem auch auf, die Fehlerursache lässt sich nicht richtig lokalisieren; kommentiere ich $EnumWindows->Call( $EnumWindowsProc, 0 ); aus, läufts, lass ich es drin und kommentiere den Inhalt der sub aus, stürzt es ab. Also allein schon das hier stürzt ab:
my $EnumWindowsProc = Win32::API::Callback->new( sub { 1; }, "NN", "N" );
$EnumWindows->Call( $EnumWindowsProc, 0 );
PerlProfi
 2007-03-15 17:13
#75052 #75052
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Kann man soetwas denn noch irgendwie anders realisieren?
FindWindow() hilft mir nicht, weil der Titel nicht fest sein soll.
Und GetWindow() braucht selbst ein Fenster zum Anfangen.\n\n

<!--EDIT|PerlProfi|1173971653-->
PerlProfi
 2007-03-18 12:45
#75053 #75053
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Weiß denn niemand wie man das anstellen kann, sodass es funktioniert?

MfG
renee
 2007-03-18 13:22
#75054 #75054
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Win32::GuiTest. Dort gibt's sowas wie "FindWindowLike"...

Wenn Du es Dir installierst, nimm die neueste Version, als ppm gibt's die bei theoryx5.uwinnipeg.ca ...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-03-18 15:39
#75055 #75055
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Sehr vielen Dank, klappt super!

MfG
<< >> 6 Einträge, 1 Seite



View all threads created 2007-03-14 22:02.