如何捕获Windows消息?

时间:2012-02-09 01:12:30

标签: windows vb6 16-bit win64

我正在制作一个名为Pwn16的程序。它允许16位应用程序通过模拟Intel 8086 / Pentium处理器和DOS / Win3.x / Win98系统在64位系统上运行。 Pwn16使用一个小型加载程序来检测Windows何时给出“非16位兼容”消息(包括来自CMD的消息),并且当它注意到所述消息被召唤时,它将关闭它,而是自动启动Pwn16。  是否有任何库可以让我“捕获”这些消息并用其他方法代替错误?我在VB6中完成了大部分工作,所以任何可以做到这一点的代码也会有所帮助。我有仿真和GUI,我只需要完成它就可以完成它。 我需要捕获的消息:

“此文件的版本与您正在运行的Windows版本不兼容。请检查计算机的系统信息,以确定是否需要x86(32位)或x64(64位)版本的程序,然后联系软件发行商。“

“不支持的16位应用程序:由于与64位版本的Windows不兼容,程序或功能'(文件)'无法启动或运行。请与软件供应商联系,询问64位Windows兼容版本是否为可用“。

“这不是一个有效的Win32应用程序。”

“(文件)应用程序无法在Win32模式下运行。”

感谢。

1 个答案:

答案 0 :(得分:2)

据我所知,Explorer和cmd.exe都没有事先检查可执行文件的有效性。相反,他们调用CreateProcess,如果失败,请查看返回的错误代码。

因此,如果您hook调用CreateProcess(或者the underlying native API),您应该能够捕获返回到Explorer / cmd.exe /的错误代码,而不是做任何事情。< / p>

我不认为捕获呈现给用户的消息会有所帮助。除了检查每个对话框所涉及的低效率,以及写入每个控制台的每一段文本,看它是否包含您正在寻找的消息,您将如何识别用户试图运行的文件? / p>

相关问题