Tag: hook

从文件句柄中获取文件名?

我将ntdll.dll的NtCreateFile()函数挂钩以允许/拒绝某些文件的访问。 与kernel32.dll的CreateFile()不同,它很容易为您提供相关文件的完整路径,ntdll.dll的NtCreateFile()函数只为您提供文件的句柄。 我需要从文件句柄获取文件的完整路径,从而允许/拒绝访问。 我一直在搜索,似乎没有一个有效的C#解决方案。 此解决方案使用C ++编写,并在Microsoft中进行了记录。 我试图将它移植到C#并没有太大的成功。 这是我尝试C#等效的C ++版本“从文件句柄获取文件名”: public string GetFileNameFromHandle(IntPtr FileHandle) { string fileName = String.Empty; IntPtr fileMap = IntPtr.Zero, fileSizeHi = IntPtr.Zero; UInt32 fileSizeLo = 0; fileSizeLo = GetFileSize(FileHandle, fileSizeHi); if (fileSizeLo == 0 && fileSizeHi == IntPtr.Zero) { // cannot map an 0 byte file return String.Empty; } fileMap = CreateFileMapping(FileHandle, […]

如何从进程开始捕获所有应用程序/窗口消息?

我试图弄清楚如何捕获进程/窗口的所有窗口消息,从它在c#中启动的时间开始。 这个过程不是我自己的,所以我需要使用某种钩子。 我的目标是从初始窗口创建之前实时捕获所有消息到应用程序退出并将所有消息输出到文本框或文件。 所以基本上从应用程序执行的那一刻起。 因为我想从它发布的时候捕获它,我可能没有窗口句柄,因为它们将无法处理。 所以我觉得它可能很棘手。 他们的应用程序是否可以用于参考? 我只想要来自应用程序的所有消息。

如何将C#dll注入另一个进程

任何人都知道如何创建C#DLL然后将它们注入另一个进程(而不是.net)并执行我的代码,覆盖现有方法?

DLL中的HOOK C#方法

我有C#应用程序从DLL调用SUM()函数。 我想在DLL中挂钩该SUM()函数,并通过将我的DLL注入C#应用程序的过程来操作指令。 请回复。

钩子闪光应用程序

如果我在我的C#应用​​程序中加载一个打开带有服务器B的套接字的闪存应用程序A,是否可以设置本地挂钩以便我可以读取A和服务器B之间交换的数据包? 如果需要,我可以获得flash应用程序源代码,但我不是那些编写它们的人 我是C#的新手(说实话,我仍然想知道为Windows编写这种应用程序的最佳语言)和挂钩,所以任何一个例子都会非常感激:) 我在客户端工作

在Windows XP中使用SetWindowsHookEx时出错,但在Windows 7中没有

我开发了一个使用全局键盘/鼠标钩子的应用程序。 它在Windows 7中运行良好,但在Windows XP中运行不佳。 当我在Windows XP中调用SetWindowsHookEx时,收到错误代码1428 int MouseLowLevel = 14 int code = SetWindowsHookEx(MouseLowLevel, MouseHookProc, IntPtr.Zero, 0); private IntPtr MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) {}

.NET事件 – 阻止订阅者订阅事件

假设我有一个暴露事件的“处理器”接口 – OnProcess。 通常,实现者进行处理。 因此,我可以安全地订阅此事件,并确保它将被解雇。 但是一个处理器不进行处理 – 因此我想阻止订户对其进行处理。 我能这样做吗? 换句话说,在下面的代码中,我希望最后一行抛出exception: var emptyProcessor = new EmptyProcessor(); emptyProcessor.OnProcess += event_handler; // This line should throw an exception.

如何在另一个应用程序中挂钩api调用

我试图挂钩另一个应用程序的ExtTextOut和DrawTextExt GDI方法调用。 我知道我需要使用GetProcAddress来查找gdi32.dll中这些方法的地址,并覆盖我想要挂钩我的函数地址的进程中的地址。 然后在我的函数中,我做我需要的,然后调用原始函数。 我想让这个钩子function可用于.net应用程序,显然这可以通过创建一个“中间”非托管dll来实现挂钩,并且能够在.net端触发事件,以便新的function可以在托管环境中下注。 我只是不确定如何实现这一点。 有没有人有任何代码示例或信息链接?

C# – 挂钩到现有的COM对象

假设我们有一个现有的进程(或应用程序)从ocx文件调用COM对象,例如“MyCOMLibrary.ocx”。 有没有办法编写一个C#库来完全复制ocx文件? 这样原始应用程序可以调用您的C#代码而不是原始COM对象? 当然,您必须使用相同的CLSID和ProgID作为原始ocx。 假设没有涉及签名,例如.Net世界中的SNK。 此外,是否有任何工具可以实现自动化? 接受ocx的东西并使用要实现的方法吐出C#文件。 编辑:我想补充说原始应用程序是VB6,并且根本不使用.Net。 他们最有可能将ocx加载为VB6 app(ProgId或Guid)。 这会导致任何问题吗? 完全重写ocx我们也没有问题 – 我们很可能只返回所有方法的成功错误代码,并且只使用我们的情况所需的方法/事件。 编辑:你会认为这不会太难实现。 我们可以创建一个可以替换旧ocx的VB6 ocx文件,并将所有调用传递给.Net程序集吗? 编辑:我尝试使用以下开源库: EasyHook 但似乎这个问题应该仍然可行。 VB6似乎以防止挂钩的方式加载COM对象。 我没有看到使用EasyHook在类/接口或类的构造函数上挂钩实例方法的方法。

如何知道键盘在文本输入上是否处于活动状态

我有一个像屏幕键盘一样的应用程序,我需要它知道键盘光标(插入符号)是否在任何位置处于活动状态,因此键盘将设置为活动状态。 我搜索了键盘钩子和winapi,但我找不到合适的方法。 为了简化我的问题,如果用户可以按真实键盘并在计算机上打印文本,我需要激活我的应用程序。