我正在制作一个基于教程的程序,并希望能够将我的代码挂接到某些应用程序中,以使教程与该应用程序进行交互。我的钩子(Hook)代码适用于除googlechrome之外的大多数应用程序。我已将我的代码简化为以下内容,这样您就可以看到它出了什么问题。main.cpp#include#include#include#includeunsignedlongGetProcId(conststd::string&name){unsignedlongres=0;HANDLEhSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSEN
我希望能够捕获-在操作系统窗口级别-当输入文本时-在任何窗口中,在所有桌面上。详细信息-我喜欢有一个wpf(或winforms)应用程序,它可以挂接到Windows操作系统级别的事件(可能是光标更改或键盘点击)-这样我就可以对正在键入的文本运行一些逻辑。任何引用或示例-甚至研究主题都将不胜感激。谢谢 最佳答案 您需要使用win32api(使用setwindowshookex方法)来执行此操作阅读http://www.pinvoke.net/default.aspx/user32.setwindowshookex
我正在为键盘设置一个全局钩子(Hook)。当我向其他应用程序提供键盘输入时,该应用程序未接收到输入并挂起。当控制台停止时,应用程序恢复并且键盘输入被发送到一起。动态链接库源:#include#include#includeusingnamespacestd;#defineDLLEXPORT__declspec(dllexport)DLLEXPORTboolinstallhook();DLLEXPORTvoidunhook();DLLEXPORTstringTestLoaded();DLLEXPORTLRESULTCALLBACKKeyboardProc(intcode,WPARAMwP
我要附上childwindow到外部应用程序。子窗口将是一个无模式对话框。由于我不拥有外部应用程序(实际上是MicrosoftFSX)的源代码,因此我不知道如何挂接到消息循环或回调中LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM)父窗口本身。我的附加应用程序在它自己的进程中运行,所以我需要编写自己的消息循环,还是我的回调将由父级的消息泵调用?取得成功的正确方法是什么?--编辑关于SetWindowsHookEx的回答函数——值得注意的:HowtohookexternalprocesswithSetWindowsHookExandWH_KEY
我一直在开发一个需要监控另一个进程上的线程特定鼠标事件(WH_MOUSE)的应用程序,遇到了一些非常奇怪的事情.在发现thisisnotpossibleviaexclusivelymanagedcode之后如果我不想使用WH_MOUSE_LL并且我需要一个nativeDLL导出以将其自身注入(inject)到目标进程中,我会根据我能找到的零散文档在C++中着手创建它在这个主题上,然后尝试使用它连接到记事本。虽然根据GetLastWin32Error注入(inject)成功,我没有收到鼠标事件的通知。在几乎放弃并选择低级全局Hook选项后,我重新阅读了thisarticle的“备注”部分
我的代码几年来一直没有报告任何问题。它设置了一个低级键盘钩子(Hook),用户可以使用它来激活应用程序。m_hKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeybHookFn,GetModuleHandle(NULL),0);突然有一位用户(这在他之前也适用多年),键盘Hook无法正常工作。经过调查,我可以看到SetWindowsHookEx()正在返回NULL,而GetLastError()正在返回0x00000597,即ERROR_HOOK_NOT_INSTALLED。我找不到关于这意味着什么的任何文档。为什么会发生这种情况的可能性有哪
我编写了一个简单的程序来将所有鼠标事件打印到调试View:#include#includeHHOOKg_mouseEventHook=NULL;LRESULTCALLBACKmouseEventHookProc(intcode,WPARAMwParam,LPARAMlParam){if(code!=HC_ACTION){return::CallNextHookEx(g_mouseEventHook,code,wParam,lParam);}PMSLLHOOKSTRUCTmi=(PMSLLHOOKSTRUCT)lParam;charbuf[2048];sprintf(buf,__FUNC
我正在尝试弄清楚是否有一种方法可以使用SetWindowsHookEx并能够影响在启用了UAC的Vista上以管理员权限运行的应用程序。这是一个需要向其他窗口的标题栏添加一个小按钮以启用一些多显示器感知处理的应用程序。我原以为这不可能完成,但我看到一个应用似乎可以做到这一点。据我所知,其他应用程序没有以管理员权限运行,但它会影响系统中的所有应用程序,包括那些具有管理员权限的应用程序。看来似乎有办法做到这一点,但我不知道该怎么做。我的应用程序只需要能够在窗口标题栏上绘制并能够影响它们的移动和大小。我不需要做任何其他事情。 最佳答案 您
我还在为钩子(Hook)而苦苦挣扎。我的目标是:在notepad.exe中设置一个钩子(Hook)对其进行子类化(我的最终目标是将Edit类子类化并在我自己的窗口中显示内容)免责声明:我知道有更简单的方法可以从记事本中获取文本/内容,但这是我学习C、winapi、子类化和Hook的一种方式。我的问题是SetWindowLongPtr始终返回ERROR_ACCESS_DENIED错误(代码5)。2013年5月22日:已修复!问题是SetWindowLongPtr在错误的地方。它必须在GetMsgProc函数内。问题变得有点冗长和困惑,所以我重新写了问题(更新了代码)现在的问题是,当目标是
我正在尝试从加载我的DLL的进程中获取消息。我试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,0);这给了我关于“程序X无法启动,因为系统中缺少Y.dll”的错误弹出窗口。这就是我在标题中加上“安全”的原因。我也试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,threadId);threadId是我的DLLMain中GetCurrentThreadId()的结果。这个有效,但我没有收到任何窗口消息(只有一堆512和1025)。