我所知道的唯一一款能够在任何浏览器中减速和加速播放YouTube视频的好软件,而且不需要先下载(因为那样会很麻烦)的是Enounce MySpeed。
不幸的是,这个软件不是免费的,我的试用版已经过期了。我在调试它的注册表设置时注意到了一些键:
ProgramsToHook: iexplore.exe;firefox.exe;plugin-container.exe;chrome.exe;safari.exe;opera.exe;maxthon.exe;feeddemon.exe;realplay.exe;flvplayer.exe;flv player.exe;flock.exe;adobe media player.exe
UseFlashAdapter: 1
LLModules: ole32.dll;nspr4.dll;chrome.exe;realplay.exe;objb3201.dll;oleaut32.dll;rpflashplayer.dll
ModulesToIntercept: flash10*;flash9*;npswf32.dll;gcswf32.dll;fldbg10*;flashplayer.3.1.1k.ocx;adobe media player.exe
基于这些注册表键的名称和值,我猜测MySpeed软件钩取了列出模块中的某些函数(但是模块和DLL是否相同?...)并为ProgramsToHook中列出的每个进程执行此操作。这就是我不理解的地方。MySpeed软件的概念是什么?显然它正在钩取某些东西,但我对Windows钩子的复杂性并不太熟悉,因此我来请教您这些专家。我认为,如果我能理解这个钩取过程的工作原理,我就可以使用EasyHook创建自己版本的软件,它是一个非常棒的.NET库,可执行用户模式和内核模式的钩子。
我认为Windows用户模式挂钩大致是这样的。您选择一个DLL中的一个函数,并在您想要的一个进程中拦截该函数(也称为钩子)。如果您想在多个进程中钩取DLL,则只需为每个进程重复该过程。
然后,内核模式挂钩只是选择一个DLL中的一个函数,并在调用它的每个进程中拦截该函数(因此是内核模式)。但是肯定有许多方法可以进行钩取;我不太确定这两种钩子和DLL注入之间的区别。
因此,关键是我想知道MySpeed的工作原理。他们的钩取概念是什么?如果我能知道这一点,那么我就可以在.NET中制作这样的软件!
提前感谢。