问题标签 [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 投票
3 回答
8195 浏览

wpf - 为 WPF 中的所有元素事件添加侦听器

我想在一次调用中挂钩所有可用的元素事件。像这样的一些事情:

我怎样才能做到这一点?

0 投票
4 回答
5073 浏览

c# - 禁用特定 GDI 设备上下文的抗锯齿

我正在使用第三方库将图像渲染到 GDI DC,并且我需要确保在没有任何平滑/抗锯齿的情况下渲染任何文本,以便我可以将图像转换为具有索引颜色的预定义调色板。

我用于渲染的第三方库不支持此功能,仅根据当前的窗口设置来渲染文本以​​进行字体渲染。他们还表示,他们不太可能很快增加关闭抗锯齿功能。

到目前为止,我发现的最好的解决方法是以这种方式调用第三方库(为简洁起见,省略了错误处理和先前的设置检查):

这显然对操作系统产生了可怕的影响,每次我渲染图像时,其他应用程序都会从​​启用清除类型闪烁到禁用并返回。

所以问题是,有谁知道我可以如何更改特定 DC 的字体渲染设置?

即使我可以只使更改过程或线程特定而不影响整个操作系统,那将是向前迈出的一大步!(这将使我可以选择将此渲染输出到一个单独的进程 - 无论如何渲染后结果都会写入磁盘)

编辑:我想补充一点,我不介意解决方案是否比几个 API 调用更复杂。如果只需要一天的工作,我什至会对涉及挂钩系统 dll 的解决方案感到满意。

编辑:背景信息 第三方库使用大约 70 种颜色的调色板进行渲染。将图像(实际上是地图图块)渲染到 DC 后,我将每个像素从它的 32 位颜色转换回它的调色板索引,并将结果存储为 8bpp 灰度图像。这作为纹理上传到视频卡。在渲染期间,我使用在视频卡上执行的像素着色器重新应用调色板(也存储为纹理)。这让我可以立即在不同的调色板之间切换和淡入淡出,而无需重新生成所有需要的图块。为典型的世界视图生成和上传所有图块需要 10-60 秒。

编辑:将 GraphicsDevice 重命名为 Graphics 这个问题的先前版本中的 GraphicsDevice 类实际上是 System.Drawing.Graphics。我重命名了它(使用 GraphicsDevice = ...),因为有问题的代码位于命名空间 MyCompany.Graphics 中,编译器无法正确解析它。

编辑:成功! 我什至设法PatchIatMarshal.GetFunctionPointerForDelegate. .NET 互操作团队确实做得非常出色!我现在使用以下语法,其中Patch的扩展方法是System.Diagnostics.ProcessModule

0 投票
0 回答
4466 浏览

c++ - Linux中的全局键盘挂钩?

如何在 Ubuntu (Linux) 中编写全局键盘钩子(如 Windows 的 Hook)

在 C/C++ 或 Python 中

0 投票
2 回答
4203 浏览

svn - 发布提交挂钩以更新版本下的文件

我制作了一个名为 version.ini 的文件,该文件受版本控制(/trunk/version.ini)我现在想制作一个提交后挂钩以使用最新版本更新该文件。但我不知道什么命令可以做到这一点。我知道我有这个参数:

但是如何在不进行新修订的情况下替换该文件的内容?我的回购中还有这些变化吗?

更新:因为也许我还不清楚,我会尝试更详细的解释:假设我有这个 repo:/svn/repos/project/trunk/,其中我有一个名为 version.ini 的文件,它受版本控制。我想要做的是在每次提交时将该文件更新为新版本。假设当前版本为 263,我希望该文件中写入 263。并且要回复下面的答案,您不能使用关键字,因为它们仅在我更新该文件并且我不想这样做时才起作用。

希望我有道理,并感谢您提供的任何帮助。干杯

0 投票
3 回答
2092 浏览

flash - AS3,挂钩您的活动

有没有人有挂钩事件的经验。所以我们可以修改那里的行为而不改变它的初始值。

因此,假设我们想要修改每次单击某组菜单按钮的行为,如果单击它们,您将在调用原始回调之前等待 30 秒。

我正在开发一个项目,该项目将在现有 Air 应用程序之上创建一个层,该层将允许 Manage 以允许小额支付的方式构建,以实现对某些功能的完全访问。

我的猜测是使用挂钩来捕获您的事件,因此我们不必编辑我们的应用程序,只需扩展它即可。(如果我错了,请纠正我:-))我

0 投票
1 回答
511 浏览

svn - 从 SVN 预提交挂钩运行 NArrange

我正在尝试使用以下命令从 SVN 预提交挂钩执行NArrange :

它返回错误:“挂钩脚本返回错误:”

有没有人在抢救?

编辑:这个钩子是 tortoisesvn 客户端钩子。

0 投票
8 回答
13488 浏览

svn - svn update 在提交后不起作用

我正在尝试实现一个提交后挂钩来更新工作副本。据我所知,post commit hook 正在运行(我在文件中写了一些东西来验证它)但更新命令没有运行。

一开始我是

但这不起作用,然后我读到您必须提供 svn 的完整路径:

但它仍然无法正常工作。

我将权限更改为 777 并在一个空的环境中运行了脚本......并且它可以工作。

0 投票
2 回答
1972 浏览

svn - 寻找一个安全的 SVN 远程更新 post-commit 钩子

我正在与其他一些开发人员一起使用开发、登台、生产服务器环境。

现在我们进行更改,在我们的开发服务器(个人计算机)上测试它们,然后一旦我们对更改感到满意并希望将它们展示给客户端或内部审查,我们将更改提交到存储库并通过 samba 更新登台服务器的工作副本(tortoiseSVN) 或 ssh。

这变得非常乏味和重复。我希望有一个提交后挂钩更新远程登台服务器,但唯一的选择似乎涉及在 SSH 挂钩中硬编码用户凭据或使用用户帐户创建网络挂载。有没有办法将用户身份验证从初始提交传递到登台服务器以进行更新或任何其他建议?

欢迎使用其他设置解决方案。

0 投票
2 回答
1556 浏览

c - PostMessage 和 CALLWNDHOOK,缺少已注册的消息?

这是情况。我有两个不同的窗口挂钩,一个是 WH_SHELL 品种的全局挂钩,用于监视新的顶级窗口,第二个是 WH_CALLWNDPROC 的线程挂钩,它设置在第一个发现的一些顶级窗口上钩。这两个钩子在不同的 DLL 中实现。

据我所知,两个挂钩都安装正确。但是,我没有使用消息代码 > WM_USER将注册消息发布到挂钩窗口,而自定义 WH_CALLWNDPROC 挂钩从未处理过注册消息,但是“正常”的窗口消息正在传递,认为它很好。

挂钩已发现窗口的代码:

钩子本身的主体:

第一个报告调用是确认钩子已安装并正在工作,因为它在十几岁和二十几岁时发回了一堆消息(ERASEBACKGROUND、PAINT 等)。

CUSTOM_MESSAGE 定义为 WM_USER + 314。用于 Report(...) 的消息是 WM_USER + 317。

我已经更新了我的代码以使用 RegisterWindowMessage 来获取要发送的 UINT,我使用 WM_USER 进行进程间通信是不正确的。

所以,基本上,我的设计或我对 Windows 挂钩和 PostMessage 的使用有什么问题?如果我遗漏了任何细节,请告诉我;涉及很多代码,这已经是一个相当大的问题,所以我试图只包括我认为相关的内容。

顺便说一句,是否有一致同意的更好的方法来调试钩子?我一直在通过将消息发布到商定的窗口并调试其 WndProc 来使用与 cout << ... 所有内容的道德等价物。

谢谢,
-凯文·蒙特罗斯

0 投票
3 回答
3102 浏览

c# - 如何将相对鼠标移动发送到另一台电脑

我捕获 Windows 鼠标移动事件并计算相对鼠标移动以将其发送到另一台电脑。到目前为止一切顺利,效果很好。

但是,如果我阻止发送鼠标坐标(客户端)的屏幕上的鼠标移动或到达屏幕的一侧,则 Windows api 会触发第二个鼠标事件,该事件会将鼠标弹回。

我的第一个想法是记录相对运动并忽略每一个“倒转”运动。但我正在寻找更好的方法。

首先我打电话:

现在我启动应用程序并将鼠标移动到左上角方向。我只想接收负增量,但会发生这种情况: