2012-11-21 81 views
1

我有一個C遺產應用程序,這個應用程序隨着時間的推移(它的服務器應用程序)打開和關閉窗口。帶來另一個進程的窗口

在同一臺機器上,我正在運行一個C#winforms應用程序。

這是我的目標: 我的C#應用​​程序發送我的C應用程序一個win32消息。 C應用程序打開窗口。我希望新打開的C窗口在我的C#應用​​程序的前面展現出來。

這是目前的過程:

  • C#發送的Win32消息到C
  • C接收,並打開新的窗口
  • Ç企圖將自身向前
  • (我想知道在這一點,如果C#應該告訴C'讓自己在我面前')

編輯除了C窗口以某種方式來到前面的部分,我已經完成了一切。我目前正在向C應用程序發送消息,並且它會打開新窗口(在同一個.exe的所有其他窗口的前面),但在我的C#應用​​程序下。

我使用

[DllImport("user32.dll")] 
static extern bool AllowSetForegroundWindow(ServerWindowHandle); 

嘗試,但沒有運氣吧。我是否需要讓我的C應用程序擁有我的.net應用程序的「所有權」? C#應用程序通過programinvoke啓動。

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

很不清楚。誰在調用SetForegroundWindow? –

+0

添加編輯,希望解釋。 – greggorob64

回答

0

您沒有提及您使用的是什麼操作系統,但通過一些搜索,我發現SetForegroundWindow顯然不總是在Windows 7上工作。解決方法描述爲here。也許你可以從那裏採取一些想法,並將它們應用於C或C#應用程序以獲得工作解決方案?

+0

我會試一試並回來,謝謝。 – greggorob64

+0

你沒有回來@ greggorob64;) – NullAndVoid

+0

哈,你的鏈接已經死了,所以我看不出你提供的是解決方案。 我的解決方案是三個步驟(現在通過代碼挖掘) 1)AllowSetForegroundWindow,2)SetForegroundWindow,3)SetActiveWindow – greggorob64

1

你可以修改C程序嗎?如果是這樣,請在C應用程序窗口句柄上調用SetForegroundWindow。或者,如果您可以獲得對C應用程序窗口句柄的引用,則可以從C#應用程序進行此調用。

+0

我很確定C應用程序已經調用SetForegroundWindow。問題在於它沒有把自己帶到C#應用程序的前面(注意C#是我發送消息時的forground應用程序) – greggorob64

相關問題