Показать сообщение отдельно
  #9  
Старый 21.04.2009, 11:01
одинадцатый одинадцатый вне форума
Новичок
 
Регистрация: 16.04.2009
Сообщения: 95
Репутация: 10
По умолчанию

Цитата:
В посте #2 я говорила, что нужно сделать, чтобы перебирать еще и дочерние окна.

Что-то не могу ни как разобраться. Я ввел попробовал вот так:
Код:
   Handles: array[0..0] of HWND; // например, запускаются четыре копии приложения...
  function EnumThrWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
implementation

{$R *.dfm}

function EnumThrWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
var w:array[0..200] of char;
begin
    getwindowtext(hndl,w,200);
    form1.Memo1.Lines.Add(w);
  Result := not IsWindow(hndl);
  if not Result then
  begin

    Handles[lprm] := hndl;
  end;
end;

function EnumThrWndProc2(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
var w:array[0..200] of char;
begin
    getwindowtext(hndl,w,200);
    form1.Memo1.Lines.Add(w);
  Result := not IsWindow(hndl);
  if not Result then
  begin
    Handles[lprm] := hndl;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  WinDirPath, NPadPath: PChar;
  i: Byte;
  _si: STARTUPINFO;
  _pi: PROCESS_INFORMATION;
begin
  try
    for i := 0 to 0 do
    begin
      FillChar(_si, SizeOf(_si), 0);
      _si.cb := SizeOf(_si);
      _si.dwFlags := STARTF_USESHOWWINDOW;
      _si.wShowWindow := SW_SHOWNORMAL;

      CreateProcess('g:\programs\forex\mt4\terminal.exe', nil, nil, nil,
      False, NORMAL_PRIORITY_CLASS, nil, nil, _si, _pi);
      Sleep(5000);
      EnumThreadWindows(_pi.dwThreadId, @EnumThrWndProc, i);
      EnumChildWindows(Handles[0], @EnumThrWndProc2,i);
    end;
  finally
  end;
end;
Admin: Пользуемся тегами!

и в мемо оказались только caption формы и пустая строка, хотя через WinSight там видно что есть еще неск-ко Label, кнопок и т.д.
Подскажите пожалуйста что не так.
И еще такая проблема: если я открываю свою прогу через ярлык(параметров ни каких не прописано) то программа запускается только с одним, главным окном, а если через свою прогу, через createprocess, прога уже открывает 2 окна: главная форма и окошко для авторизации. Почему?
Ответить с цитированием