2010-02-08 60 views
2

是否有任何方法可以使用C++安装系统范围的ShellExecute挂钩,而无需在每个活动进程中注入挂钩模块。我使用Windows 7 我为了这个目的,因为,我希望能够选择当一个链接打开使用ShellExecute的默认浏览器的链接打开在浏览器中,像这样:全系统ShellExecute挂钩?

ShellExecute(NULL, "open", "http://stackoverflow.com", NULL, NULL, SW_SHOWNORMAL); 
+1

系统范围_means_在每个过程中。 ?? – 2010-02-09 00:09:28

+0

是的,每个过程。 – 2010-02-09 16:35:22

回答

2

SetWindowsHookEx的最后一个参数需要一个线程ID - 如果这是NULL,则该过程将与调用线程所在的桌面中的所有线程相关联,否则与特定线程相关联。

了解更多:Using Hooks

+0

这是被接受的答案,但我仍然没有看到'SetWindowsHookEx'如何钩住'ShellExecute'。最接近这个的可能是'WH_SHELL',这也不能说明是否已经调用了ShellExecute。 – SMUsamaShah 2017-05-03 06:05:11