Articles of 钩子

如何在Linux上使用input子系统来获取键盘事件

我正在用C写一个Linux程序,我需要截取某些键盘笔划。 使用input子系统(读/写/ dev /input/事件X),我可以接收键盘笔画(使用“读取”function)或模拟键盘笔画(使用“写入”function)。 当使用“读”function时,我可以捕捉用户的键盘笔画,但这个事件是传播的,我不知道如何使用它。

Linux X11 – 全局键盘钩子

是否可以(或如何)创build一个在Windows(SetWindowsHookEx())中像全局钩子一样工作的机制(在Linux X11,C ++中)? 我希望能够抓住关键事件,但有可能进一步传播 。 我试图使用XGrabKey解决scheme(就像在xbindkeys中 ),但是当我设置捕获关键事件,这个事件是“消耗”。 这个机制的要求如下: 全球/全系统 – 捕捉事件,不pipe重点窗口如何 “抓住”和“通过”的可能性 它一定很快 示例代码如下所示: bool myFlagIsSet = false; XEvent event; while (true) { while (XPending(display) > 0) { usleep(SLEEP_TIME); } XNextEvent(display, &event); switch (e.type) { case KeyPress: if (myFlagIsSet) { //do not propagate } // propagate break; case KeyRelease: if (myFlagIsSet) { //do not propagate […]

监视COM对象

我为自己设定了一个新的任务,涉及到对COM对象的“窥视”。 即使你不做COM,你可能也熟悉API挂钩技术,你可以挂钩到一个导入的函数,并在调用原始代码之前执行你自己的代码。 API钩子有点复杂,但如果试图挂钩到COM对象方法,它很快就会变得混乱(生产代码IMO太混乱了)。 所以,现在做“我的工作”,我为CoCreateInstance设置了一个API钩子,并为我感兴趣的接口派发手写代理。现在这不是很多接口,但它不是最好的解决scheme无论是。 有没有办法做到这一点整洁的方式,最好不使用API​​挂钩? 在另一个说明,这篇文章似乎是伟大的工作http://www.ddj.com/windows/184416546?pgno=5但二进制不工作了(我想这是写在Win98的时间)。 有没有人知道它的内部,并可以指向我正确的方向,使其再次工作? 谢谢

用c ++禁用任务切换键

我做了很多search,没有真正的解决scheme(对我自己的问题),所以我想我会问在这里。 我正在devise一个亭子般的程序,以防止用户在程序运行时使用任务键(alt + tab,alt + esc,ctrl + esc等)。 注意我是一个新手程序员,所以我想远离单独的DLL处理,如果可以的话。 特别是,我去了这个网站http://support.microsoft.com/kb/226359/en-us的代码。 我的代码的一个简化部分如下所示: HHOOK mule; HHOOK g_hKeyboardHook; BOOL g_bFullscreen; LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam) { // By returning a non-zero value from the hook procedure, the // message does not get passed to the target window KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam; BOOL […]

从Windows锁屏钩键盘快捷键

我有一个arduino键盘模拟模式,发送键盘击键到它连接到的计算机,后者在接收每个击键时在本地网页上追加一个日志行。 日志程序使用Win32 API以C编码。 现在,因为它应该在工作中工作(想法是让我的桌子上的button被激活时在线日志文件),我会locking我的电脑… 我怎样才能保持从窗口locking屏幕处理CTRL + ALT +键击? 谢谢,Mystère先生

在Windows上执行Git钩子

我在执行Windows上的Git挂钩时遇到了麻烦。 我有一个裸回购,在“钩子”文件夹我把下面的“更新”和“预推”文件,但PHP脚本永远不会被执行: "c:/Programs/PHP/php.exe" c:/Data/Scripts/git-pre-push.phpcli %1 任何想法,为什么PHP脚本不执行? 在Git控制台窗口中,当我尝试将某些内容推送到裸回购时,我看到以下内容: POST git-receive-pack (437 bytes) remote: error: hook declined to update refs/heads/master To https://myuser@mydomain/samplerepo ! [remote rejected] master -> master (hook declined) error: failed to push some refs to 'https://myuser@mydomain/samplerepo' …所以我知道“更新”以某种方式被执行。 当我删除该文件推送工作得很好。

C#钩入Windows资源pipe理器文件夹更改事件

我一直在search,没有运气,看看是否有办法挂钩到Windows资源pipe理器文件夹更改事件。 我想要的是:如果我浏览我的资源pipe理器(Windows 7)我想在文件夹已经改变后运行一组特定的代码(键组合发送)。 任何人都知道这是可能的吗? 谢谢 :)

通过subprocess发送一个钩子捕获消息到控制台是可能的吗?

所以我开始一个普通的控制台程序,然后在其中创build另一个进程。 接下来,subprocess尝试在父进程拥有的控制台上写入内容。 是否有可能在这个控制台上挂钩,所以当subprocess试图写一些文本我可以做这个文本search和replace,并把它改变到控制台。 (我知道使用pipe道是可能的,但是在这里我特别要求在控制台级别执行此操作,因为如果某些程序看到它们连接到pipe道而不是控制台,则其行为会有所不同。) SetWindowsHookEx与我的问题有关吗?

C ++挂钩到不同的应用程序,如何从进程IDfind线程ID?

我想给应用程序添加一个钩子。 我正在使用SetWindowsHookEx ,我可以创build一个系统范围的钩子,但我想为特定的应用程序创build一个钩子。 我需要有目标应用程序的线程ID挂钩它。 我知道窗口的标题,我知道EXE的名称,从这些我可以得到窗口句柄和进程ID,但我怎么得到线程ID? 我看到一篇关于如何在c#中完成的文章 ,但是我不明白如何获得c ++中的线程列表。 HWND windowHandle = FindWindow(NULL, _T("SomeOtherApp")); DWORD processId = GetWindowThreadProcessId(windowHandle, NULL); DWORD threadId = ??? // How do I get thread id here? HHOOK hook = ::SetWindowsHookEx( WH_CBT, HookCBTProc, hInst, threadId); 谢谢,亚历山大。

系统范围挂钩从.NET使用非托pipeDLL

过去,我已经使用了以下CodeProject文章中提供的代码,但是它似乎只部分适用于Vista / 7(我猜是因为UAC)。 它适用于当前的线程,但它不会提取系统范围内的活动。 我已经尝试在清单中添加requireAdministrator并签署非托pipe和托pipe程序集,这似乎没有帮助。 使用窗口消息在C#中实现全局系统钩子 我的主要目标是使用SetWindowsHookEx捕获非托pipe程序集中的HSHELL_WINDOWCREATED和HSHELL_WINDOWDESTROYED消息,并通知C#应用程序,以便它可以实时使用这些信息。 基本上只需知道系统中何时创build或销毁窗口。 我还发现了一个纯C / C ++的示例应用程序,在Vista / 7中工作得很好,但是我真的不想用C / C ++编写整个应用程序。 系统宽钩示例工作 任何人都知道如何修复第一个CodeProject文章中的代码,以便它可以在Vista / 7上运行? 或者有没有其他的方法可以做到这一点,而不用在C#中创build定时器和类似的黑客? 谢谢,Marc