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

windows-mobile - 挂钩 WM6 声音

如何连接到窗口移动声音(驱动程序?)并在将数据传递到扬声器时读取数据?

0 投票
1 回答
3565 浏览

c++ - SetWindowsHookEx、KeyboardProc 和非静态成员

我正在创建一个键盘钩子,其中 KeyboardProc 是 CWidget 类的静态成员。

我想在 CWidget::KeyboardProc 中调用 CWidget 的非静态成员。

最好的方法是什么?

KeyboardProc 没有任何 32 位 DWORD,我可以在其中传递“this”指针。

0 投票
2 回答
4650 浏览

c++ - 键盘挂钩...没有得到小写或大写字符

下面的函数正在记录“0”、“z”和“1” ok...但它没有捕获“Z”(shift-z)...任何帮助将不胜感激...

0 投票
5 回答
7212 浏览

perl - 我怎样才能挂钩到 Perl 的打印?

这是一个场景。你有大量的遗留脚本,都使用一个公共库。所述脚本使用“打印”语句进行诊断输出。不允许对脚本进行任何更改——它们的范围很广,得到了他们的批准,并且早已离开了富有成效的监督和控制谷。

现在一个新的需求出现了:现在必须将日志记录添加到库中。这必须自动且透明地完成,标准库的用户无需更改他们的脚本。公共库方法可以简单地添加日志调用;这是容易的部分。困难在于这些脚本的诊断输出总是使用“打印”语句显示。必须存储此诊断输出,但同样重要的是,必须对其进行处理。

作为这种处理的一个例子,库应该只记录包含单词“警告”、“错误”、“通知”或“注意”的打印行。下面的非常琐碎和人为的示例代码(tm)将记录一些所说的输出:

(我想避免诸如“实际应该记录什么”、“打​​印不应该用于诊断”、“perl 很烂”或“这个例子有 xy 和 z 的缺陷”之类的问题......这是为了简洁明了,大大简化了。)

基本问题归结为捕获和处理传递给打印(或任何 perl 内置,沿着这些推理)的数据。是否可以?有什么办法可以干净利落的吗?是否有任何带有钩子的日志记录模块可以让你做到这一点?还是像瘟疫一样应该避免,我应该放弃捕获和处理打印输出?

附加:这必须跨平台运行 - windows 和 *nix 一样。运行脚本的过程必须保持不变,脚本的输出也必须保持不变。

附加附加:在codelogic的回答的评论中提出的一个有趣的建议:

您可以继承http://perldoc.perl.org/IO/Handle.html并创建自己的文件句柄来完成日志记录工作。– 卡米尔·基塞尔

这可能会做到这一点,但有两个警告:

1)我需要一种方法将此功能导出给使用公共库的任何人。它必须自动适用于 STDOUT,也可能适用于 STDERR。

2) IO::Handle文档说你不能子类化它,到目前为止我的尝试都没有结果。使子类化 IO::Handle 工作需要什么特别的东西吗?标准的 'use base 'IO::Handle' 然后覆盖 new/print 方法似乎什么都不做。

最终编辑:看起来 IO::Handle 是一个死胡同,但 Tie::Handle 可能会这样做。感谢所有的建议; 他们都很好。我要试试 Tie::Handle 路线。如果它引起问题,我会回来的!

附录:请注意,在处理了这个之后,我发现 Tie::Handle 可以工作,如果你不做任何棘手的事情。如果您将 IO::Handle 的任何功能与绑定的 STDOUT 或 STDERR 一起使用,那么让它们可靠地工作基本上是一个废话——我找不到让 IO::Handle 的 autoflush 方法在我的绑定上工作的方法处理。如果我在绑定手柄之前启用了自动冲洗,它会起作用。如果这对您有用,则 Tie::Handle 路线可能是可以接受的。

0 投票
3 回答
623 浏览

c++ - 防止无形应用程序因键盘挂钩而关闭

我正在开发一个涉及键盘挂钩的 c++ win32 程序。该应用程序是一个没有任何用户界面的 win32 项目。我需要阻止应用程序关闭而不使用导致挂钩不起作用或耗尽大量系统资源。我曾经使用消息框,但我需要应用程序完全不可见。

任何帮助,将不胜感激!

如果你有问题,就问吧。

0 投票
2 回答
1831 浏览

visual-studio - Visual Studio 附加到进程

这个工具是如何使用的?不是调试器,我的意思是工具 > 附加到进程。

这是否意味着我能够将 DLL 动态链接到另一个应用程序,或者我的想法远不止于此?

0 投票
1 回答
4393 浏览

c# - 带有 C# 和 WPF 的键盘挂钩,用于最小化系统托盘应用程序

我有一个 WPF 应用程序,我通过 this.Hide() 和 System.Windows.Forms.NotifyIcon 将其最小化到系统托盘。当它最小化时,我想要一个键盘钩子最大化应用程序。例如,如何注册像 Windows-Button & T 这样的键盘钩子。

谢谢。

0 投票
2 回答
460 浏览

svn - SVN 中是否可以使用 CVS 样式的结帐挂钩?

我们正在从 CVS 迁移到 SVN,据我所知,SVN 没有结帐挂钩。在 CVS 中,post checkout 操作是-o在模块文件中定义模块时使用选项定义的。这种行为在 SVN 中可能吗?

0 投票
1 回答
255 浏览

winapi - 在整个 Windows 中替换一个 Window 类

我需要替换整个 Windows 中的预定义窗口类之一。例如,我想替换“EDIT”类,以便在任何 Windows 程序CreateWindowEx以“EDIT”作为类名参数调用时使用我自己的自定义编辑框。

我怎样才能做到这一点?消息挂钩会有帮助吗?我相信在这种情况下,消息挂钩会带来过多的开销。我的替代方案是什么?

0 投票
4 回答
29587 浏览

svn - Using SVN post-commit hook to update only files that have been committed

I am using an SVN repository for my web development work. I have a development site set up which holds a checkout of the repository.

I have set up an SVN post-commit hook so that whenever a commit is made to the repository the development site is updated:

This works fine but due to the size of the repository the updates take a long time (approx. 3 minutes) which is rather frustrating when making regular commits. What I'd like is to change the post-commit hook to only update those files/directories that have been committed but I don't know how to go about doing this. Updating the "lowest common directory" would probably be the best solution, e.g.

If committing the follow files:

  • /branches/feature_x/images/logo.jpg
  • /branches/feature_x/css/screen.css

It would update the directory: /branches/feature_x/

Can anyone help me create a solution that achieves this?

Update:

  • The repository and development site are located on the same server so network issues shouldn't be involved.
  • CPU usage is very low, and I/O should be ok (it's running on hi-spec dedicated server)
  • The development site is approx. 7.5GB in size and contains approx. 600,000 items, this is mainly due to having multiple branches/tags