Ik heb een systray programmatje gemaakt. Als ik daar op een button in een popupmenu klik, moet apache.exe gestart worden.
Dat gaat allemaal netjes. Ik krijg apache.exe in een DOS-console te zien.
Als je dan nog een keer op die zelfde knop klikt, moet die console zich sluiten. En dat gaat nu buggy. Als ik er namelijk op klik, werkt het niet. Maar als ik éérst de console (voor de eerste keer) even aanklik, werkt het wel!
Kortom, het console venster moet eerst actief worden, en dan pas kan ik 'm sluiten.
Ik gebruik de volgende code voor het starten van apache.exe:
De set_apache_url waarde bevat het pad (de mappen) naar apache.exe zonder \.
Dit is de code die ik gebruik om het venster te sluiten:
Kan iemand mij uitleggen waarom dit zo buggy werkt. Bij een vorig programma dat ik gemaakt heb, werkt het wel.
Dus, waarom werkt het niet en hoe zou ik dat eventueel kunnen oplossen?
Dat gaat allemaal netjes. Ik krijg apache.exe in een DOS-console te zien.
Als je dan nog een keer op die zelfde knop klikt, moet die console zich sluiten. En dat gaat nu buggy. Als ik er namelijk op klik, werkt het niet. Maar als ik éérst de console (voor de eerste keer) even aanklik, werkt het wel!
Kortom, het console venster moet eerst actief worden, en dan pas kan ik 'm sluiten.
Ik gebruik de volgende code voor het starten van apache.exe:
Delphi:
1
| ShellExecute(Application.Handle, NIL, pchar(Set_Apache_url+'\apache.exe'), nil, nil, SW_SHOWNORMAL); |
De set_apache_url waarde bevat het pad (de mappen) naar apache.exe zonder \.
Dit is de code die ik gebruik om het venster te sluiten:
Delphi:
1
| PostMessage(FindWindow(nil, pchar(set_apache_url + '\apache.exe')), WM_CLOSE, 0, 0); |
Kan iemand mij uitleggen waarom dit zo buggy werkt. Bij een vorig programma dat ik gemaakt heb, werkt het wel.
Dus, waarom werkt het niet en hoe zou ik dat eventueel kunnen oplossen?