
16.05.2010, 10:01
|
 |
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
запускает процесс, перебирает все его не дочерние окна, у них дочерние, находит "нужное" и посылает ему сообщение:
PHP код:
...
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
...
function CALLBACKEnumChildProc(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
arr: array [0..255] of Char;
l: Integer;
s: String;
begin
l:=GetClassName(hwnd, arr, SizeOf(arr));
s:=Copy(arr, 1, l);
Form1.Memo1.Lines.Add(' '+s+'='+IntToStr(hwnd));
if s='Edit' then
SendMessage(hwnd, WM_SETTEXT, 0, Integer(PChar('hello world')));
Result:=True;
end;
function CALLBACKEnumThreadWndProc(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
arr: array [0..255] of Char;
l: Integer;
begin
l:=GetClassName(hwnd, arr, SizeOf(arr));
Form1.Memo1.Lines.Add(Copy(arr, 1, l)+'='+IntToStr(hwnd));
EnumChildWindows(hwnd, @CALLBACKEnumChildProc, 0);
Result:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
startupinfoa: _STARTUPINFOA;
processinformation: _PROCESS_INFORMATION;
begin
ZeroMemory(@startupinfoa, SizeOf(_STARTUPINFOA));
startupinfoa.cb:=SizeOf(_STARTUPINFOA);
startupinfoa.dwFlags:=STARTF_USESHOWWINDOW;
startupinfoa.wShowWindow:=SW_SHOW;
CreateProcess(nil, PChar('c:\Windows\notepad.exe'), nil, nil, False, 0, nil, nil, startupinfoa, processinformation);
WaitForInputIdle(processinformation.hProcess, INFINITE);
EnumThreadWindows(processinformation.dwThreadId, @CALLBACKEnumThreadWndProc, 0);
CloseHandle(processinformation.hProcess);
end;
|