我试图无形地启动一个外部exe(我创建了一个,如果需要我可以修改它)然后使用我的表单中的setparent将接口无缝地交换到一个图片框中。除了在运行shell后在我的表单中出现的简短焦点/非焦点/焦点问题之外,这很有用。我正在传递vbNormalNoFocus,它似乎没什么帮助。我正在启动的外部exe是标准exe,可见性设置为false。
任何人都可以推荐一种解决方案或完全不同的方法吗?
Dim ConvertTwipsToPixelX As Long
Dim ConvertTwipsToPixelY As Long
Dim a As String
counter = counter + 1
'Launch external exe
Pid = Shell(app.path & "\myexe.exe", vbNormalNoFocus)
'Get handle
mWnd = InstanceToWnd(Pid)
'Create container
Set pic = Me.Controls.Add("VB.Picturebox", "Picture" & counter)
pic.BackColor = RGB(255, 255, 255)
'Swap instance into new container
SetParent mWnd, pic.hwnd
ConvertTwipsToPixelX = Form1.ScaleWidth / Screen.TwipsPerPixelX
ConvertTwipsToPixelY = Form1.ScaleHeight / Screen.TwipsPerPixelY
'Move it
pic.Move 0, 800, Form1.ScaleWidth, Form1.ScaleHeight
Call SetWindowPos(mWnd, pic.hwnd, 0, 0, ConvertTwipsToPixelX, ConvertTwipsToPixelY, SWP_NOZORDER Or SWP_SHOWWINDOW)
'Make it visible
pic.Visible = True