带来另一个进程的窗口

时间:2012-11-21 19:46:07

标签: c# windows winforms winapi

我有一个C Legacy应用程序,这个应用程序随着时间的推移打开和关闭窗口(它是一个服务器应用程序)。

在同一台机器上,我正在运行一个C#winforms应用程序。

这是我的目标: 我的C#app向我的C app发送win32消息。 C应用程序打开窗口。我想让新打开的C窗口显示在我的C#app前面。

目前的流程如下:

  • C#向C
  • 发送win32消息
  • C接收并打开新窗口
  • C试图让自己前进
  • (我现在想知道C#应该告诉C'让自己在我面前')

编辑我已经完成了所有工作,除了我得到C窗口以某种方式出现的部分。我目前向C应用程序发送消息,它会打开新窗口(在同一个.exe的所有其他窗口之前),但是在我的C#app下。

我尝试过使用

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

但是没有运气。我是否需要让我的C应用程序拥有我的.net应用程序的“所有权”? C#app正在通过programinvoke启动。

2 个答案:

答案 0 :(得分:1)

你可以修改C应用吗?如果是这样,请在C app窗口句柄上调用SetForegroundWindow。或者,如果您可以获得对C app窗口句柄的引用,则可以从C#应用程序进行此调用。

答案 1 :(得分:0)

您没有提到您正在使用的操作系统,但通过一些搜索我发现SetForegroundWindow显然并不总是在Windows 7上工作。解决方法描述为here。也许您可以从那里获取一些想法并将它们应用于C或C#应用程序以获得可行的解决方案?