我正在开发一个程序,它通过使用kernel32 API中的ReadProcessMemory和WriteProcessMemory,在运行时修改另一个win32程序。
我还想支持那些通过使用wine在* nix平台上运行target.exe的人,但我不能简单地在wine中运行editor.exe - GUI是在WPF中实现的,这是葡萄酒不支持的。
我不想在WinForms或MFC(由wine支持)中重新实现GUI,而是为* nix生成本机GUI,使用QT或GTK for Linux,以及Cocoa for Mac。
我的问题是关于winelib,这似乎是为了帮助将win32程序移植到* nix。使用winelib,程序被编译为* nix可执行文件,但可以访问win32 API,并继续依赖wine环境来提供系统资源,例如注册表。
根据WineHQ introduction page,使用winelib编译的程序也可以访问* nix API,this in-depth wiki page讨论使用本机API而不是基于葡萄酒的API。在某种程度上,使用winelib编译的程序在win32中只有一英尺,在* nix中只有一英尺。
程序是否可以使用winelib而仅呈现* nix gui,没有葡萄酒呈现的窗口或控制台?我真的只需要访问ReadProcessMemory,WriteProcessMemory和一些Toolhelp32Snapshot函数(用于查找target.exe进程)。我相信所有这些都存在于kernel32.dll中。