Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
Delphi 5 Professional
|
Re: Befehl in einem Bestimmten Task ausführen
2. Dez 2004, 19:13
Hab' dir mal ein kleines Beispiel geschrieben. CreateProcess startet Notepad. WaitForInputIdle wartet solange bis Notepad bereit ist. Mit FindWindow & FindWindowEx wird das Fenster von Notepad gesucht. Und mit SendMessage wird dann dein Text an das Fenster von Notepad geschickt. Durch CreateProcess haben wir Handles von Kernel-Objekten bekommen, diese müssen wieder mit CloseHandle freigegeben werden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
SI: TStartupInfo;
PI: TProcessInformation;
ParentHWnd: HWND;
ChildHWnd: HWND;
begin
FillChar(SI, SizeOf(TStartupInfo), 0);
SI.cb := SizeOf(TStartupInfo);
if CreateProcess(nil, 'notepad.exe', nil, nil, False, 0, nil, nil, SI, PI) then
begin
WaitForInputIdle(PI.hProcess, INFINITE);
ParentHWnd := FindWindow('Notepad', 'Unbenannt - Editor');
if IsWindow(ParentHWnd) then
begin
ChildHWnd := FindWindowEx(ParentHWnd, 0, 'Edit', nil);
if IsWindow(ChildHWnd) then
begin
SendMessage(ChildHWnd, WM_SETTEXT, 0, Longint(PChar('Hallo Welt!' + #0)));
end;
end;
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
end;
Ciao, Sprint.
"I don't know what I am doing, but I am sure I am having fun!"
|
|
Zitat
|