Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

Реогирование на кнопку "windows"   Найти похожие ветки 

 
2006_A   (2006-05-13 14:18) [0]

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


 
palva ©   (2006-05-13 14:27) [1]

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


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

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


 
DiamondShark ©   (2006-05-13 14:45) [3]


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

не нажимай


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

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

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


 
easy ©   (2006-05-13 15:53) [5]

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


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

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

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


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

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


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

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

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;



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

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

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 21:16) [10]

Жаль, редактировать постинги нельзя.. -(
Еще одна недоработка ...
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 Хуками никогда не занимался - если что не так, поправьте -)


 
MetalFan ©   (2006-05-13 22:19) [11]

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


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

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

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


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

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


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

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

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


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


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

Ноутбуки -)


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

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

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


 
TUser ©   (2006-05-14 18:28) [17]

> Ноутбуки

мастдай ))


 
Virgo_Style ©   (2006-05-14 21:27) [18]

У меня три.

:o)

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



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1147598754
Firefly
2006-05-14 13:25
2006.05.28
web-программирование


2-1146837440
Dr. Genius
2006-05-05 17:57
2006.05.28
Поиск строк в Pas-модуле Delphi


15-1146423413
ArtemESC
2006-04-30 22:56
2006.05.28
Химическая прожка...


15-1146384583
Rule
2006-04-30 12:09
2006.05.28
Нет ли желания сделать мастак пати ???


15-1146723086
dolmat
2006-05-04 10:11
2006.05.28
Система не ставится