1

我已经将一个旧的 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 代码发表评论。是的,在一个完美的世界里,几年前就已经完成了转换。

4

0 回答 0