Vb在面板中打开.Exe文件?

时间:2013-11-15 05:55:55

标签: vb.net

所以这是我的问题?如何在面板中打开.exe文件? 我在用什么:Visual Studio。 我的问题:它打开表单外面的.exe文件,而不是将其放在面板中。 代码:

Public Class Form1
Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488
Dim proc As Process

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    proc = Process.Start("C:\WINDOWS\notepad.exe")
    proc.WaitForInputIdle()

    SetParent(proc.MainWindowHandle, Panel1.Handle)
    SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
End Sub

结束班

2 个答案:

答案 0 :(得分:0)

Pinvoke SetParent是如何做到的,但您可能无法获得某些应用所需的确切行为,并且并非所有应用都会加载此API。

答案 1 :(得分:0)

根据提供的其他信息,我建议采用不同的设计。你最好建立一个有按钮的应用程序,当你按下按钮时,你会向cnc应用程序发送一个按键。为方便起见,您可以将应用程序放在cnc应用程序旁边。

迫使另一个应用程序在您的应用程序内部运行是非常困难的,即使您可以使其运行,它也可能很脆弱。保持两个应用程序分开。 SetParent不是解决方案。

我建议你看看AutoHotKey,这是一个人们用来自动化各种事物的(免费)编程工具包。除此之外,AutoHotKey非常擅长模拟其他应用程序的击键(仅使用PostMessage / SendMessage就更复杂了。)

对于定位窗口,您应该能够编写一些自动将窗口定位在cnc应用程序旁边的代码,甚至可以跟踪cnc应用程序的移动并相应地移动窗口(如果你这样做会有点棘手)想要处理所有特殊情况,例如,如果没有足够的空间,将应用程序移动到不同的边缘。)