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 […]

如何在Windows平台上编写Git服务器钩子?

我无法findWindows的Git钩子的任何明确的例子。 我在Windows Server上使用Bonobo Git Server。 我需要预先提交和后提交钩子作为CMD或蝙蝠。 预先提交应该检查空的评论和提交后应发送关于提交的电子邮件通知。 可能有人有类似的钩子,并准备分享?

我需要做些什么来使我的WH_SHELL或WH_CBT挂钩程序从其他进程接收事件?

我试图使用SetWindowsHookEx来build立一个WH_SHELL挂钩来获得系统范围的HSHELL_WINDOWCREATED和HSHELL_WINDOWDESTROYED事件的通知。 我把0传递给最后一个dwThreadId参数,根据文档 , 这个参数应该“将钩子过程与调用线程在同一桌面上运行的所有现有线程相关联”。 我也传递了我的DLL( HInstance在Delphi中)的句柄hMod参数,我所看到的所有例子。 然而,我只能得到我自己的应用程序创build的窗口的通知,而且往往会导致桌面进程一旦closures我的应用程序就会熄灭。 在你问之前,我打电话给UnhookWindowsHookEx 。 我也总是从我的处理程序中调用CallNextHookEx 。 我从一个有限的用户帐户运行我的testing应用程序,但到目前为止,我还没有发现任何暗示,这将发挥作用…(虽然这实际上令我惊讶) AFAICT,我做了所有的书(显然我没有,但到目前为止,我不知道在哪里)。 我正在使用delphi(2007年),但这应该不是真的,我想。 编辑:也许我应该提到这之前:我下载并尝试了几个例子(虽然不幸的是没有那么多的delphi – 特别是没有WH_SHELL或WH_CBT )。 虽然他们不会像我的testing应用程序那样崩溃系统,但是他们仍然不会捕获来自其他进程的事件(尽pipe我可以使用ProcessExplorervalidation它们是否可以加载到其中)。 所以看起来我的系统configuration有问题,或者这个例子错了,或者根本无法从其他进程捕获事件。 任何人都可以启发我吗? 编辑2:好的,这是我的testing项目的来源。 包含挂钩过程的DLL: library HookHelper; uses Windows; {$R *.res} type THookCallback = procedure(ACode, AWParam, ALParam: Integer); stdcall; var WndHookCallback: THookCallback; Hook: HHook; function HookProc(ACode, AWParam, ALParam: Integer): Integer; stdcall; begin Result := CallNextHookEx(Hook, ACode, AWParam, […]

在locking或解锁Windows XP时运行脚本

我有一台Windows XP机器和一台运行Ubuntu的Linux机器。 我通过Synergy从Windows机器共享键盘/鼠标。 我想要做的是locking/解锁Linux机器,每当我locking/解锁Windows机器。 所以我希望能够在Windowslocking或解锁屏幕时运行一些描述的脚本。

Windows键盘挂钩挂起debugging器

我有一个从主应用程序中的辅助(而不是GUI)线程启动的插件DLL。 DLL必须从应用程序的主窗口中获取键盘事件。 我正在使用SetWindowsHookEx() ,它工作得很好。 但是,如果我在钩子处于活动状态时在Visual Studio中遇到了断点,然后按下一个键,则Visual Studio和我的应用程序将完全locking。 这是一个问题,因为我通常使用F键来遍历代码。 如果我使用鼠标,并从Visual Studio的debugging菜单前进,它工作正常。 但是使用F10等。 是这样一个习惯,我通常忘记使用鼠标。 有什么我可以做我的键盘快捷键回来? 或者听不同的方法来听键盘?

Win32自定义消息框

我想制作一个自定义消息框。 我想要自定义的是button的文本。 MessageBoxW( NULL, L"Target folder already exists. Do you want to overwrite the folder?", L"No title", MB_YESNOCANCEL | MB_ICONQUESTION ); 我想只是改变button文本Overwrite , Skip , Cancel 。 什么是最简单的方法? 我必须使这与Windows默认消息框具有相同的外观和感觉。

可能禁用一个使用SetWindowsHookEx运行时间的钩子?

如果一个叫做SetWindowsHookEx的应用程序(例如我的,或者在一个外部的进程中)可以让我解开钩子? 请记住,不是我把钩子放在第一位,所以我没有任何一种variables或指向原始钩子的指针。

键盘钩在Windows C ++或什么?

我想build立我自己的应用程序,可以发送键盘命令(消息)到Windows操作系统。 例如,当我按ctrl + shit + n,我希望启动notepad.exe。 我怎样才能做到这一点? 你对我所使用的概念有一些build议吗? 我读过这是可能的时候使用键盘钩子? 这是唯一的方法? 你知道一个免费的和开源的应用程序,这可能是简单的吗?

Win32,如何在编译的程序中使用C ++挂钩函数?

拿这个function来说吧(在Ollydbgdebugging器中查看) 第一个PUSH EBP指令是void * f(int32_t n)(idk返回值,只是猜测void *)的开始,我知道input参数n在堆栈中,EBP + 8是指向该variables,我想这将是像int * n =(int *)(uint32_t(EBP)+ 0x08); / *假设EBP是void *和sizeof(EBP)== sizeof(uint32_t)== sizeof(void *),并且+8math在c ++ uint32_t和x86程序集中是相同的。* / 我想做一个钩子,它会检查n是否大于7或小于0,如果是,则将其更改为1.使用ollydbg,直接写入汇编代码,我可以这样做:修补第一个MOV EBP, ESP指令到JMP SHORT后面的INT3指令(我需要7个字节),然后将(未使用的)INT3改为MOV EBP,ESP JMP LONG 0068BCCD,其中0068BCCD是文件末尾未使用的0x000000000000 ,那么在0068BCCD,我可以写汇编代码来检查EBP + 8指向的int,并在必要时修改它: PUSHAD CMP DWORD PTR SS:[EBP+8],7 JA SHORT Error CMP DWORD PTR SS:[EBP+8],0 JL SHORT Error JMP SHORT Finished Error: PUSHAD PUSH […]