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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 11:19   #1
mobilitialex
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 40
По умолчанию Ошибка вроде простая, но не знаю, как её исправить

Ошибка: left side cannot be assigned to

HookHandle:=SetWindowsHookEx(WH_KEY BOARD_LL, @KeyboardProc, HInstance, 0)

И тут

HookHandle:=0;


Код:
library DisableHotKeys;
uses
  SysUtils, Windows, Messages;
type
  KBDLLHOOKSTRUCT = record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo:Pointer;
  end;
  PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
const
  HookHandle: hHook = 0;
  LLKHF_ALTDOWN  = KF_ALTDOWN shr 8;
  WH_KEYBOARD_LL = 13;
function KeyboardProc(nCode: integer; wParam: longint; lParam: longint): integer; stdcall;
var
  KeyStroke: boolean;
  p: PKBDLLHOOKSTRUCT;
begin
  KeyStroke := false;
  if (nCode = HC_ACTION) then
  begin
      case wParam of
        WM_KEYDOWN, WM_SYSKEYDOWN,
        WM_KEYUP,    WM_SYSKEYUP:
        begin
          p := PKBDLLHOOKSTRUCT(lParam);
          KeyStroke :=
              ( (p^.vkCode = VK_LWIN) or (p^.vkCode = VK_RWIN)) or
              ( (p^.vkCode = VK_TAB) and ((p^.flags and LLKHF_ALTDOWN) <> 0) ) or
              ( (p^.vkCode = VK_ESCAPE) and ((p^.flags and LLKHF_ALTDOWN) <> 0) ) or
              ( (p^.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0) ) or
              ( (p^.vkCode = VK_F4) and ((p^.flags and LLKHF_ALTDOWN) <> 0) );
// для Cotrl+Alt+Delete, к сожалению, не работает.
 //             ( (p^.vkCode = VK_DELETE) and ( (p^.flags and LLKHF_ALTDOWN) <> 0 ) and
//              ( (GetKeyState(VK_CONTROL) and $8000) <> 0));
        end;
      end;//case
  end;
  if KeyStroke then
    result := 1
  else
    result := CallNextHookEx(0, nCode, wParam, lParam);
end;
// установка, отключение ловушки
procedure Hook(lRun:Boolean); export; stdcall;
begin
 if lRun then
  HookHandle:=SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardProc, HInstance, 0)
 else
  begin
   UnhookWindowsHookEx(HookHandle);
   HookHandle:=0;
  end;
end;
exports Hook;
begin
end.


Код:
implementation


procedure Hook(lRun:Boolean) stdcall; external 'DisableHotKeys' name 'Hook';

procedure TForm1.FormCreate(Sender: TObject);
begin
 Hook(True);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Hook(False);
end
mobilitialex вне форума
Старый 15.04.2011, 11:27   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

и тут
Код:
const
  HookHandle: hHook = 0;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума
Старый 15.04.2011, 11:51   #3
mobilitialex
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 40
По умолчанию

А как быть в этом случае?
mobilitialex вне форума
Старый 15.04.2011, 12:51   #4
mobilitialex
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 40
По умолчанию

На этом форуме все такие умные просто п…. а когда просишь помочь, проблема, мол, у меня так все молчат, только и могут что обсирать, или написать какой-то бред и молчат.

Народ выкладываю полностью рабочий код блокировки клавиш: Win, Esc, Ctrl, Tab, F4, все файлы рабочие, сохраненные на Delph 2010, запускайте файл: ProjectGroup3.groupproj и будет вам счастье.

Тему можно закрыть!
Вложения
Тип файла: rar Hook.rar (330.3 Кб, 35 просмотров)
mobilitialex вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Допущена ошибка,не знаю как исправить sSilen Помощь студентам 8 08.01.2011 20:56
Простая программа, не знаю как сделать. СобачийКусок Общие вопросы C/C++ 6 07.11.2010 16:56
Господа, вроде легкая задача по Delphi, а как подступиться не знаю koysara Помощь студентам 3 17.09.2010 11:12
Кривое отображение. Вроде ясно, а исправить незнаю 3OH! HTML и CSS 3 02.07.2010 10:23
вроде более менее понимаю паскаль.. но как предел писать не знаю((( chargosman Помощь студентам 11 11.01.2009 15:46