Einzelnen Beitrag anzeigen

Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Befehl in einem Bestimmten Task ausführen

  Alt 2. Dez 2004, 18: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!"
  Mit Zitat antworten Zitat