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

Вниз

почему ошибка   Найти похожие ветки 

 
Leeechhhh   (2005-03-06 10:03) [0]

вот кусок кода из dll клавиатурного шпиона,
HookHandle := SetWindowsHookEx(wh_Keyboard, Key_Hook,
                          hInstance, 0);

на этом месте почемуто постоянно при компиляции выдаёт ошибку
[Error] sendkey.dpr(58): Left side cannot be assigned to
[Error] sendkey.dpr(58): Incompatible types: "Calling conventions differ"

помогите исправить


 
MU ©   (2005-03-06 11:27) [1]

где и как объявлен HookHandle


 
Leeechhhh   (2005-03-06 18:34) [2]

library SendKey;
uses
WinTypes, WinProcs, Messages;

const
{пользовательские сообщения}
wm_NextShow_Event = wm_User + 133;
wm_PrevShow_Event = wm_User + 134;
{handle для ловушки}
HookHandle: hHook = 0;

var
SaveExitProc : Pointer;

{собственно ловушка}
function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint;
export;
var
H: HWND;
begin
{если Code>=0, то ловушка может обpаботать событие}
if Code >= 0 then
begin
  {это те клавиши?}
  if ((wParam = VK_ADD)or(wParam = VK_SUBTRACT)) and (lParam and $40000000 =
0)
  then begin
    {ищем окно по имени класса и по заголовку}
    H := FindWindow("TForm1", "XXX");
    {посылаем сообщение}
    if wParam = VK_ADD then
      SendMessage(H, wm_NextShow_Event, 0, 0)
    else
      SendMessage(H, wm_PrevShow_Event, 0, 0);
  end;
 {если 0, то система должна дальше обpаботать это событие}
 {если 1 - нет}
 Result:=0;
end
else
  {если Code<0, то нужно вызвать следующую ловушку}
  Result := CallNextHookEx(HookHandle,Code, wParam, lParam);
end;

{пpи выгpузке DLL надо снять ловушку}
procedure LocalExitProc; far;
begin
if HookHandle<>0 then
begin
  UnhookWindowsHookEx(HookHandle);
  ExitProc := SaveExitProc;
end;
end;

{инициализация DLL пpи загpузке ее в память}
begin
{устанавливаем ловушку}
HookHandle := SetWindowsHookEx(wh_Keyboard, Key_Hook,
                          hInstance, 0);
if HookHandle = 0 then
  MessageBox(0, "Unable to set hook!", "Error", mb_Ok)
else begin
 SaveExitProc := ExitProc;
 ExitProc := @LocalExitProc;
end;
end.


 
Alex_Petr ©   (2005-03-06 18:47) [3]

У тебя HookHandle - const


 
Leeechhhh   (2005-03-06 18:51) [4]

ну и чё


 
Antonn ©   (2005-03-06 18:56) [5]

А вот и то. Дельфи наверно выше 5 версии. В пятерке такие вещи прокатывали.


 
Leeechhhh   (2005-03-06 19:40) [6]

понятно, а вторая ошибка всё равно вылазит,
кстати, куда луче подставить объявление хэндла?


 
GuAV ©   (2005-03-06 19:54) [7]

Leeechhhh   (06.03.05 19:40) [6]
кстати, куда луче подставить объявление хэндла?


В поле структуры, которая разделяется между всеми экземплярами DLL.


 
GuAV ©   (2005-03-06 19:57) [8]


> {инициализация DLL пpи загpузке ее в память}

в виртуальную память процессов текущего дестопа... угадай сколько раз это произойдёт...


 
Leeechhhh   (2005-03-06 19:58) [9]

яж, нечё не шарю в опредах, я вставил хэндл в глобальную переменную, первая ошибка перестала вылазить, а вторая нет. Подскажи, а, ато млин попросил пацан очень. А с инета готовый шпион не подходит ни один


 
GuAV ©   (2005-03-06 20:14) [10]

Вторая ошибка из-за того что неверно описана Key_Hook

> function Key_Hook(Code: integer; wParam: word; lParam:
> Longint): Longint;


см. объявление SetWindowsHookEx


 
Leeechhhh   (2005-03-06 21:05) [11]

посмотрел, там в статейке, было все wparam,lparam и code integer"ными , сделал не помогло


 
GuAV ©   (2005-03-06 21:28) [12]

И результат, и модель вызова stdcall ?


 
Leeechhhh   (2005-03-06 21:37) [13]

всё, с ошибкой в длл разобрался. Терь приложение глючит млин, вроде всё нормально, а при запуске выдаёт ошибку инициализации приложения


 
GuAV ©   (2005-03-06 22:01) [14]

{инициализация DLL пpи загpузке ее в память} выполнится при загрузке этой DLL каждым из процессов.

Вынеси SetWindowsHookEx и UnhookWindowsHookEx в отдельный экспортированные процедуры.



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

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

Наверх




Память: 0.49 MB
Время: 0.049 c
3-1108705826
Layner
2005-02-18 08:50
2005.03.20
Как передать параметр в ХП MSSQL


1-1110095064
Checist [root]
2005-03-06 10:44
2005.03.20
TreeNode


1-1109937507
DimonNew
2005-03-04 14:58
2005.03.20
TList и new и dispose и ограничение по расмеру


3-1108471018
Laser
2005-02-15 15:36
2005.03.20
Фильтрация и Loockup поля


14-1109319235
Bless
2005-02-25 11:13
2005.03.20
Посоветуйте книжку по теории автоматов