2017-11-05 15 views
2

こんにちは私は韓国初心者の開発者です。C#フォームパネルに他のプログラムを開く

私は作っています。プログラム。プログラムは3つのexe(C++で開発されたC#)を1つの形式で実行し、プログラムをパネルに挿入します。

私はこのプログラムをC++や他の言語でパネルに入力しました。ただし、C#で構築されたWindowsプログラムはパネル上に保持されません。 は、ここに私のコードの一部です:私は今、二つのパネルを使用していた

[DllImport("user32.dll")] 
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 
    [DllImport("user32.dll")] 
    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 

    [DllImport("user32.dll")] 
    static extern bool MoveWindow(IntPtr Handle, int x, int y, int w, int h, bool repaint); 

    static readonly int GWL_STYLE = -16; 
    static readonly int WS_VISIBLE = 0x10000000; 


    private void Form1_Load(object sender, EventArgs e) 
    { 

     try 
     { 
      Process p = Process.Start("C:\\Users\\sonmi\\OneDrive\\Japan_Bunge_alpha\\Japan_Bunge_alpha\\bin\\Debug\\Japan_Bunge_alpha"); //C# program 
      Process p2 = Process.Start("C:\\Users\\sonmi\\Desktop\\astana_test\\astana\\Server\\Server_CES"); //C++ program 

      p.WaitForInputIdle(); 

      Thread.Sleep(100); 
      SetParent(p.MainWindowHandle, this.Handle); 
      SetWindowLong(p.MainWindowHandle, GWL_STYLE, WS_VISIBLE); 
      MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, true); 


      p2.WaitForInputIdle(); 
      SetParent(p2.MainWindowHandle, panel2.Handle); 
      SetWindowLong(p2.MainWindowHandle, GWL_STYLE, WS_VISIBLE); 
      MoveWindow(p2.MainWindowHandle, 0, 0, panel2.Width, panel2.Height, true); 


     } 

が、このテストが終わった後、私はより多くを追加します。 問題がどこにあるか分かりません。

+0

あなたの 'catch'ブロックには何がありますか?何かエラーがありますか?管理者として試してみましたか? – derloopkat

答えて

0

C#アプリケーションでは、アプリケーションを現在のAppDomainに読み込んでライブラリのように扱うことができます。そのためのプロジェクト参照に追加してください。どのように初期化してパネルに組み込むかは、参照されるアプリケーションがどのように設計されているかによって異なります。

そのアプリケーションのメインフォームを自分で初期化し、そのように親を設定しなければならない場合があります。

+0

本当に?私は今それを試してみましょう!どうもありがとうございました。あなたが呼び出すexeプログラムは、コードなしで大丈夫ですか? –

+0

アセンブリが難読化されていない場合は、コードなしでこれを行うことができます。そうであれば、いくつかの問題にぶつかるかもしれません。 http://ilspy.net/を使用して、Main関数が何をしているのか、アプリケーションからロードする必要があるものを特定します。 –

+0

OKそれを試してみてください!ありがとうございました –

関連する問題