Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как управлять запущенной программой


Автор: max-@ 30.9.2007, 21:36
Суть такова мне нужно получить дискриптор программы которую я запустил с помощью комнды createprocess.

Помогите пож....Под дискриптором я понимаю идентификтор окна типа HWND

Автор: BaD_SeCt0R 30.9.2007, 22:00
Цитата(max-@ @  30.9.2007,  21:36 Найти цитируемый пост)
идентификтор окна типа HWND 

Ты не думал, что у запущенной проги может быть несколько окон?

Автор: BaD_SeCt0R 1.10.2007, 00:32
Вот, накидал тебе примерчик. Прога запускает сама себя, ищет в новом процессе первое попавшееся окно и выдает его в мессаджбоксе. Надеюсь, что особого труда не составит переделать пример под себя.
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function EWProc(Wnd: hWnd; lParam:cardinal):boolean;stdcall;
var
  ProcID, ThreadID: cardinal;
begin
  Result:=true;
  ThreadID:= GetWindowThreadProcessId(Wnd, ProcID);
  if ProcID=lParam then
   begin
    MessageBox(0, PChar('Handle = '+inttostr(Wnd)),PChar('ProcessID = '+inttostr(ProcID)) , mb_ok);
    Result:=false;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ProcInfo: TProcessInformation;
  SUI: TStartupInfo;
  ProcID, ThreadID: cardinal;
begin
  ZeroMemory(@SUI, SizeOf(SUI));
  SUI.cb:=SizeOf(SUI);
  CreateProcess(nil, PChar(paramstr(0)), nil, nil, False, NORMAL_PRIORITY_CLASS,
                nil, nil, SUI, ProcInfo);
  sleep(500);// здесь ждем, пока окошко появится.
              // можно EnumWindows и в цикл поставить
  EnumWindows(@EWProc, ProcInfo.dwProcessId);
end;

end.


Автор: max-@ 1.10.2007, 08:36
Заработало Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)