1,183
社区成员
发帖
与我相关
我的任务
分享
library HookDLL;
uses
Windows, Messages, KOL, imm;
var
oldHook: DWORD;
FEdit:THandle;
function CallWndProc(nCode: Integer; wParam: wParam; LParam: LParam): LRESULT; stdcall;
var hIM:hIMC;
lpstr:array[0..128] of char;
s:string;
begin
Result := CallNextHookEx(oldHook, nCode, wParam, LParam);
if PCWPStruct(LParam).message = WM_IME_COMPOSITION then begin
hIM := ImmGetContext(PCWPStruct(LParam).hwnd);
fillchar(lpstr,sizeof(lpstr),0);
ImmGetCompositionString(hIM, GCS_RESULTSTR, @lpstr, sizeof(lpstr));
// 注意了,这处是关键
s:='哇咔咔';
ImmSetCompositionString(hIM, SCS_SETSTR,PChar(s),Length(s),nil,0);
ImmReleaseContext(PCWPStruct(LParam).hwnd, hIM);
//用作反馈信息给我的RichEdit的。。
SendMessage(FEdit,WM_SETTEXT,0,Integer(@lpstr));
end;
end;
procedure HookOn(Edit:THandle);
begin
FEdit:=Edit;
oldHook := SetWindowsHookEx(WH_CALLWNDPROC , @CallWndProc, HInstance, 0);
end;
procedure HookOff();
begin
UnHookWindowsHookEx(oldHook);
end;
exports HookOn, HookOff;
begin
end.