草庐IT

windows - 我需要 Hook 什么进程 API 来跟踪服务?

当Windows中的服务或应用程序启动、停止以及它是成功退出还是出现错误代码时,我需要跟踪日志。据我了解,许多服务不会记录自己的开始和停止时间,或者如果它们正确退出,所以似乎要走的路必须在API中插入一个钩子(Hook),以便在服务/应用程序请求时捕获处理空间并放弃它。我的问题是我需要hook什么函数才能完成这个,这有可能吗?我需要它在64位WindowsXP和7上工作。 最佳答案 我认为最好的办法是使用设备驱动程序。参见PsSetCreateProcessNotifyRoutine.

windows - 如何将批处理文件作为 Tortoise SVN Hook 执行

我希望通过TortoiseSVNHook脚本在START提交或PRE提交中运行批处理文件。我所做的测试均无效。我已经创建了一个批处理文件(svnadd.bat),它现在只是将消息写入文本文件,所以我知道它被触发了。但是,批处理文件似乎没有运行,因为没有写入消息。echoYES>C:\Temp\commit.txt这是我的Hook设置。我的过程。右键单击受svn版本控制的文件夹,然后选择SVN提交。提交对话框显示,但是批处理文件没有执行。svn控制下的所有svn软件、存储库和文件夹/文件结构都驻留在同一台计算机/驱动器上。根据屏幕截图,我还尝试将cmd.exe添加到命令行的前面作为C:\

c++ - 全局 Shell Hook 只注册本地事件

我正在尝试使用全局shellHook来监听窗口创建和销毁的事件,但似乎我的程序只是为本地线程注册销毁的事件。根本没有创作事件,而且绝对不是我认为应该是的全局事件。我花了最后一天时间搜索google以及codeguru、codeproject和msdn,但在我看来我做对了,尽管我显然不是。谁能帮我指出正确的方向?#pragmadata_seg(".SHARE")HWNDhWndServer=NULL;HHOOKg_shell_hook=NULL;#pragmadata_seg()#pragmacomment(linker,"/section:.SHARE,RWS")TASKBAR_API

windows - 从 Windows 窗体读取文本

如果不是出于学术练习的其他原因,我希望能够阅读写入Windows应用程序表单的文本。该程序似乎是用非.NET编写的,但在.NET术语中,我认为您会将程序描述为具有带有标签的表单,我想从该标签中读取文本。我相信我可以看到使用User32!TextOut(以及其他区域的User32!DrawString)函数将文本写入屏幕。但是,如果我不必Hook该函数来获取我正在寻找的信息,而是直接从表单中读取它,那就太好了。那么,给定一个窗口的句柄,是否可以使用一些类似的API或其他巧妙的方法,使用TextOut和DrawString等函数读取写入该窗口的文本?还是我的做法不对?我是否应该只hook函

c# - 从 WH_KEYBOARD_LL Hook 中向窗口发送消息

我知道如果用户设置了像中文这样的键盘布局,很难将WH_KEYBOARD_LL消息转换成相应的unicode字符,但我仍然想完成我的多语言应用程序。正如我在originalquestion中提到的为什么我使用WH_KEYBOARD_LLHook并不重要,我尝试了其他东西,这是最适合我的应用程序的东西。问:我可以将我的hookproc中的WH_KEYBOARD_LL消息床发送到另一个原本指定的窗口吗?这样做的好处是(如originalquestion的回答3中所述)如果我将此消息发送到包含编辑框的窗口,也许这会将其转换为写入unicode字符,我可以从那里获取它。

c - 通过 Hook 调用在 Windows 进程中加速或静音音频播放

我有一个应用程序,我没有播放音频的源代码,但缺乏加速或暂时静音音频播放的工具。我正在尝试通过注入(inject)一个dll并HookwaveOutOpen、waveOutWrite(并分别阻止播放或尝试waveOutSetPlaybackRate以实现静音和加速)来添加这两个功能。但是我有几个问题。让我们先谈谈“静音”按钮,因为这是我的第一项业务:我将函数的Hook版本称为MyWaveOut...1)我可以毫无问题地挂接这些函数,并且我看到它们在dbgView日志语句中被调用。我的第一次尝试是只拦截waveOutWrite函数调用,如果我的“静音”按钮被按下,则只在MyWaveOutW

Windows 7驱动 Hook

我的问题是关于Windows7的驱动程序开发。我需要拦截对驱动程序的系统调用。理论上,在这种情况下,建议创建一个过滤器驱动程序,但在我的例子中,该驱动程序不公开与过滤器兼容的接口(interface)。准确地说,它是一个Vista/7显示微型端口驱动程序。显示驱动程序作为标准WDM驱动程序加载。在它的DriverEntry中,它应该调用一个DxgkInitialize系统例程(我猜是由win32k.sys导出的)。我的目标是拦截此调用。任何人都可以建议我任何有用的资源,我可以找到有关如何实现此目标的信息吗?胜利的关键可能是将驱动程序可执行导入部分中的DxgkInitialize替换为我

c# - 输入语言 Hook

我正在编写一个需要获取系统输入语言的应用程序,而应用程序窗口未聚焦。在谷歌搜索后,我发现这样做的方法是HookWM_INPUTLANGCHANGE消息。但是我找不到钩子(Hook)的语法示例。我找到了以下代码并尝试根据我的需要对其进行调整,但我失败了:编辑:我已将WM_KEYUP替换为WM_INPUTLANGCHANGE,但它不起作用。usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;usingSystem.Windows.For

c# - Hook API 函数 GetSystemMetrics

请帮助我为AP.I函数GetSystemMetrics创建Hook。我希望当某些应用程序(例如calc.exe)调用GetSystemMetrics时,它们会收到我的值(例如500x500),而其他应用程序会获得正确的屏幕尺寸。如果有人能告诉我如何使用C#和.netCF2.0做到这一点,我将非常高兴。感谢并希望对您有所帮助。 最佳答案 我认为不编写任何native代码就不可能在C#/.NET中完成。不过,好消息是有一个非常好用的名为madCodeHook的库。看看http://madshi.net/

c++ - 捕捉屏保事件

我正在尝试捕捉屏幕保护程序事件。这是我的代码:#include"stdafx.h"#include#include"stdio.h"#includeHHOOK_hook;LRESULTCALLBACKHookCallback(intnCode,WPARAMwParam,LPARAMlParam){if(nCode>=0){LPMSGmsg=(LPMSG)lParam;if(msg->message==WM_SYSCOMMAND){if(msg->wParam==SC_SCREENSAVE){std::cout函数SetWindowsHookEx(WH_GETMESSAGE,HookCa