Misschien een beetje vage titel, maar dit is dus het probleem:
Ik ben bezig met een redelijk uitgebreide GUI, en deze voert om de zoveel tijd een .exe file uit die in een CMD box (geminimaliseerd) wordt gestart (met ShellExecute dus). Tijdens het uitvoeren van dit programma verandert de trayicon van mijn GUI zodat de gebruiker kan ziet dat er op dat moment geprocessed wordt.
Zodra de CMD box zich weer automatisch sluit, moet het icoontje in de systray ook weer terug veranderd worden. Het plaatsen en veranderen van het trayicoontje is geen probleem, alleen heb ik geen idee hoe ik moet zien wanneer mijn ShellExecute appje zichzelf weer sluit.
Heel simpel is dit mijn code, bij elke UpdateTimer event wordt het icoon gewijzigd, start het programma zich geminimaliseerd, doet wat interessant spul en sluit zich weer. Omdat de code uiteraard niet wacht tot het CMD window zichzelf sluit, schiet het icoontje direct weer terug naar zijn oude staat.
Hoe vang ik dus af dat het gestartte programma zichzelf weer heeft gesloten? Krijgt de Application.Handle window een message, of moet ik (zeg, 10x per seconde) checken of het window nog open staat?
Ik ben bezig met een redelijk uitgebreide GUI, en deze voert om de zoveel tijd een .exe file uit die in een CMD box (geminimaliseerd) wordt gestart (met ShellExecute dus). Tijdens het uitvoeren van dit programma verandert de trayicon van mijn GUI zodat de gebruiker kan ziet dat er op dat moment geprocessed wordt.
Zodra de CMD box zich weer automatisch sluit, moet het icoontje in de systray ook weer terug veranderd worden. Het plaatsen en veranderen van het trayicoontje is geen probleem, alleen heb ik geen idee hoe ik moet zien wanneer mijn ShellExecute appje zichzelf weer sluit.
Delphi:
1
2
3
4
5
6
7
| procedure TMainForm.UpdateTimerTimer(Sender: TObject); begin SetTrayIcon(1); ShellExecute(Application.Handle, 'open', PChar('"'+AppLocation+'"'), PChar(CommandLineParameters.Text), nil, SW_SHOWMINNOACTIVE); SetTrayIcon(0); end; |
Heel simpel is dit mijn code, bij elke UpdateTimer event wordt het icoon gewijzigd, start het programma zich geminimaliseerd, doet wat interessant spul en sluit zich weer. Omdat de code uiteraard niet wacht tot het CMD window zichzelf sluit, schiet het icoontje direct weer terug naar zijn oude staat.
Hoe vang ik dus af dat het gestartte programma zichzelf weer heeft gesloten? Krijgt de Application.Handle window een message, of moet ik (zeg, 10x per seconde) checken of het window nog open staat?
Think of me long enough to make a memory