Hallo,
ich versuche gerade, mein erstes Programm
NonVCL fertigzustellen, aber irgendwie komme ich dabei nicht weiter.
Vom Programm aus soll ein externes Programm gestartet und mit Hinweisfenstern beim Programmstart und -ende ergänzt werden. Dies habe ich wie folgt umgesetzt:
Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; Parameter: string);
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
FillChar(executeInfo, SizeOf(executeInfo), 0);
with executeInfo do
begin
cbSize := SizeOf(executeInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
executeInfo.lpVerb := 'open';
executeInfo.lpParameters := PChar(Parameter);
lpFile := PChar(dateiname);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@executeInfo) then
dw := executeInfo.HProcess
else
begin
ShowMessage('Error: ' + SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(dw);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Showmessage('Please keep in mind to update the database after editing');
ShellExecAndWait('M:\sales\mfgpro\reporter.exe', '');
Showmessage('You should restart the report now');
Close;
end;
Das klappt soweit, aber leider ist da auch schon das Problem: Ich habe das Ganze über FormCreate-Event gestartet. Zwar kann ich über Application.ShowMainForm := false; in der Projektdatei die Anzeige des Formulars verhindern, aber wirklich sinnvoll scheint mir dies nicht (immerhin soll das ja
NonVCL werden).
Was kann ich tun, um das kurze Programm oben auch ohne Formular zu starten? Ich bin für jeden Tipp dankbar.
Danke
Opa