2012-06-10 172 views
1

我是C#和編程新手。我有2個不同流程的應用程序,我需要儘可能簡單地調用另一個應用程序的方法。我不需要交換數據或其他任何東西,只需要調用一個方法即可。我搜索了一下。我知道有很多不同的方式像管道,但我需要最簡單的一種。我還發現,我可以發短信是這樣的:我該如何從一個應用程序調用另一個應用程序?

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不起作用。

是否可以將消息發送到隱藏表單的應用程序?或者也許有更好的方法來調用第二個應用程序的方法?謝謝。

回答

1

好吧,如果你需要做的是調用不帶參數的所有單一方法,最簡單的是創建一個名爲Mutex,從調用進程設置和接收過程進行檢查。

如果您需要更詳細的內容,請看WCF

+1

即使是最簡單的交流,我也會去參加WCF – DoomerDGR8

+0

您能舉一些使用互斥體的例子嗎?非常感謝 – irondsd

相關問題