Toon posts:

[C++] TerminateProcess (Apache)

Pagina: 1
Acties:

Verwijderd

Topicstarter
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.
_
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)?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Heeft Apache niet commandline switches die je kunt gebruiken om de daemon te starten en te stoppen? Kun je die niet gebruiken? Of is dat alleen bruikbaar als je Apache als service installeert?
"C:\Program Files\Apache\bin\httpd.exe" -w -n "Apache2.2" -k stop

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
-NMe- schreef op zaterdag 02 september 2006 @ 04:24:
Heeft Apache niet commandline switches die je kunt gebruiken om de daemon te starten en te stoppen? Kun je die niet gebruiken? Of is dat alleen bruikbaar als je Apache als service installeert?
"C:\Program Files\Apache\bin\httpd.exe" -w -n "Apache2.2" -k stop
Ja dat klopt, dat had ik al in de documentatie gelezen. Alleen dat werkt alleen voor services inderdaad. Toch erg bedankt voor je reactie :)

[Sat Sep 02 15:33:00 2006] [error] (OS 2)Het systeem kan het opgegeven bestand n
iet vinden.  : No installed service named "Apache2.2".
Note the errors or messages above, and press the <ESC> key to exit.  0....

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-02 11:55
Gebruik anders eens deze parameters (voor het stoppen):
F:\Root\Public\Webserver\Apache\bin\httpd.exe -k shutdown

zeroxcool.net - curity.eu


Verwijderd

Topicstarter
ZeRoXcOoL schreef op zaterdag 02 september 2006 @ 17:02:
Gebruik anders eens deze parameters (voor het stoppen):
F:\Root\Public\Webserver\Apache\bin\httpd.exe -k shutdown
Die had ik ook al geprobeerd, stond namelijk ook op de documentstatie site van Apache. Ik denk dat er niets anders opzit dan een service te registeren en na afloop weer te verwijderen.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 14-02 11:55
Verwijderd schreef op zaterdag 02 september 2006 @ 17:51:
[...]

Die had ik ook al geprobeerd, stond namelijk ook op de documentstatie site van Apache. Ik denk dat er niets anders opzit dan een service te registeren en na afloop weer te verwijderen.
Tussen twee haakjes, doet XAMPP dat ook niet?

Misschien kun je daar wat code uithalen?

zeroxcool.net - curity.eu

Pagina: 1