Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2010, 23:23   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Как отключить клавишу Win

Всем доброго времени суток.

Подскажите как отключить клавишу win на время выполнения программы, такой код на win7 не помог.

Код:
uses Registry;

prcedure WriteReg
var
  reg: TRegistry;
  Buf: array[0..23] of byte = (0,0,0,0,0,0,0,0,3,0,0,0,0,0,$5B,$E0,0,0,$5C,$E0,0,0,0,0);
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('SYSTEM\CurrentControlSet\Control\Keyboard Layout', True) 
    then begin
      Reg.WriteBinaryData('Scancode Map', Buf, SizeOf(Buf));
      //если такого имени нет, то оно создается этой процедурой
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 24.01.2010, 23:42   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если только для своей программы, то пример:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_LWIN then //VK_RWIN
key:=0;
end;
mihali4 вне форума Ответить с цитированием
Старый 24.01.2010, 23:50   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

mihali4, вот я скопировал, но не работает, а отключение alt-F4 работает

Код:
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ((ssAlt in Shift) and (Key = VK_F4)) then Key := 0;
  if key=VK_LWIN then key:=0;
  if key=VK_RWIN then key:=0;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 25.01.2010, 00:36   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А у меня работает...
KeyPreview включено ?
Оп-па... То работает, то не работает
Хук поставьте.

Последний раз редактировалось mihali4; 25.01.2010 в 00:40.
mihali4 вне форума Ответить с цитированием
Старый 25.01.2010, 01:09   #5
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

mihali4, а поподробнее можно на счёт хука?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 25.01.2010, 02:04   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А поиск для кого ?
http://www.programmersforum.ru/showt...ight=%F5%F3%EA
mihali4 вне форума Ответить с цитированием
Старый 05.02.2011, 00:16   #7
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
Всем доброго времени суток.

Подскажите как отключить клавишу win на время выполнения программы, такой код на win7 не помог.

Код:
uses Registry;

prcedure WriteReg
var
  reg: TRegistry;
  Buf: array[0..23] of byte = (0,0,0,0,0,0,0,0,3,0,0,0,0,0,$5B,$E0,0,0,$5C,$E0,0,0,0,0);
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('SYSTEM\CurrentControlSet\Control\Keyboard Layout', True) 
    then begin
      Reg.WriteBinaryData('Scancode Map', Buf, SizeOf(Buf));
      //если такого имени нет, то оно создается этой процедурой
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;
Подскажите пожалуйста, почему у меня при компиляции ругается на эту процедуру, в строке
Код:
  Buf: array[0..23] of byte = (0,0,0,0,0,0,0,0,3,0,0,0,0,0,$5B,$E0,0,0,$5C,$E0,0,0,0,0);
Cannot initialize local variables
tarakan1983 вне форума Ответить с цитированием
Старый 05.02.2011, 00:46   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://translate.google.ru/#en|ru|Ca...al%20variables
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 05.02.2011, 00:47   #9
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

я понимаю что это значит, ПОЧЕМУ он ругается?
tarakan1983 вне форума Ответить с цитированием
Старый 05.02.2011, 01:36   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Потому что это невозможно. С чего ты взял, что это будет работать?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
висне сет при запуску Win XP после установки Win 7 VVkSoft Windows 3 15.09.2009 10:36
как зарегестрировать горячую клавишу с помощью HotKey GAGARIN-NEW Компоненты Delphi 3 09.11.2007 08:22
пути в реестре, где находятся программы автозагрузки для win'95 win'98 win' me win 2000 Prisian Win Api 1 11.09.2007 20:07
Как программно нажать клавишу в чужом процессе? Sere0ga Win Api 2 27.03.2007 18:43