Главная страница
    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.015 c
15-1146089696
Германн
2006-04-27 02:14
2006.05.28
Ресурсы GDI


4-1141606261
Nostradamus
2006-03-06 03:51
2006.05.28
HKLM под Windows Vista (Build 5308)


2-1146753639
Gelios
2006-05-04 18:40
2006.05.28
ФУНКЦИЯ ПЕРЕВОДА БУКВ РУССКОГО АЛФАВИТА В ВЕРХНИЙ РЕГИСТР


1-1145517697
DimMih
2006-04-20 11:21
2006.05.28
Текстовый файл-таблица


1-1145273582
gear
2006-04-17 15:33
2006.05.28
Как стартовать программу минимизированной при автозагрузке?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский