我有一个应用程序,我没有播放音频的源代码,但缺乏加速或暂时静音音频播放的工具。我正在尝试通过注入(inject)一个dll并HookwaveOutOpen、waveOutWrite(并分别阻止播放或尝试waveOutSetPlaybackRate以实现静音和加速)来添加这两个功能。但是我有几个问题。让我们先谈谈“静音”按钮,因为这是我的第一项业务:我将函数的Hook版本称为MyWaveOut...1)我可以毫无问题地挂接这些函数,并且我看到它们在dbgView日志语句中被调用。我的第一次尝试是只拦截waveOutWrite函数调用,如果我的“静音”按钮被按下,则只在MyWaveOutW
我的问题是关于Windows7的驱动程序开发。我需要拦截对驱动程序的系统调用。理论上,在这种情况下,建议创建一个过滤器驱动程序,但在我的例子中,该驱动程序不公开与过滤器兼容的接口(interface)。准确地说,它是一个Vista/7显示微型端口驱动程序。显示驱动程序作为标准WDM驱动程序加载。在它的DriverEntry中,它应该调用一个DxgkInitialize系统例程(我猜是由win32k.sys导出的)。我的目标是拦截此调用。任何人都可以建议我任何有用的资源,我可以找到有关如何实现此目标的信息吗?胜利的关键可能是将驱动程序可执行导入部分中的DxgkInitialize替换为我
我正在编写一个需要获取系统输入语言的应用程序,而应用程序窗口未聚焦。在谷歌搜索后,我发现这样做的方法是HookWM_INPUTLANGCHANGE消息。但是我找不到钩子(Hook)的语法示例。我找到了以下代码并尝试根据我的需要对其进行调整,但我失败了:编辑:我已将WM_KEYUP替换为WM_INPUTLANGCHANGE,但它不起作用。usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;usingSystem.Windows.For
请帮助我为AP.I函数GetSystemMetrics创建Hook。我希望当某些应用程序(例如calc.exe)调用GetSystemMetrics时,它们会收到我的值(例如500x500),而其他应用程序会获得正确的屏幕尺寸。如果有人能告诉我如何使用C#和.netCF2.0做到这一点,我将非常高兴。感谢并希望对您有所帮助。 最佳答案 我认为不编写任何native代码就不可能在C#/.NET中完成。不过,好消息是有一个非常好用的名为madCodeHook的库。看看http://madshi.net/
我目前正在编写一个允许滚动的应用程序,无需聚焦窗口。我已经做了什么:我创建了一个LowLevelMouseHook.如果LowLevelMouseProc收到MouseWheel消息,我将在光标位置搜索句柄并将滚动消息发送到该句柄。钩子(Hook)看起来像这样:LRESULTCALLBACKMouseHookCallback(intcode,WPARAMwparam,LPARAMlparam){if(code如您所见,如果消息是鼠标滚轮消息,我将返回-1。这应该避免滚动当前聚焦的窗口(我不想滚动聚焦的窗口,我想滚动光标悬停的窗口)。问题是,它不会取消滚动聚焦窗口。那么有没有人知道如何避
对于usb键盘配置工具,我需要拦截所有键盘输入并检测同时按下了哪些修改键和普通键。因此,我使用了一个Windows低级钩子(Hook)(WH_KEYBOARD_LL),它工作正常,除了我无法确定是否按下了WIN键(VK_LWIN/VK_RWIN)(control/shift和alt正在工作)。我做了一个小命令行工具来显示问题:#include#includeusingnamespacestd;HHOOKhKeyboardHook;LRESULTCALLBACKLowLevelKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){if(nCod
我在WindowsServer2008上安装了GitStack,并为给定的项目创建了一个裸存储库,我从本地开发环境将其推送到该存储库。我想设置一个Hook,使我的暂存环境在每次推送时自动merge推送的更改。我发布了一个以前的bash脚本,但现在已将其更新为以下内容:#!/bin/shexportGIT_WORK_TREE=F:\\inetpub\\project_name\\staging\\exportGIT_DIR=F:\\inetpub\\project_name\\staging\\.gitgitpulloriginmaster并得到以下错误信息:远程:bash.exe:警告
我有一个运行mysqldump的预提交Hook来跟踪MySQL。我正在尝试将该转储添加到提交中,但由于某些原因它不会。代码:#!/bin/shrm-fdatabase.sqlexec"C:\ProgramFiles\MySQL\MySQLServer5.5\bin\mysqldump.exe"--skip-comments-uroot--password=passwordmy-database>database.sqlgitadddatabase.sql文件已创建,但未添加到提交中。在Windows7上运行TortoiseGit。 最佳答案
我正在尝试编写一个键盘记录器,但在切换语言时遇到问题。我的键盘上有希伯来语和英语。它能很好地分别识别希伯来语和英语,问题是如果我改变language(alt+shift)所以它仍然是第一语言。代码:LRESULT__declspec(dllexport)__stdcallCALLBACKKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){charch;if(((DWORD)lParam&0x40000000)&&(HC_ACTION==nCode)){if((wParam==VK_SPACE)||(wParam==VK_RETURN)||(
我想问一个关于我一直遇到的问题的问题。我使用以下函数安装了一个WH_MOUSEHook:hMouseHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseHookProc,dllInstance,threadId);threadId是使用GetWindowThreadProcessId函数获得的。这是成功的,因为钩子(Hook)只在我想要的过程中起作用。dllInstance是从DllMain入口点获得的。值得一提的是,hMouseHook位于共享数据段(#pragmadata_seg(".shared"))。以下代码显示了在上述SetWindow