sendmessage和从.net应用程序激活vb6表单的问题

时间:2013-10-28 15:51:18

标签: vb.net api vb6 migration vb6-migration

我已将旧的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代码。是的,在一个完美的世界中,转换几年前就会完成。

0 个答案:

没有答案