Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 15:59   #1
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
Восклицание Как нажать клавишу на клавиаруте в другом приложении

Сабж.
Для тех, кто непонял:
Какое сообщение нужно послать, предположим, блокноту, что бы в нем сэмулировалось нажатие например клавиши Q, и при этом в блокноте бы конечно же написался бы этот символ?
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 27.12.2010, 16:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://yandex.ua/yandsearch?date=&te...=7950&lr=20554
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.12.2010, 10:31   #3
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию

Невероятно, но ни 1 пример из поиска не подошел (не работает)! Можете дать проверенный код, чтоб например (обязательно на примере) в блокноте вводилось "Q" (например).
С меня отзыв!
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 28.12.2010, 10:48   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
var Buffer : AnsiString;
begin
  Buffer := 'Q';
  SendMessage(HandleWND, WM_SETTEXT, 0, LongINT(Buffer));
где, HandleWND - хэндл того окна, в который посылаете текст.
_Engine_ вне форума Ответить с цитированием
Старый 28.12.2010, 14:53   #5
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию

Твой код походу меняет хэндл окна, а не посылает ему сообщение нажать кнопку... Хотя может и я что то не то сделал... Код:
Код:
var
handle:hwnd;
Buffer : AnsiString;
begin
handle:=GetForegroundWindow;
Buffer := 'Q';
SendMessage(Handle, WM_SETTEXT, 0, LongINT(Buffer));
end;
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 28.12.2010, 16:24   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

вот как хандел получить:

Код:
procedure Tasd.FormCreate(Sender: TObject);
var
  TrayWnd, BtnWnd:  hwnd;
begin
  if FindWindow('TForm1', 'Form1') <> 0 then begin
    TrayWnd:=FindWindow('TForm1', 'Form1');
    BtnWnd:=FindWindowEx(TrayWnd,0,'TMemo', 'Memo1');
    // как послат не знаю
  end;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 28.12.2010, 16:53   #7
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию

Хэндл получает GetForegroundWindow
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 28.12.2010, 17:22   #8
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Код:
procedure TTempForm.ButtonClick(Sender: TObject);
var
  NotepadHandle, EditHandle: HWND;
  Buffer : AnsiString;
begin
  NotepadHandle := FindWindow('Notepad', 0);
  if NotepadHandle > 0 then
  begin
    EditHandle := FindWindowEx(NotepadHandle, 0, PChar('Edit'), 0);
    if EditHandle > 0 then
    begin
      Buffer := 'Q';
      SendMessage(EditHandle, WM_SETTEXT, 0, LongINT(Buffer));
    end else
      ShowMessage('Поле ввода не найдено');
  end else
    ShowMessage('Notepad не найден! Возможно приложение Notepad не запущено!');
end;
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 28.12.2010, 17:29   #9
BoT_T
Пользователь
 
Аватар для BoT_T
 
Регистрация: 19.09.2010
Сообщений: 50
По умолчанию

1. Это отсылка текста, а не нажатия кнопки.
2. А если не будет едита?? ВОт вот...
Нужно именно послать сообщение о нажатии кнопки.
ICQ 611 - 892
BoT_T вне форума Ответить с цитированием
Старый 28.12.2010, 17:32   #10
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Чем Вас тогда ответ №2 не устроил?
_Engine_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить значение переменной в другом приложении vramil Общие вопросы Delphi 7 23.05.2010 16:27
Как нажать на Button в чужом приложении зная его HANDLE SeRhy Win Api 2 04.02.2009 13:43
Как программно нажать клавишу в чужом процессе? Sere0ga Win Api 2 27.03.2007 18:43