Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача символов в другое приложение

30K
10 сентября 2008 года
MyTaHT
3 / / 10.08.2007
подскажите как передавать строку(символ) в текстовое поле другого окна.handle его получил.почитав на форумах стал смело писать
SendMessage(handle,WM_CHAR,ord('чтонибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...:(
в чем проблема?(пишу в делфи)
288
10 сентября 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: MyTaHT
подскажите как передавать строку(символ) в текстовое поле другого окна.handle его получил.почитав на форумах стал смело писать
SendMessage(handle,WM_CHAR,ord('чтонибудь'),0);
в итоге даже в блокнот ничего передавать не хочет...:(
в чем проблема?(пишу в делфи)



Обсуждалось только недавно в этом же разделе. Все нормально работает, если передать верный handle окна. Как вы его получаете?

30K
10 сентября 2008 года
MyTaHT
3 / / 10.08.2007
Код:
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;

wnd_notepad -вот собственно..) код тоже гдето здесь помоему нашел)
//////////
понял что накосячил.это хендл главного окна а надо хендл поля ввода наверное...только как его определить?
288
11 сентября 2008 года
nikitozz
1.2K / / 09.03.2007
Конкретно для блокнота подойдет такой код, хотя он по некоторым соображениям не самый лучший.
 
Код:
var h: HWND;
..................................................................................
  h := GetWindow(FindWindow('Notepad', nil), GW_CHILD);

Но это только для блокнота, если же цель - посылать данные сообщения любому текстовому полю, тогда надо применять другие способы, ловушки или что-то еще. Точно не скажу, т.к. это зависит от поставленной задачи.
14
11 сентября 2008 года
Phodopus
3.3K / / 19.06.2008
Ну или дописать к вашему "сверххитрому" перечислению окон это:
 
Код:
h := GetWindow(Wnd_notepad, GW_CHILD);


Затем будьте любезны проверить (или запустить "сверххитрое" перечисление уже окон в блокноте) что это окно класса edit, т.к. у блокнота бывает и статусбар
261
11 сентября 2008 года
ahilles
1.5K / / 03.11.2005
в общем, вот так надо
 
Код:
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;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог