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

Вниз

Как правильно анализировать сообщения WM_CHAR ?   Найти похожие ветки 

 
Dwemer   (2003-07-16 03:27) [0]

У меня в dll стоит хук на WH_GETMESSAGE, затем я отбираю сообщение WM_CHAR. И все бы ничего, но пока эта dll загружена, все (абсолютно все, даже Explorer) програмы еррорятся ("... обратилась к участку памяти по адресу...... который не может быть write") и в самой библиотеке такие-же ерроры. Подскажите пожалуйста что я делаю не так, вот код:

library keyhook;

uses
WinTypes,
// SysUtils,
Messages;

const
MMFName: PChar = "KeyMMF";

type
PGlobalDLLData = ^TGlobalDLLData;
TGlobalDLLData = packed record
SysHook: hHook;
MyAppWnd: HWND;
end;

var
GlobalData: PGlobalDLLData;
MMFHandle: THandle;
WM_MYKEYHOOK: Cardinal;
m: TMsg;
ch: char;
st: string[10];
F: Text;

procedure log;
begin
Write(F, st);
Flush(F);
end;

function GetMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
AppWnd: HWND;
begin
if code < 0 then
begin
Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
Exit;
end;
m := TMSG((Pointer(lparam))^);
if m.message = WM_CHAR then
begin
ch:=chr(m.wParam);
write(F, ch);
flush(F);
//SendMessage(GlobalData^.MyAppWnd, WM_MYKEYHOOK, m.wParam, AppWnd);
end;
CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
Result:= 0;
end;

procedure hook(switch : Boolean; hMainProg: HWND) export; stdcall;
begin
if switch=true then
begin
GlobalData^.SysHook := SetWindowsHookEx(WH_GETMESSAGE, @GetMsgProc, HInstance, 0);
GlobalData^.MyAppWnd:= hMainProg;
if GlobalData^.SysHook <> 0 then
MessageBox(0, "KEYBOARD HOOK


 
Dwemer   (2003-07-16 15:53) [1]

Хелп ми плииз!!!



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

Форум: "WinAPI";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.01 c
14-48696
vopros
2003-08-25 09:49
2003.09.15
Люди, мне опять не посебе. Прошло почти 1,5 года после того


3-48446
DelphiM
2003-08-25 10:27
2003.09.15
Grid


14-48738
Delphi5.01
2003-08-26 19:47
2003.09.15
Запасный выход


1-48617
Jee
2003-09-03 10:08
2003.09.15
Полнотекстовый поиск


1-48499
Urvin
2003-09-02 18:47
2003.09.15
Как использовать WM_...





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