Wnd := GetWindow(Handle, gw_HWndFirst);
while Wnd <> 0 do begin
if (Wnd <> Application.Handle) and
IsWindowVisible(Wnd) and
(GetWindow(Wnd, gw_Owner) = 0) and
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0)
then begin
GetWindowText(Wnd, buff, sizeof(buff));
if StrPas(buff)='Безымянный - Блокнот' then Wnd_notepad:=Wnd;
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
Передача символов в другое приложение
SendMessage(handle,WM_CHAR,ord('чтонибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...:(
в чем проблема?(пишу в делфи)
Цитата: MyTaHT
подскажите как передавать строку(символ) в текстовое поле другого окна.handle его получил.почитав на форумах стал смело писать
SendMessage(handle,WM_CHAR,ord('чтонибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...:(
в чем проблема?(пишу в делфи)
SendMessage(handle,WM_CHAR,ord('чтонибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...:(
в чем проблема?(пишу в делфи)
Обсуждалось только недавно в этом же разделе. Все нормально работает, если передать верный handle окна. Как вы его получаете?
Код:
wnd_notepad -вот собственно..) код тоже гдето здесь помоему нашел)
//////////
понял что накосячил.это хендл главного окна а надо хендл поля ввода наверное...только как его определить?
Код:
var h: HWND;
..................................................................................
h := GetWindow(FindWindow('Notepad', nil), GW_CHILD);
..................................................................................
h := GetWindow(FindWindow('Notepad', nil), GW_CHILD);
Но это только для блокнота, если же цель - посылать данные сообщения любому текстовому полю, тогда надо применять другие способы, ловушки или что-то еще. Точно не скажу, т.к. это зависит от поставленной задачи.
Код:
h := GetWindow(Wnd_notepad, GW_CHILD);
Затем будьте любезны проверить (или запустить "сверххитрое" перечисление уже окон в блокноте) что это окно класса edit, т.к. у блокнота бывает и статусбар
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h:THandle;
begin
h:=FindWindow(nil,'Безымянный - Блокнот');
if h=0 then ShowMessage('ошибка');
h:=FindWindowEx(h,0,'EDIT',nil);
if h=0 then ShowMessage('ошибка');
SendMessage(h,WM_CHAR,ord('A'),0);
end;
var
h:THandle;
begin
h:=FindWindow(nil,'Безымянный - Блокнот');
if h=0 then ShowMessage('ошибка');
h:=FindWindowEx(h,0,'EDIT',nil);
if h=0 then ShowMessage('ошибка');
SendMessage(h,WM_CHAR,ord('A'),0);
end;