Schrift
[thread]4909[/thread]

In Taskleiste verschwinden lassen (Seite 4)



<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten
renee
 2005-04-21 12:32
#43215 #43215
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist sehr gut geworden...
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/
zipster
 2005-04-21 12:37
#43216 #43216
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Danke für die Blumen
*stolzsei*

Quote
Schick, danke. Vielleicht ist dieses Mouseevent dafür da, auf auf-das-Icon-gezogene-Dateien oder ähnliches reagieren zu können?


Das kann gut sein. Ich habe es aber nicht benötigt deshalb hab ich mich auch nicht damit auseinandergesetzt.
Ich denke da wird man auch Spezielle API befehle anbfangen können.

Quote
Edit: Ich hab den Wiki-Beitrag mal etwas verschönert (Tabellen etc.).

DANKE!\n\n

<!--EDIT|zipster|1114087786-->
Froschpopo
 2005-04-21 23:38
#43217 #43217
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das blöde is ja, dass sich dabei einmal ein Win32::Gui Fenster öffnet welches nichts mit dem Tk-Programm zu tun hat... Ich wollte ja eigentlich mit dem Systray-Icon das Tk-Fenster steuern.
zipster
 2005-04-22 09:56
#43218 #43218
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Das Win32::Gui Fenster siehst du doch garnicht.
Und Tk-Fenster müßtest du damit auch steuern könne.

Ich habe das ja auch benutzt um Dienste zu starten usw.

Sei doch froh das so etwas überhaupt in Perl geht.

/Edit
Was auch noch ne Lösung wäre, wenn du es mit Win32::API machst. Damit müßte man eigentlich auch ein TrayIcon erstellen können

/nochmal EDIT
;)

Ich war mal so frei und hab in der Win32 Programmer's Reference nachgeschaut wie die API funktion lautet.


Quote
You add an icon to the taskbar status area by filling a NOTIFYICONDATA structure and then sending the structure through the NIM_ADD message. The structure members must specify the handle of the window that is adding the icon, as well as the icon identifier and icon handle. You can also specify ToolTip text for the icon. If you need to receive mouse messages for the icon, specify the identifier of the callback message that the system should use to send the message to the window procedure.

The function in the following example demonstrates how to add an icon to the taskbar.
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
// MyTaskBarAddIcon - adds an icon to the taskbar status area.  
// Returns TRUE if successful or FALSE otherwise.
// hwnd - handle of the window to receive callback messages
// uID - identifier of the icon
// hicon - handle of the icon to add
// lpszTip - ToolTip text
BOOL MyTaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;

tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;

tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = MYWM_NOTIFYICON;
tnid.hIcon = hicon;
if (lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
else
tnid.szTip[0] = '\0';

res = Shell_NotifyIcon(NIM_ADD, &tnid);

if (hicon)
DestroyIcon(hicon);

return res;
}


To delete an icon from the taskbar status area, fill a NOTIFYICONDATA structure and send it to the system when you send a NIM_DELETE message. When deleting a taskbar icon, specify only the cbSize, hWnd, and uID members, as the following example shows.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// MyTaskBarDeleteIcon - deletes an icon from the taskbar  
// status area.
// Returns TRUE if successful or FALSE otherwise.
// hwnd - handle of the window that added the icon
// uID - identifier of the icon to delete
BOOL MyTaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;

tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;

res = Shell_NotifyIcon(NIM_DELETE, &tnid);

return res;
}


Aber ich denke nicht das sich der Aufwand lohnt es per Win32::API zumachen.

Versuch lieber per Win32::Gui auf TK zuzugreifen\n\n

<!--EDIT|zipster|1114150595-->
Froschpopo
 2005-04-23 04:13
#43219 #43219
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
also der code funzt ganz gut. danke ! Aber noch ne frage: wie kann ich das Systray-Menu updaten? Bei Tk gibts da ja configure oder update... gibts sowas auch für die win32-gui ?
Froschpopo
 2005-04-23 19:28
#43220 #43220
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab mal was ausprobiert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub systray_RightClick {
my $systray_menu = new Win32::GUI::Menu(
"SystrayMenu Functions" =>"SystrayMenu",
"> Öffnen" => "welcome",
);
my($x, $y) = Win32::GUI::GetCursorPos();
$config{Win32Window}->TrackPopupMenu($systray_menu->{SystrayMenu}, $x, $y-50);
}

sub welcome {
print "hallo\n",
}

warum gibt er "hallo" nicht aus?
Froschpopo
 2005-04-23 20:55
#43221 #43221
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
in zeile 8 istn fehler... Icon('server.ICO';); der ";" gehört da nicht hin
Froschpopo
 2005-04-23 21:12
#43222 #43222
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Der Wiki-Artikel is entweder voll mit fehlern (in Zeile 8 hab ich den ersten entdeckt im fertigen Code unten), oder mein Activeperl unterstützt keine Menüs.
ich hab mal hier nen funktionierenden code gebaut zum testen, da ja in eurem Wiki lediglich Theorie besprochen wird, in dem beispielcode jedoch nichtmal der Ansatz gewagt wird, über das Menü eine Subroutine aufzurufen.
Fakt ist, dass das Menü zwar erscheint, sich jedoch KEINE Subroutine über diese Konstruktion aufrufen lässt:
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
#!/usr/bin/perl

use Tk;
use Win32::GUI;

our %config = ();

my $main = MainWindow->new(
    -height => 30,
    -width => 50
);

$win32 = Win32::GUI::Window->new(
    -name => 'Main',
    -text => 'Perl TrayIcon',
    -width => 0,
    -height => 0,
    -visible => 0
);

my $icon = new Win32::GUI::Icon('19.ico');


my $ni = $win32->AddNotifyIcon(
    -name => "systray",
    -id => 1,
    -icon => $icon,
    -tip => "Icon in der Systray"
);

sub systray_RightClick {
    my $systray_menu = new Win32::GUI::Menu(
        "SystrayMenu Functions" =>"SystrayMenu",
        "> hier klicken" => 'test'
    );
    my($x, $y) = Win32::GUI::GetCursorPos();
    $config{Win32Window}->TrackPopupMenu($systray_menu->{SystrayMenu},   $x, $y-50);
}

sub test {
    print "hallo\n";
}

MainLoop;
\n\n

<!--EDIT|Froschpopo|1114367934-->
zipster
 2005-04-25 20:11
#43223 #43223
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Nein es ist kein Fehler.

In Win32::Gui werden sub immer mit der dazugehörenden funktion aufgerufen.

Wenn du zum Beispiel willst das
Code: (dl )
"> hier klicken" => 'test'

mit einem links klick ausgeführt wird dann muß deine sub
Code: (dl )
sub test_Click{...}

so aussehen.

siehe Dokumentation
http://jeb.ca/perl/win32-gui-docs/index.pl/win32-gui-menu#Click_
zipster
 2005-04-25 20:12
#43224 #43224
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
[quote=Froschpopo,23.04.2005, 18:55]in zeile 8 istn fehler... Icon('server.ICO';); der ";" gehört da nicht hin[/quote]
Passiert immer mal

Nobody is perfekt
;)
<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten



View all threads created 2005-04-04 23:59.