代码之家  ›  专栏  ›  技术社区  ›  est

16bit.com可执行文件可以调用win32 API吗?

  •  3
  • est  · 技术社区  · 15 年前

    有没有关于16bit.com在Windows上使用Win32 API显示窗口GUI的最小示例?

    3 回复  |  直到 9 年前
        1
  •  6
  •   Cactus    9 年前

    Win16->Win32

    CallProc32W

    • 呼叫 LoadLibraryEx32W() 加载Win32 DLL。
    • GetProcAddress32W() 获取DLL例程的地址。
    • 使用调用DLL例程 CallProc32W() CallProcEx32W .

    Code Example

    Concept

    Dos->Win32

    http://www.ragestorm.net/tutorial?id=27

        2
  •  4
  •   Ignacio Vazquez-Abrams    15 年前

    多路复用中断(中断0x2f)可用于从Windows内的DOS会话访问各种Windows功能,但它仅允许访问选定数量的功能;据我所知,没有一种API可以任意调用。

        3
  •  1
  •   SamB som-snytt    14 年前

    那不行。假设您的目标是制作一个可以在普通DOS或Windows中运行的程序,您有两个选项:

    HX PEstub 可执行文件上的工具,以允许它在DOS下运行。 其工作原理是将DOS存根替换为调用HX来加载和运行win32程序的存根。这种方法有两个缺点:

      • DPMILD32.EXE -PE二进制加载程序(由EXE上的DOS存根自动调用)

      • DKRNL32.DLL -模拟内核32.DLL

      • DUSER32.DLL -模拟USER32.DLL

      • HDPMI.EXE -DPMI服务器(如果尚未加载服务器,则由DPMILD32自动加载)

    这就引出了另一个选项:您可以自己编写win32应用程序及其DOS存根,并指示链接器使用您的存根而不是默认存根。例如,如果您使用MSVC构建win32应用程序,您将使用link.exe的 /STUB option

    1. 实际上,您必须编写两个不同的程序,尽管它们可以小心地共享源文件。