- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Microsoft Spy++,当您打开/创建新文档时,我看到 Notepad++ 收到 WM_SETTEXT 消息。我需要在 Windows 上 Hook 标题更改,因此我尝试执行 WH_GETMESSAGE Hook ,并仅过滤 WM_SETTEXT。但到目前为止我还没有成功。这是我的 DLL:
uses
System.SysUtils,
Windows,
Messages,
System.Classes;
var
CurrentHook: HHOOK;
{$R *.res}
function GetMessageHookProc(Code: Integer; iWParam: WPARAM; iLParam: LPARAM): LRESULT; stdcall;
begin
Result:= CallNextHookEx(CurrentHook, Code, iWParam, iLParam);
if (Code = HC_ACTION) and (PMSG(iLParam).message = wm_settext) then
begin
MessageBox(0, 'WM_SETTEXT', 'WM_SETTEXT', MB_OK);
//this code below is just a prototype to what I will try when this works:
if IntToStr(PMSG(iLParam).lParam) = 'new - Notepad++' then
MessageBox(0, 'Notepad++', 'Notepad++', MB_OK);
end;
end;
procedure SetHook; stdcall;
begin
CurrentHook:= SetWindowsHookEx(WH_GETMESSAGE, @GetMessageHookProc, HInstance, 0);
if CurrentHook <> 0 then
MessageBox(0, 'HOOKED', 'HOOKED', MB_OK);
end;
procedure UnsetHook; stdcall;
begin
UnhookWindowsHookEx(CurrentHook);
end;
exports
SetHook,
UnsetHook;
begin
end.
我收到“HOOKED”消息框,表明 Hook 已解决,但我从未在回调过程的 if 中收到“WM_SETTEXT”消息框。如何只过滤这种消息,并检查消息的字符串?
谢谢!
最佳答案
WM_SETTEXT
是已发送消息,而不是已发布消息。 WH_GETMESSAGE
Hook 只能看到发布到目标线程消息队列的消息,因此它永远不会看到WM_SETTEXT
消息。要 Hook 直接发送到窗口而不通过消息队列的消息,您需要使用 WH_CALLWNDPROC
或 WH_CALLWNDPROCRET
Hook 。
关于delphi - 仅 Hook WH_GETMESSAGE 并过滤 WM_SETTEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487224/
我已经使用 WH_CALLWNDPROC 在 WM_SETTEXT 消息上设置了一个钩子(Hook)。 在钩子(Hook)程序中 CWPSTRUCT* info = (CWPSTRUCT*) lPar
我已经使用 WH_CALLWNDPROC 在 WM_SETTEXT 消息上设置了一个钩子(Hook)。 在钩子(Hook)程序中 CWPSTRUCT* info = (CWPSTRUCT*) lPar
我做了一个像这样的小文本框 EBX = CreateWindow(TEXT("EDIT"), TEXT(""), WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES
我目前正在致力于自动化无法更改的 Win32 UI 应用程序。到目前为止,我的方法是使用目标应用程序的标准消息队列来注入(inject)我的输入。我已经深入了解了: 使用 WM_COMMAND 可以“
使用 Microsoft Spy++,当您打开/创建新文档时,我看到 Notepad++ 收到 WM_SETTEXT 消息。我需要在 Windows 上 Hook 标题更改,因此我尝试执行 WH_GE
我几乎完成了一个项目,基本上,获取 .txt 文件的内容,使用“Process.Start("notepad")”打开一个新的记事本实例,然后使用“WM_SETTEXT”常量设置文本.我的这个工作很漂
我有一个 CEdit 派生控件,它在底层数据为空时显示字符串“N/A”。我最近添加了代码以清空控件(SetWindowText(“”);)当它获得焦点并设置如果返回“N/A”(SetWindowTex
我在使用 SendMessageA(handle,WM_SETTEXT,0,(LPARAM)text) 时遇到问题;如果在除构造函数之外的任何其他地方使用,它会导致崩溃。 MWC.h #include
我们使用 Richedit 2.0 作为我们的脚本编辑器,它在您键入时具有自动多级撤消和重做。当我们想要构建我们的脚本或脚本打开时,我重新格式化文本并通过 WM_SETTEXT 将其发送到富编辑控件。
子类控件在您调用 WM_SETTEXT 后未收到 WM_PAINT 是否正常? 父级确实收到 WM_CTLCOLOR,但我想在我的子类 WM_PAINT 消息中绘制所有内容。 我认为在调用 WM_SE
我有 2 个应用程序,一个是隐藏窗口(“hW”),另一个是控制台应用程序(“CA”),来自我想向硬件发送命令。在控制台应用程序中,我得到了硬件句柄,这是一个问题:如果我正在运行: PostMessag
我是一名优秀的程序员,十分优秀!