在 VB.NET 中的面板内运行进程 [英] Running process inside a panel in VB.NET

查看:27
本文介绍了在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆