Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отследить нажатие в окно моего процесса? 
:(
    Опции темы
lollollollol
Дата 19.4.2014, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Есть приложение, полностью написаное на WinAPI.
Когда фокус на форме этого приложения, пользователь может нажать какую либо клавишу на клавиатуре - как отследить любое нажатие клавиши?

ну и для себя сделать так - Вот выделил форму, нажал клавишу, получил messagebox с символом, который нажал(это мне чтобы разобраться для начала)


Может есть какая апи функция? я не нашел.

Пвторюсь, нужно получить нажатия клавиатуры только при вводе в моё окно(любое, окон в одном exe может быть много).

PM MAIL   Вверх
Poseidon
Дата 19.4.2014, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Отлавливать WM_KEYDOWN пробовал?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
lollollollol
Дата 20.4.2014, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



как? форма на апи сделана

Код

var
  thID: integer;
  tid:cardinal;
begin
  Window:=True;
  wc.cbSize := SizeOf(TWndClassEx);                                             // заполнение стpуктуpы wc
  wc.style := CS_VREDRAW or CS_HREDRAW;                                         //стиль (комбинация стилей) окна
  wc.lpfnWndProc := @WindowProc;                                     
  wc.cbClsExtra := 0;                                                       
  wc.cbWndExtra := 0;                                                       
  wc.hInstance := HInstance;                                               
  wc.hIcon := LoadIcon(0, IDI_APPLICATION);                              
  wc.hCursor := LoadCursor(0, IDC_ARROW);                                    
  wc.hbrBackground := COLOR_WINDOW + 1;                                 
  wc.lpszMenuName := nil;                                                   
  wc.lpszClassName := ClassName;                                           
  RegisterClassEx(wc);
  MainWnd := CreateWindowEx(0,ClassName,AppName,WS_OVERLAPPEDWINDOW,Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT),0,0,HInstance,nil);
  ThID:=CreateThread(nil,0,@MyWindow,Pointer(MainWnd),0,tid);                
  CloseHandle(ThID);
  ShowWindow(MainWnd, SW_SHOWNORMAL);                              
  UpdateWindow(MainWnd);                                               
  while (GetMessage(Msg, 0,0,0)=True) do begin
    windows.TranslateMessage(Msg);
    windows.DispatchMessage(Msg);
  end;



Причём формы две, а не в поток просто нужно получить все нажатия, на любую из моих форм

Это сообщение отредактировал(а) lollollollol - 20.4.2014, 06:57
PM MAIL   Вверх
Poseidon
Дата 20.4.2014, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(lollollollol @  20.4.2014,  06:54 Найти цитируемый пост)
как? форма на апи сделана
Как-то вот так



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
-Сергей-
Дата 22.4.2014, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: 1
Всего: 1



Где главная оконная процедура?
надо добавить туда обработку
Код

case Msg of
  WM_KEYDOWN:
    begin
      MessageBox(0, 'WM_KEYDOWN', 'Caption', MB_OK);
      Exit;
    end;
end; 


Это сообщение отредактировал(а) -Сергей- - 22.4.2014, 10:47
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
Poseidon
Дата 23.4.2014, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



-Сергей-, ты мою ссылку читал? Там даже в примере WM_KEYDOWN описывается.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
-Сергей-
Дата 23.4.2014, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: 1
Всего: 1



Цитата(Poseidon @ 23.4.2014,  04:07)
-Сергей-, ты мою ссылку читал? Там даже в примере WM_KEYDOWN описывается.

Не смог открыть, на тот момент у меня был высокий таймаут
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.