C# 将另一个进程的窗口提前

C# 将另一个进程的窗口提前,c#,windows,winforms,winapi,C#,Windows,Winforms,Winapi,我有一个C遗留应用程序,这个应用程序随着时间的推移打开和关闭windows(它是一个服务器应用程序) 在同一台机器上,我正在运行一个C#winforms应用程序 我的目标是: 我的C#应用程序向我的C应用程序发送win32消息。C应用程序打开窗口。我想让新打开的C窗口出现在我的C#app前面 以下是当前的流程: C#向C发送win32消息 C接收,并打开新窗口 C.试图提出自己的看法 (我想知道C#是否应该告诉C‘把你自己带到我面前’) 编辑我已经完成了所有的事情,除了让C窗口以某种方式出现

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

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

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

以下是当前的流程:

  • C#向C发送win32消息
  • C接收,并打开新窗口
  • C.试图提出自己的看法
  • (我想知道C#是否应该告诉C‘把你自己带到我面前’)
编辑我已经完成了所有的事情,除了让C窗口以某种方式出现在前面的部分。我目前正在给C应用发送消息,它会打开新窗口(在相同.exe的所有其他窗口前面),但在我的C#应用下

我试过使用

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

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

您可以修改C应用程序吗?如果是,请调用C应用程序窗口句柄。或者,如果可以获得对C应用程序窗口句柄的引用,您也可以从C应用程序拨打此电话。

您可以修改C应用程序吗?如果是,请调用C应用程序窗口句柄。或者,如果你能获得C应用程序窗口句柄的引用,你也可以从C应用程序打这个电话。

你没有提到你使用的是什么操作系统,但通过一些搜索,我发现SetForegroundWindow显然并不总是在Windows 7上工作。描述了一种解决方法。也许你可以从那里得到一些想法,并将它们应用到C或C应用程序中,以获得一个有效的解决方案?

你没有提到你使用的是什么操作系统,但通过一些搜索,我发现SetForeGroundIndow显然并不总是在Windows 7上工作。描述了一种解决方法。也许你可以从那里得到一些想法,并将它们应用到C或C应用程序中,以获得一个有效的解决方案?

我已经编辑了你的标题。请看“,”其中的共识是“不,他们不应该”。非常不清楚。谁在呼叫SetForeGroundIndow?添加了编辑以解释此问题。要了解此问题,请阅读文档的备注部分,以
SetForeGroundIndow
:@DavidHeffernan It符合标准1。我的应用程序目前处于前台。我正在积极尝试推进一个不同的过程。我已经编辑了你的标题。请看“,”其中的共识是“不,他们不应该”。非常不清楚。谁在呼叫SetForeGroundIndow?添加了编辑以解释此问题。要了解此问题,请阅读文档的备注部分,以
SetForeGroundIndow
:@DavidHeffernan It符合标准1。我的应用程序目前处于前台。我正在积极尝试推进一个不同的过程。我很确定C应用程序已经调用了SetForeGroundIndow。问题是,它不会出现在C#app前面(注意,在我发送消息时,C#是放弃的应用程序),我很确定C应用程序已经调用了SetForegroundIndow。问题是,它不会出现在C#app前面(注意,在我发送消息时,C#是放弃的app)哈,你的链接已经失效,所以我看不出你提供的是不是解决方案。我的解决方案是三个步骤(目前正在挖掘代码)1)AllowSetForeGroundIndow,2)SetForeGroundIndow,3)SetActiveWindowHah,你的链接已断开,所以我看不出你提供的是不是解决方案。我的解决方案是三个步骤(目前正在深入研究代码):1)AllowSetForeGroundIndow,2)SetForeGroundIndow,3)SetActiveWindow