Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Реогирование на кнопку "windows" [D6, XP]


2006_A ©   (2006-05-13 14:18:00) 

Подскажите, пожалуйста, как запретить проге реогировать на кнопки windows (что открывает меню пуск), и другие?


Virgo_Style   (2006-05-14 21:27:00) [1]

У меня три.

:o)

На родной клавиатуре одна и на выносной две %-)


TUser   (2006-05-14 18:28:00) [2]

> Ноутбуки

мастдай ))


2006_A   (2006-05-14 15:57:00) [3]

Да всё это не важно!

За помощь спосибо!


Шпиён   (2006-05-14 11:59:00) [4]


> TUser ©   (14.05.06 07:52) [14]

Ноутбуки -)


TUser   (2006-05-14 07:52:00) [5]

> Кстати, на некоторых клавиатурах клавиша Win усть не только слева, но и справа....

Давно не видел клавиатур, у которых это не так.


Шпиён   (2006-05-14 00:21:00) [6]

Кстати, на некоторых клавиатурах клавиша Win усть не только слева, но и справа.... и код у нее другой
VK_LWIN = 91 - левая
VK_RWIN = 92 - правая


2006_A   (2006-05-13 22:26:00) [7]

спасибо и благодарность шпиёну!

шпиён- МАСТЕР!!!


MetalFan   (2006-05-13 22:19:00) [8]

данный код необходимо запихать в длл для того, чтобы хук был глобальным


Шпиён   (2006-05-13 21:16:00) [9]

Жаль, редактировать постинги нельзя.. -(
Еще одна недоработка ...
MSDN:
If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the rest of the hook chain or the target window procedure.


function LowLevelKeyboardProc(nCode:integer;wParam:longint;lParam:longint):longint;stdcal l;
begin
  result:=1;
  if (wParam=WM_KEYUP) or (wParam=WM_KEYDOWN) then
      begin
          p:=pKBDLLHOOKSTRUCT(lparam);
          if p.scanCode=91 then exit;
       end;
  result:=CallNextHookEx(MyHook, nCode, wParam, lParam );
end;

ps Хуками никогда не занимался - если что не так, поправьте -)


Шпиён   (2006-05-13 20:55:00) [10]

упс.... стормозил -)  Так вообще на клавиатуру реагировать не будет -))))
Попытаюсь исправиться.

function LowLevelKeyboardProc(nCode:integer;wParam:longint;lParam:longint):longint;stdcal l;
begin
   if (wParam=WM_KEYUP) or (wParam=WM_KEYDOWN) then
       begin
           p:=pKBDLLHOOKSTRUCT(lparam);
           if p.scanCode=91 then exit;
        end;
   result:=CallNextHookEx(MyHook, nCode, wParam, lParam );
end;


Шпиён   (2006-05-13 20:42:00) [11]

Примерно так:

implementation

{$R *.dfm}
const
WH_KEYBOARD_LL=13;
type
 pKBDLLHOOKSTRUCT=^TKBDLLHOOKSTRUCT;
 TKBDLLHOOKSTRUCT=record
   vkCode:DWORD;
   scanCode:DWORD;
   flags:DWORD;
   time:DWORD;
   dwExtraInfo:pDWORD;
 end;
var
 MyHook:HHOOK;
 p:pKBDLLHOOKSTRUCT;

function LowLevelKeyboardProc(nCode:integer;wParam:longint;lParam:longint):longint;stdcal l;
begin
   if (wParam=WM_KEYUP) or (wParam=WM_KEYDOWN) then
       begin
           p:=pKBDLLHOOKSTRUCT(lparam);
           if p.scanCode=91 then
           begin
               p.scanCode:=0;
               wParam:=0;
           end;
       end;
   CallNextHookEx(MyHook, nCode, wParam, lParam );
end;

//перевесить на OnCreate
procedure TForm1.Button1Click(Sender: TObject);
begin
   MyHook:= SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardProc, hInstance, 0 );
end;
//перевесить на OnClose
procedure TForm1.Button2Click(Sender: TObject);
begin
   UnhookWindowsHookEx(MyHook);
end;


vrem   (2006-05-13 19:36:00) [12]

Автор, вспомни как решил проблему на других прогах :)
Или это ребёнок другой?


2006_A   (2006-05-13 16:25:00) [13]

Да хотелось бы, что бы при работающей програме кнопки не работали, а при не работающей работали!

Перехватить сообщение, например, не дать ему идти дальше или изменить его, или ещё как-нибуть.


easy   (2006-05-13 15:53:00) [14]

http://www.winfaq.com.ru/winnt/363.htm


2006_A   (2006-05-13 14:55:00) [15]

ХА-ХА - даволен?

я не нажимаю, нажимает ребёнок!


DiamondShark   (2006-05-13 14:45:00) [16]


> а мне этого не надо

не нажимай


2006_A   (2006-05-13 14:37:00) [17]

windы реагируют, открывается меню Пуск, а мне этого не надо.
Как это запретить?


palva   (2006-05-13 14:27:00) [18]

А разве ваша прога на эту кнопку реагирует? Если реагирует, то прописать в ней нулевую реакцию.


Наверх

Титульная страница Поиск, карта сайта Написать письмо