工作中的另一位开发人员告诉我,由于某些特定于 Visual Basic 6 应用程序的原因,它无法工作。
但我认为只要包含正确的 DLL 和运行时文件,它就应该可以工作,VB6 不是编译成机器代码吗?
编辑:我的意思是一般来说应该是可能的。只要没有人给我一个理论上的理由它不会起作用,我将在几天内对其进行实际测试。
编辑 2:我认为开发人员指的是 P 代码,vb6 可以选择编译为,而不是在类似于 .Net 框架(或前身)的虚拟机下运行的二进制文件。
我在 Ubuntu 下的 Wine 中测试了一个大型 VB6 应用程序。事件 msi 安装程序工作正常。在低级实现细节方面存在一些问题(例如,在 CDRF_NOTIFYITEMDRAW 阶段的 NM_CUSTOMDRAW 中,hDC 文本默认情况下不像 Windows 通用控件那样透明)。所以是的,即使是大量子类化的东西也可以。我只需要解决那些小故障。
这是一个检查应用程序是否在 wine 下运行的函数
Property Get IsWine() As Boolean
IsWine = (GetProcAddress(GetModuleHandle("kernel32"), "wine_get_unix_file_name") <> 0)
End Property
看看这个http://appdb.winehq.org/objectManager.php?sClass=application&iId=7361
看起来你可以让大多数 VB6 程序工作。