如何连接Youtube视频(Flash Player?)以减慢播放速度?

Jas*_*son 16 c# windows flash dll hook

我所知道的唯一一款可以在任何浏览器中减速和加速播放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
Run Code Online (Sandbox Code Playgroud)

根据这些注册表项的名称和值,我猜测MySpeed软件会挂钩列出的模块中的一些函数(但模块是否与DLL相同?)并且每个进程都这样做在ProgramsToHook中列出.这是我不明白的.MySpeed软件的概念是什么?显然这是挂钩的东西,但我不太熟悉Windows钩子的错综复杂,所以我来问你专家.我想如果我能理解这个钩子进程是如何工作的,我可以使用EasyHook制作我自己的软件版本,这是一个非常棒的.NET库来执行用户模式和内核模式钩子.

我认为Windows用户模式挂钩就是这样的.您在一个DLL中选择一个函数,并在一个您想要的进程中截取该函数(也称为钩子).如果要在多个进程中挂钩DLL,则只需为每个进程重复该过程.

然后内核模式挂钩只是在一个DLL中选择一个函数并在每个调用它的进程中拦截该函数(因此是内核模式).但肯定有很多方法可以勾选; 我不太确定这两个钩子和DLL注入之间的区别.

所以重点是,我想知道MySpeed是如何工作的.他们的挂钩概念是什么?如果我能知道这一点,那么我可以用.NET制作这样的软件!

提前致谢.

Ted*_*sen 3

我无法为您提供准确的解释,因为我不知道 API 调用或功能,但它是这样的:您的应用程序会查找 iexplore.exe,并在其中拦截对某些模块的调用。该模块主要是flash播放器。Flash 支持较慢地播放视频,因此您可以修改 iexplore.exe(网页上的 JavaScript 播放按钮)的调用,或进行额外的调用来设置播放速度。

你需要做什么:

  • 使用此工具检查实际发生的情况:http://www.nektra.com/products/deviare-api-hook-windows/
  • 了解如何要求 Flash Player 放慢视频速度(可能在 Flash API 文档中)。一种简单的方法可能是使用 Dviare API 挂钩工具查看 MySpeed 实际上正在做什么。
  • 编写一个程序来复制这个过程。它涉及拦截从一个句柄 (iexplore.exe) 发送到另一个句柄 (flash.dll) 的消息。这不能在外部完成,必须在内部完成,所以这可能会有所帮助: http: //www.codeproject.com/KB/threads/winspy.aspx

挂钩:http://msdn.microsoft.com/en-gb/library/ms644960.aspx

我认为没有多少人在 C# 中这样做过,所以它可能会带来挑战。如果你有博客或其他东西可以分享血淋淋的细节,我会对进展(障碍)感兴趣。:)

编辑: Deviare API Hook 软件似乎不仅可以监视调用,还可以让您拦截它们。因此,它是一款满足您需求的一体化套件。:)
EDIT2:相关问题:如何拦截发送到窗口的消息?