![]() |
Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo. habe eine Funktion hier in forum gefunden "function KillProcess(dwProcID, Wait: DWORD): Integer;" die einen Process beendet. das funktioniert auch, aber wenn ich ein Process beende, der sich aber dieser Prozess in Systemtray befindet (rechts neben die Uhr) bleibt dieser immer noch zu sehen, wenn ich diesen Process beendet habe. Wie kann ich das lösen?
Delphi-Quellcode:
function KillProcess(dwProcID, Wait: DWORD): Integer;
var hProcess: Cardinal; dw: DWORD; begin // open the process and store the process-handle hProcess := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, False, dwProcID); // kill it if hProcess <> 0 then begin dw := Integer(TerminateProcess(hProcess, 1)); if dw <> 0 then begin // TerminateProcess returns immediately, so wie have to verify the result via // WaitForSingleObject dw := WaitForSingleObject(hProcess, Wait); if dw = WAIT_FAILED then dw := GetLastError; end else // TerminateProcess = 0 dw := GetLastError; CloseHandle(hProcess); end else // hProcess = INVALID_HANDLE_VALUE dw := GetLastError; result := dw; end; Ich beendet Taskmanager, aber der Symbol ist immer noch zusehen, Sie bild. |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
|
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Delphi-Quellcode:
was muss ich als WINDOW: hWND übergeben? mit 0 funktionier gda nicht...
procedure RepaintWnd(Window: hWnd);
begin InvalidateRect(Window, nil, True); UpdateWindow(Window); RedrawWindow(Window, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_UPDATENOW or RDW_ALLCHILDREN); end |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Das Handle des Windows das du mit der Function FindWindow bekommst.
Delphi-Quellcode:
also z.B so etwa:
Handle := Findwindow(nil,'Fenster.Caption');
Delphi-Quellcode:
Gruß
var h: Hwnd;
begin H := Findwindow(nil,'Windows Task-Manager'); RepaintWnd(h); end; Neutral General |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
In diesen Fall benötige ich nicht den Taskmanager sondern Taskleiste, da ich diesen Objekt aktualliesern will, nach dem ich Taskmanager beendet habe.
...nun muss ich rausfinden wie ich dieses Objekt ansprechen kann? wnd := Findwindow(nil,'Takleiste'); RepaintWnd(wnd); |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Liste der Anhänge anzeigen (Anzahl: 1)
hier ist mein Projekt. schaut euch das an. Versucht den Taskmanager zu beenden und schaut euch die Windowsleiste an.
|
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
das funktioniert nicht
Delphi-Quellcode:
wnd := FindWindow('Shell_TrayWnd', nil);
RepaintWnd(wnd); |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Hallo,
ich finde das Handle des SysTray so raus:
Delphi-Quellcode:
//Handler des SysTray mit dem SysTray-Namen rausfinden
hWnd := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil); |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
..das funktioniert nicht. Der ICON ist immer noch zusehe, obwohl dieser Prozess beendet wurden.
Kann jemand dieses Verhalten bei sich bestätigen? Problematik: nach beenden des Prozesses taskmgr.exe bleibt der Icon immer noch in Tray sichtbar. Erst wenn ich mit maus über diesen ICON gehe, verschwiendet dieser. Warum? |
Re: Taskbeenden und die Startleiste. (Symbol wird angezeigt)
Mit der Unit madKernel kann man die TrayIcons jedes Prozesses auslesen und auch entfernen lassen.
Florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz