1

それで、ここに私の質問がありますか?パネルで .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

クラス終了

4

2 に答える 2

0

提供された追加情報に基づいて、別の設計を提案します。ボタンを持つ独自のアプリケーションを作成する方がよいでしょう。ボタンを押すと、cnc アプリケーションにキーストロークが送信されます。便宜上、cnc アプリケーションの隣にアプリケーションを配置できます。

アプリケーション内で別のアプリケーションを強制的に実行することは非常に困難であり、動作させることができたとしても脆弱である可能性があります。2 つのアプリケーションは別々に保管してください。 SetParent解決策ではありません。

あらゆる種類のものを自動化するために人々が使用してきた (無料の) プログラミング ツールキットであるAutoHotKeyを参照することをお勧めします。とりわけ、AutoHotKey は他のアプリケーションのキーストロークをシミュレートするのに非常に優れています (単純に PostMessage/SendMessage を使用するよりも複雑です)。

ウィンドウを配置するには、ウィンドウを cnc アプリケーションの隣に自動的に配置するコードを記述できる必要があります。また、cnc アプリケーションの動きを追跡して、それに応じてウィンドウを移動することもできます (十分なスペースがない場合にアプリケーションを別のエッジに移動するなど、すべての特殊なケース)。

于 2013-11-15T06:31:44.010 に答える