我已将旧的vb6应用编译成dll。最终我们将转换为.NET但是现在我正在尝试从DLL加载表单。到目前为止,我已经能够在.NET中加载和查看vb6表单,但我无法激活控件。所以下面代码中的setparent正在工作,但sendmessage和后面的代码不是。顺便说一句,在调试模式下,一切正常。只有当我使用编译的dll时才会出现问题。
我的声明是:
Private Shared Function SetParent(ByVal hWndChild As IntPtr, _
ByVal hWndNewParent As IntPtr) As Int32
End Function
Public Declare Auto Function SendMessage Lib "user32.dll" ( _
ByVal hWnd As IntPtr, _
ByVal wMsg As Int32, _
ByVal wParam As Int32, _
ByVal s As String _
) As Int32
Private Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As IntPtr
End Function
Private Shared Function LockWindowUpdate(ByVal hwndLock As IntPtr) As Boolean
End Function
我使用的代码如下:
SetParent(mintFormHandle, Me.Handle.ToInt32)
SendMessage(mintFormHandle, WM_ACTIVATE, 1, IntPtr.Zero)
SetForegroundWindow(mintFormHandle)
LockWindowUpdate(0)
Me.Refresh()
请不要评论旧的vb6代码。是的,在一个完美的世界中,转换几年前就会完成。