问题标签 [hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
7798 浏览

.net - Hooking into Windows with C# to Produce Windows 7 New Feature

I just saw a really useful UI feature of the forthcoming Windows 7 ( visit http://www.gizmodo.com.au/2008/10/windows_7_walkthrough_boot_video_and_impressions-2.html and scroll down to the video entitled Super Scientific Video of New Window Resizing Feature)

In a nutshell you can drag a window by the title bar to the top of the screen to maximise it, drag it back down to restore and drag it to the left edge or the right edge of the screen to have it snap into position butted up against the edge you dragged it to, and resized to occupy half the screen.

Now I know there are a bunch of keyboard-based apps that do "similar" things but I've not seen a mouse-based program that does JUST the above, simple, useful and nothing more. If you know of one (or are smart enough to write one) please post the URL :)

Anyway, if I wanted to try and write a small app to do this I have a question:

If I wanted to try and write a small app to do this, could I write it as a .NET app? I guess hooking into Windows' window drag/drop handling is pretty low-level and maybe not something that could be done in C#.NET?

any smartypants here who can knock a small app like this out in their lunchbreak? ;) I'm sure anything mimicing Windows 7 features would prove very popular, at least pre Windows 7's launch.

Edit: The AeroSnap guys (http://www.aerosnap.de/index_eng.htm) have done a nice job of implementing this feature and judging by the number of downloads, it was a popular feature!

0 投票
7 回答
9318 浏览

svn - Subversion 挂钩不永久接受证书

我希望有人能够回答我的问题。

我设置了 Subversion,由 Apache2+SSL 提供服务,进行 Web 开发。

我想要一个在我的测试服务器上运行 svn update 的提交后挂钩,所以当有人提交时,它会自动更新测试站点。该钩子不起作用,因为证书是自生成的并且不受信任。

我试图永久地接受(p),但事实并非如此。

有任何想法吗?

0 投票
2 回答
1056 浏览

linux - 在 Linux 上从用户空间挂钩 sycall

有什么方法可以捕获 Linux 上的所有系统调用?我知道的唯一解决方案是使用 LD_PRELOAD à la fakeroot,但这仅适用于动态链接的应用程序。此外,这种方法需要枚举所有系统调用,这是我想避免的。

0 投票
1 回答
5270 浏览

windows - 在锁定或解锁 Windows XP 时运行脚本

我有一台 Windows XP 机器和一台运行 Ubuntu 的 Linux 机器。我通过Synergy从 Windows 机器共享键盘/鼠标。我想做的是在我锁定/解锁 Windows 机器时锁定/解锁 Linux 机器。

所以我希望能够在 Windows 锁定或解锁屏幕时运行一些描述的脚本。

0 投票
0 回答
810 浏览

windows - 如何在 Windows 全局范围内检测拖动操作?

当我在 Windows XP 中拖动屏幕边缘的文件夹时,它会变成一个工具栏,其中包含文件夹中的文件。

windows如何检测到有拖动操作?

如果我想编写一个应用程序来检测系统范围内的拖动操作,我该怎么做?

还有一个问题:如何禁用这个 Windows XP 功能,真的很烦人。

0 投票
5 回答
4729 浏览

windows - 挂钩进程

有谁知道像SpyStudio这样的工具来挂钩进程?我想拥有的功能是:

  • 记录对其他进程的函数调用
  • 图形用户界面
  • 可编写脚本
  • 开源

我已经看过一些工具,例如:

但没有一个真正让我完全满意。

0 投票
5 回答
5299 浏览

windows - 我必须做什么才能使我的 WH_SHELL 或 WH_CBT 挂钩程序接收来自其他进程的事件?

我正在尝试使用SetWindowsHookEx设置WH_SHELL挂钩来获取系统范围HSHELL_WINDOWCREATEDHSHELL_WINDOWDESTROYED事件的通知。我为最后一个dwThreadId参数传递了 0,根据文档,它应该“将钩子过程与在与调用线程相同的桌面上运行的所有现有线程相关联”。我还将参数传递给我的 DLL(HInstance在 Delphi 中)的句柄,hMod就像我查看的所有示例一样。

然而,我只收到由我自己的应用程序创建的窗口的通知,而且 - 通常情况下 - 我的测试导致桌面进程在我关闭我的应用程序后陷入困境。在你问之前,我会打电话UnhookWindowsHookEx。我也总是CallNextHookEx从我的处理程序中调用。

我正在从一个有限的用户帐户运行我的测试应用程序,但到目前为止,我还没有发现任何暗示这会起作用的提示......(虽然这实际上让我感到惊讶)

AFAICT,我按照书本做了所有事情(显然我没有,但到目前为止我看不到在哪里)。

我正在使用 Delphi (2007),但我认为这并不重要。

编辑:也许我之前应该提到这一点:我确实下载并尝试了几个示例(尽管不幸的是,Delphi 没有那么多可用的示例 - 特别是WH_SHELLor没有WH_CBT)。虽然它们不会像我的测试应用程序那样使系统崩溃,但它们仍然不会捕获来自其他进程的事件(即使我可以使用 ProcessExplorer 验证它们是否可以正常加载到它们中)。因此,我的系统配置似乎有问题,或者示例错误,或者根本无法从其他进程捕获事件。任何人都可以启发我吗?

EDIT2:好的,这是我的测试项目的来源。

包含挂钩过程的 DLL:

以及使用钩子的应用程序的主要形式:

0 投票
5 回答
967 浏览

operating-system - 全局键盘挂钩的合法用途是什么?

除了只能由操作系统提供的应用程序启动快捷方式之外,Windows 键盘挂钩之类的东西的合法用途是什么?在我看来,我们只遇到键盘记录器之类的问题,因为操作系统提供了挂钩来执行除 O/S 内核本身之外的任何情况下任何人都不应允许的事情。

编辑:好的,所以考虑到一些可能需要它们的合法地方,操作系统不应该提供高级别的能力来全局关闭它们,并且只允许逐个程序的异常吗?

0 投票
4 回答
70173 浏览

dll - 监视对 DLL 的应用程序调用

简而言之:我想监视从应用程序到 DLL 的选定调用。

我们有一个旧的 VB6 应用程序,我们丢失了它的源代码(当时公司没有使用源代码控制......)。此应用程序使用第 3 方 DLL。

我想在一个新的 C++ 应用程序中使用这个 DLL。不幸的是,DLL API 只是部分记录,所以我不知道如何调用一些函数。我确实有函数签名。

由于 VB6 应用程序使用了这个 DLL,我想看看它是如何调用几个函数的。到目前为止,我已经尝试或看过 -

  1. APIHijack - 要求我为每个函数编写 C++ 代码。由于我只需要记录这些值,这似乎是一种矫枉过正。
  2. EasyHook - 与 1 相同,但允许使用 .NET 语言编写代码。
  3. OllyDbguHooker - 我仍然需要为每个函数编写代码,这次是在 Python 中。此外,我必须使用该struct模块在 Python 中进行许多转换,因为大多数函数使用指针传递值。

因为我只需要记录函数参数,我想要一个简单的解决方案。是否有任何自动化工具,我可以告诉我要监控哪些功能及其签名,然后获取详细的日志文件?

0 投票
2 回答
4680 浏览

svn - 颠覆钩子

我正在一个项目中工作,其中有配置文件,每个部署应用程序的环境都有一个。

当开发人员修改其中一个文件时,不应允许开发人员单独签入文件,而是将所有文件一起签入,或者至少应通知开发人员需要这样做。

我们怎样才能实现它?