Ik wil met m'n programma Apache kunnen starten en kunnen afsluiten. Nu wil ik Apache niet installeren als service. Ik gebruik nu `TerminateProcess`. Een agressieve manier om een programma af te sluiten. Deze manier werkt niet omdat apache zelf nog een proces start. Er wordt er dus maar één proces afgesloten.
_
Ik heb vervolgens met `PostThreadMessage` nog geprobeerd een `WM_QUIT` bericht proberen te sturen maar daar wordt niet op gereageerd.
Heeft iemand enig idee hoe ik Apache kan opstarten om vervolgens weer via mijn programma af te kunnen sluiten (beide processen)?
_
C++:
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
| DWORD pID; DWORD pidwin; DWORD idThread; HANDLE hProcess = NULL; SHELLEXECUTEINFO shellInfo; ::ZeroMemory(&shellInfo, sizeof(shellInfo)); shellInfo.cbSize = sizeof(shellInfo); shellInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS; shellInfo.lpFile = TEXT("F:\\Root\\Public\\Webserver\\Apache\\bin\\httpd.exe"); shellInfo.lpParameters = NULL; shellInfo.nShow = SW_SHOWDEFAULT; WaitForSingleObject(hProcess,INFINITE); if(::ShellExecuteEx(&shellInfo)) { hProcess = shellInfo.hProcess; pID = GetProcessId(hProcess); idThread = GetWindowThreadProcessId(shellInfo.hwnd, &pidwin); Sleep(3000); //TerminateProcess(OpenProcess(PROCESS_TERMINATE, TRUE, pID), NULL); PostThreadMessage(idThread, WM_QUIT, NULL, NULL); } |
Ik heb vervolgens met `PostThreadMessage` nog geprobeerd een `WM_QUIT` bericht proberen te sturen maar daar wordt niet op gereageerd.
Heeft iemand enig idee hoe ik Apache kan opstarten om vervolgens weer via mijn programma af te kunnen sluiten (beide processen)?