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

Вниз

DLL и прорамма   Найти похожие ветки 

 
Вредитель ©   (2008-01-28 16:31) [0]

Guten Tag.

library lib;

function GetKeyText(mssgwnd:hwnd;lpar:integer):string;
var
ss:string;
keywnd:hwnd;
begin
ss:=GetKeyName(lPar,(IsKeyDown(VK_SHIFT)));
result:=ss;
 if (IsKeyDown(VK_SHIFT)) then begin
  result:=AnsiUpperCase(ss);
 end;
keywnd:=mssgwnd;
pid:=GetWindowThreadProcessId(keywnd, pid);
VerLanguageName(GetKeyboardLayout(GetWindowThreadProcessId(keywnd, pid)),lang,MAXCHAR);
 if (lang=String("Английский (США)")) then
  begin
   ss:=GetKeyNameEn(lPar,(IsKeyDown(VK_SHIFT)));
    result:=ss;
     if (IsKeyDown(VK_SHIFT)) then
    result:=AnsiUpperCase(ss);
  end;
end;

function keyboardproc(
code: integer;
wparam: wparam;
lparam: lparam):
longint stdcall;
begin
if code < 0 then
 result := callnexthookex( hookhandle, code, wparam, lparam )
else
 begin
    appwnd:=GetForegroundWindow;
    strvar:=GetKeyText(appwnd,lparam);
    result:=0;
  end;
end;

begin
setwindowshookex(wh_keyboard,keyboardproc, hinstance,0 );
end;
^^^^^^^^^^^^^
Эту dll загружает другая dll.

-------------

function keyboardproc(
code: integer; // hook code
wparam: wparam; // virtual-key code
lparam: lparam): // keystroke-message information
longint stdcall;
begin
if not( code < 0) then
 begin
  appwnd:=GetForegroundWindow;
  strvar:=GetKeyText(appwnd,lparam);
  result := 0
 end;
end;
function GetKeyText(mssgwnd:hwnd;lpar:integer):string;
var
ss:string;
keywnd:hwnd;
begin
ss:=GetKeyName(lPar,(IsKeyDown(VK_SHIFT)));
result:=ss;
 if (IsKeyDown(VK_SHIFT)) then begin
  result:=AnsiUpperCase(ss);
 end;
keywnd:=mssgwnd;
pid:=GetWindowThreadProcessId(keywnd, pid);
VerLanguageName(GetKeyboardLayout(GetWindowThreadProcessId(keywnd, pid)),lang,MAXCHAR);
 if (lang=String("Английский (США)")) then
  begin
   ss:=GetKeyNameEn(lPar,(IsKeyDown(VK_SHIFT)));
    result:=ss;
     if (IsKeyDown(VK_SHIFT)) then
    result:=AnsiUpperCase(ss);
  end;
end;

function hookkeyboard( hook : boolean ) : boolean; stdcall;
begin
result := false;
if hook then begin
if hookhandle = 0 then
hookhandle := setwindowshookex( wh_keyboard, keyboardproc, hinstance,
0 );
result := ( hookhandle <> 0 );
end
else
begin
if hookhandle <> 0 then begin
unhookwindowshookex( hookhandle );
hookhandle := 0;
result := true;
end;
end;
end;

exports hookkeyboard;

^^^^^^^^^^^^^

А все это вызывается из программы(hookkeyboard(true)).

В первом случае  язык не определяется(и через примерно 15 нажатий клавиатура глючит), во 2ом определяется и все нормально.
Заранее спасибо.


 
Сергей М. ©   (2008-01-28 16:35) [1]


> во 2ом определяется и все нормально


Ну и пользуй 2й, если "все нормально".
А учиться "прописной истине", той что "лучшее - враг хорошего", следует при иной совсем постановке вопроса.


 
ketmar ©   (2008-01-28 17:01) [2]

в обоих случаях ужос. о том, что контексты ввода назначаются не окнам, а потокам — знаем?


 
вредитель_   (2008-01-28 18:40) [3]

знаем. но в случае с прогой все работает, а мне надо чтобы хук ставился просто при загрузке библиотеки!


 
вредитель_   (2008-01-28 18:40) [4]

знаем. но в случае с прогой все работает, а мне надо чтобы хук ставился просто при загрузке библиотеки!


 
Сергей М. ©   (2008-01-29 12:42) [5]


> мне надо чтобы хук ставился просто при загрузке библиотеки


Мало ли чего тебе надо !

Что ж тогда жалуешься, что оно у тебя не работает ?


 
имя   (2008-10-02 01:08) [6]

Удалено модератором


 
имя   (2008-10-02 01:09) [7]

Удалено модератором


 
имя   (2008-10-02 02:24) [8]

Удалено модератором


 
имя   (2008-10-02 02:25) [9]

Удалено модератором


 
имя   (2008-10-02 02:25) [10]

Удалено модератором



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
2-1255071971
Маркабес
2009-10-09 11:06
2009.11.22
в Чем ошибка......? в условии


15-1253822503
Суслик_
2009-09-25 00:01
2009.11.22
Папка c: windows temp


15-1252099859
Германн
2009-09-05 01:30
2009.11.22
Как отформатировать флешку?


9-1183495016
@!!ex
2007-07-04 00:36
2009.11.22
Как засветить часть экрана.


3-1229485271
Karburator
2008-12-17 06:41
2009.11.22
уведомление из FireBird приложения