在 VB.NET 中的面板内运行进程 [英] Running process inside a panel in VB.NET
本文介绍了在 VB.NET 中的面板内运行进程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法在 vb.net 的面板内运行 jar(或任何其他进程)文件?
Is there any way run a jar (or any other process) file inside a panel in vb.net?
我正在尝试这样的事情:
I am trying something like this:
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Threading
Public Class FGRUPOS
<DllImport("user32.dll")> Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
End Function
Private Sub FGRUPOS_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim p As Process
p = Process.Start("java.exe", "-jar processo.jar")
Threading.Thread.Sleep(500)
SetParent(p.MainWindowHandle, panel1.Handle)
End Sub
End Class
但它不起作用.
推荐答案
下面的代码(来自 vb.net 在表单内启动应用程序) 可以解决问题:
The code bellow (from vb.net Launch application inside a form) does the trick:
Public Class FGRUPOS
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
Friend Sub Rodar_Processo()
Dim p As System.Diagnostics.Process
p = Process.Start("notepad.exe")
p.WaitForInputIdle()
SetParent(p.MainWindowHandle, pnGrupo.Handle)
SendMessage(p.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
Me.BringToFront()
End Sub
End Class
这篇关于在 VB.NET 中的面板内运行进程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文