Hoi,
Ik ben aan het proberen om een applicatie die in in de systemtray staat softwarematig af te sluiten, maar ik kom er niet helemaal uit.
Al flink wat rond gegoogled, en daar gevonden dat het process niet reageert op Close() of CloseMainWindow(), maar dingen die wel werken heb ik nog niet gezien.
Ik wil vooralsnog niet terug hoeven vallen op de Process.Kill(), dus ben nog op zoek naar andere mogelijkheden.
Ook al verschillende messages geprobeerd te sturen (WM_Close,WM_Quit) waar ook geen reactie op kwam.
Ook WM_RBUTTONDOWN,WM_KEYDOWN geprobeerd (ik dacht, misschien kan ik via wat muiskliks of keypresses de app wel afsluiten), maar ook daar kwam geen zichtbare reactie op.
Iemand enig idee of er nog andere mogelijkheden zijn?
P.S. het moet onder Vista 32bits gaan draaien
Ik ben aan het proberen om een applicatie die in in de systemtray staat softwarematig af te sluiten, maar ik kom er niet helemaal uit.
Al flink wat rond gegoogled, en daar gevonden dat het process niet reageert op Close() of CloseMainWindow(), maar dingen die wel werken heb ik nog niet gezien.
Ik wil vooralsnog niet terug hoeven vallen op de Process.Kill(), dus ben nog op zoek naar andere mogelijkheden.
Ook al verschillende messages geprobeerd te sturen (WM_Close,WM_Quit) waar ook geen reactie op kwam.
Ook WM_RBUTTONDOWN,WM_KEYDOWN geprobeerd (ik dacht, misschien kan ik via wat muiskliks of keypresses de app wel afsluiten), maar ook daar kwam geen zichtbare reactie op.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| IntPtr hWnd = FindWindow("Shell_TrayWnd", null); if (hWnd != null) { hWnd = FindWindowEx(hWnd, IntPtr.Zero, "TrayNotifyWnd", null); if (hWnd != null) { hWnd = FindWindowEx(hWnd, IntPtr.Zero, "SysPager", null); if (hWnd != null) { hWnd = FindWindowEx(hWnd, IntPtr.Zero, "ToolbarWindow32", null); IntPtr cnt = SendMessage(hWnd, TB_BUTTONCOUNT, IntPtr.Zero, IntPtr.Zero); int processId; GetWindowThreadProcessId(hWnd, out processId); Process proc = Process.GetProcessById(processId); proc.Close(); proc.CloseMainWindow(); SendMessage(hWnd, WM_CLOSE,0,0); } } } |
Iemand enig idee of er nog andere mogelijkheden zijn?
P.S. het moet onder Vista 32bits gaan draaien
Het grote voordeel van windows is dat je meer dos-boxen kan openen