Schrift
[thread]5187[/thread]

Task-Icon-Menu ohne Funktion?

Leser: 2


<< >> 9 Einträge, 1 Seite
xiconfjs
 2006-05-17 12:08
#45460 #45460
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich habe eine Frage zu einen Skript aus eurem Wiki. Es ist das Skript, welches ein Tray-Icon erstellt und ein Menu per Rechtsklick erzeugt. Trotz 2 stündigen Versuchens bekomme ich es nicht hin, den Menupunkten funktionen zuzuordnen. Hat da einer vielleicht einen Tipp für mich? :P

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl
use Win32::GUI;
use strict;
use warnings;

my $id = 1;
my $hwnd = GUI::GetPerlWindow(); GUI::Hide($hwnd);
my $icon = new Win32::GUI::Icon('an.ico');
my $main = Win32::GUI::Window->new(
-name => 'Main',
-text => 'Perl',
-width => 200,
-height => 200,
);
my $ni = $main->AddNotifyIcon(
-name => "systray",
-id => $id,
-icon => $icon,
-tip => "Go Back!up",
);
Win32::GUI::Dialog();
Win32::GUI::Show($hwnd);



sub systray_RightClick {
my $systray_menu = new Win32::GUI::Menu(
"SystrayMenu Functions" => "SystrayMenu",
#"Go Back!up",
"> Info" => "Systray_info",
"> Dienst" =>"",
">> Starten" => "Systray_start",
">> Stoppen" => "Systray_stop",
">> Restart" => "Systray_restart",
">> Pausieren" => "Systray_pause",
"> Exit" => "SystrayExit",
);
my($x, $y) = Win32::GUI::GetCursorPos();
$main->TrackPopupMenu($systray_menu->{SystrayMenu}, $x, $y-50);
}

sub Main_Terminate {
Win32::GUI::NotifyIcon::Delete( $ni, -id => $id );
return -1;
}

sub systray_Terminate {
Win32::GUI::NotifyIcon::Delete( $ni, -id => $id );
return -1;
}
zipster
 2006-05-17 13:15
#45461 #45461
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Wie hast du den die Sub genannt?

Wenn du zum Beispiel
Code: (dl )
">> Starten"    => "Systray_start",

aufrufen willst muss die Sub so heißen
Code: (dl )
1
2
3
4
sub Systray_start_Click{
print "TEST \n";
...
}



Kannst du aber auch alles der Doku entnehmen.
http://jeb.ca/perl/win32-gui-docs/index.pl/win32-gui-menu#Click_\n\n

<!--EDIT|zipster|1147857391-->
xiconfjs
 2006-05-17 13:22
#45462 #45462
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Habs jetzt mal so gemacht, passiert aber nix, kein Ton kein Beenden des Programms. :(

Code: (dl )
1
2
3
4
sub Systray_start_Click{
print "\a \n";
exit;
}
\n\n

<!--EDIT|xiconfjs|1147857756-->
zipster
 2006-05-17 13:46
#45463 #45463
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ich hab damals ein BUG eingebaut...
Und habs nie gemerkt ;)

Ändere den COde mal wie folgt 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
...
my $systray_menu = new Win32::GUI::Menu(
"SystrayMenu Functions" => "SystrayMenu",
#"Go Back!up",
"> Info" => "Systray_info",
"> Dienst" =>"",
">> Starten" => "Systray_start",
">> Stoppen" => "Systray_stop",
">> Restart" => "Systray_restart",
">> Pausieren" => "Systray_pause",
"> Exit" => "SystrayExit",
);
Win32::GUI::Dialog();
Win32::GUI::Show($hwnd);



sub systray_RightClick {
my($x, $y) = Win32::GUI::GetCursorPos();
$main->TrackPopupMenu($systray_menu->{SystrayMenu}, $x, $y-50);
}
...


So sollte es funktionieren. Und sorry für den dummen Fehler!
xiconfjs
 2006-05-17 14:31
#45464 #45464
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jo...thx, hat geklappt...hier noch mal zur Vollständigkeit der Quelltext:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/perl
use Win32::GUI;
use strict;
use warnings;

my $id = 1;
my $hwnd = GUI::GetPerlWindow(); GUI::Hide($hwnd);
my $icon = new Win32::GUI::Icon('an.ico');
my $main = Win32::GUI::Window->new(
-name => 'Main',
-text => 'Perl',
-width => 200,
-height => 200,
);
my $ni = $main->AddNotifyIcon(
-name => "systray",
-id => $id,
-icon => $icon,
-tip => "Go Back!up",
);
#Win32::GUI::Dialog();
#Win32::GUI::Show($hwnd);

my $systray_menu = new Win32::GUI::Menu(
"SystrayMenu Functions" => "SystrayMenu",
#"Go Back!up",
"> Info" => "Systray_info",
"> Dienst" =>"",
">> Starten" => "Systray_start",
">> Stoppen" => "Systray_stop",
">> Restart" => "Systray_restart",
">> Pausieren" => "Systray_pause",
"> Exit" => "SystrayExit",
);
Win32::GUI::Dialog();
Win32::GUI::Show($hwnd);

sub systray_RightClick {
my($x, $y) = Win32::GUI::GetCursorPos();
$main->TrackPopupMenu($systray_menu->{SystrayMenu}, $x, $y-50);
}

sub Main_Terminate {
Win32::GUI::NotifyIcon::Delete( $ni, -id => $id );
return -1;
}

sub systray_Terminate {
Win32::GUI::NotifyIcon::Delete( $ni, -id => $id );
return -1;
}

sub Systray_start_Click{
print "\a \n";
exit;
}
zipster
 2006-05-17 14:44
#45465 #45465
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
xiconfjs
 2006-05-17 14:48
#45466 #45466
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
pack doch gleich das Beispiel mit der Menu_Klick_Funktion rein....damit das auch geklärt und dokumentiert wäre...

Code: (dl )
1
2
3
4
sub Systray_start_Click{
print "\a \n";
exit;
}
ThomasDr
 2006-05-19 14:16
#45467 #45467
User since
2006-05-16
2 Artikel
BenutzerIn
[default_avatar]
Ich habe mich mal an dem Beispiel versucht, funktioniert soweit auch, nur wie bekomme ich die Sache jetzt noch soweit, das sich das Programm beendet, wenn Windows beendet wird ?

Sowie ich Windows (XP) herunterfahre während das Programm noch im Tray sitzt und läuft, bekomme ich die Meldung das perl.exe nicht beendet werden konnte usw.

Muß man das Beenden des Programms noch irgendwie auf eine Message vom Windows "scharfschalten" ?

Thomas
renee
 2006-05-19 15:21
#45468 #45468
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da müsstest Du evtl mit Win32::Daemon arbeiten (siehe: http://www.roth.net/perl/Daemon/ )
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/
<< >> 9 Einträge, 1 Seite



View all threads created 2006-05-17 12:08.