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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
14-1109246916
Тульский
2005-02-24 15:08
2005.03.20
Экономические игры


1-1110036605
hamster
2005-03-05 18:30
2005.03.20
Вещественные числа


14-1109338938
diww
2005-02-25 16:42
2005.03.20
глючит ICQ


1-1110281018
zioza
2005-03-08 14:23
2005.03.20
Как сделать что бы при запуске особово файла запускалась моя прог


14-1109689996
Филя
2005-03-01 18:13
2005.03.20
Что за язык ?





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