Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

Реогирование на кнопку "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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1146407457
Piter
2006-04-30 18:30
2006.05.28
Кто на чем смотрит DVD?


15-1146643908
tigra
2006-05-03 12:11
2006.05.28
Имена в архиве


4-1141194528
antonn
2006-03-01 09:28
2006.05.28
Блокировать сворачивание окна


8-1134388588
Ботвин Дмитрий
2005-12-12 14:56
2006.05.28
Несколько звуковых карт


9-1129495654
Fosgen
2005-10-17 00:47
2006.05.28
Событие отпускания кнопки мыши в DirectX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский