1

私はC#とプログラミングが初めてです。プロセスが異なる 2 つのアプリがあり、1 つのアプリのメソッドを別のアプリからできるだけ簡単に呼び出せるようにする必要があります。メソッドを呼び出すだけで、データなどを交換する必要はありません。私はそれについてググった。パイプのようにさまざまな方法があることは知っていますが、最も単純なものが必要です。次のようなメッセージを送信できることもわかりました。

const uint WM_COPY = 0x301;

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, uint uMsg, int wParam, int lParam);

Process p = Process.GetProcessesByName("appname").FirstOrDefault();
if(p != null)
{
    IntPtr hWnd = p.MainWindowHandle;
    SendMessage(hWnd, WM_COPY , 0, 0);
}

そして、私はこのコードでメッセージを受け取ることができました:

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_COPY)
    {
        //my code
    }
    else
    {
        base.WndProc(ref m);
    }
}

しかし問題がある。メッセージを受信するアプリにはフォームがなく、単なるプロセスです。this.Hide() を使用したため、MainWindowHandle は機能しません。

非表示のフォームでアプリにメッセージを送信することはできますか? それとも、2 番目のアプリでメソッドを呼び出すためのより良い方法がありますか? ありがとう。

4

1 に答える 1

1

さて、あなたがする必要があるのがパラメータなしで単一のメソッドを呼び出すことだけであるならば、最も簡単なのは名前付きMutexを作成し、それを呼び出しプロセスから設定し、受信プロセスからチェックすることです。

もっと手の込んだものが必要な場合は、WCFをご覧ください。

于 2012-06-10T06:59:03.303 に答える