Trayicon anderer Anwendung entfernen
-
InvalidRect
-
nicht ganz: InvalidateRect()

-
Ok, ich muss den Spaß irgendwie gebacken bekommen... Obwohl ich da langsam
echt Frust schiebe
Ich probiere jetzt folgendes:
HWND fenster; fenster=FindWindow("Shell_TrayWnd",NULL); InvalidateRect(fenster,NULL,TRUE);In der Hoffnung jetzt alles aktualisieren zu können.
Geht natürlich nicht. Es passiert nix.Was ist da jetzt falsch? Ich sage doch das soll auf das Tray angewendet werden
und mit NULL sage ich ihm doch, dass es das ganze hwnd betrifft, oder wie?

Hab jetzt auch schon mit UpdateWindow rumgewerkelt, mit PostMessage und all
dem Zeugs. Keine Idee wie ich das je hinbekommen soll
Aber ich nix Chef hier in Firma...
-
Es geht dann wohl nicht übers Neuzeichnen. Ich habs auch mal ausprobiert. Programm mit Tray-Icon gestartet, über Task-Manager beendet. Dann die nix-fixierte Taskleiste klein gemacht und wieder groß gemacht. Das Icon war noch da.
-
Tja, dann wirds wohl nix mit dem entfernen des Icon!
Außer ein Foren-Crack hat noch ne brauchbare Idee oder
nen Ansatz einer Idee dazu.
-
hat die anwendung keine fenster? sonst könntest du doch WM_CLOSE schicken damit es sich sauber beendet.
-
Das ist klar... du kannst höchstens noch versuchen einfach das Icon zu entfernen... oder dir das Rect des Wnds holen... dann die Iconpos berechnen und ne MouseMove Msg an das Fenster mit den Koordinaten schicken

-
WM_CLOSE habe ich bereits erfolglos gesendet. Die Anwendung hat kein eigenes
Fenster/Dialog. Das macht die Sache vermutlich auch so kompliziert und fast
aussichtslos.
-
lol und wohin haste dann versucht WM_CLOSE zu senden?
-
wie soll die anwendung normalerweise beendet werden? mit strg del entf?

-
Archy schrieb:
WM_CLOSE habe ich bereits erfolglos gesendet. Die Anwendung hat kein eigenes Fenster/Dialog.
Das kann nicht sein. Wenn du dich mal damit beschäftigt hättest, wie man so ein Icon in die TNA bekomment und wie man Nachrichten für ein Icon dort behandelt, dann wüsstest du, dass es ohne Fenster nicht geht. Denn an welches Fenster soll Windows seine Nachrichten schicken für das Menü etc?
-
Ah, ja habs jetzt auch gesehen. Das hat zwar ein Fenster, aber das Beenden
mit WM_CLOSE bringt nix. Name des Fenster ist "Remote Control Viewer - Max".
Da geht dann auf der Taskleiste ein Fenster auf, das man aber nie richtig zu
sehen bekommt. Es gammelt in der Taskleiste rum
Nach WM_CLOSE verschwindet es da und das Trayicon lebt fröhlich weiter vor sich hin....
-
Kann man das Programm denn per Hand normal beenden?
-
Ja, über Rechtsklick im Trayicon. Dort dann "Exit".
Aber an die Nachricht komme ich nicht ran.
-
Aber an die Nachricht komme ich nicht ran.

-
????????????? schrieb:
Aber an die Nachricht komme ich nicht ran.

Der Hilfstroll ?????????????
-
!!!!!Jochi schrieb:
????????????? schrieb:
Aber an die Nachricht komme ich nicht ran.

Der Hilfstroll ?????????????

-
Hört mit dem Mist auf! Das ist ja wie im Kindergarten!... Guck doch einfach welche Msg gesendet wird! Gibt da so nen Tool von MS

-
(D)Evil schrieb:
Hört mit dem Mist auf! Das ist ja wie im Kindergarten!... Guck doch einfach welche Msg gesendet wird! Gibt da so nen Tool von MS


-
Eventuell klappt es so:
1. Vor dem Beenden des Service das Dummy-Fenster für den SysTray-Eintrag suchen (mit FindWindow
Gruss an CodeFinder
). Den Namen des Finsters kann man sich z.B. mit Spy++ oder WinSpy++ suchen.2. Mittels Shell_NotifyIcon (NIM_DELETE) das Icon des Service entfernen. Die Uid müsste man wahrscheinlich ausprobieren (0, 1, 1000 ?). Vielleicht kann man auch die Nachricht mit Spy++ abfangen die das Icon anlegt und darüber die UiD herausbekommen.
3. Danach den Service beenden.