我有一个C Legacy应用程序,这个应用程序随着时间的推移打开和关闭窗口(它是一个服务器应用程序)。
在同一台机器上,我正在运行一个C#winforms应用程序。
这是我的目标: 我的C#app向我的C app发送win32消息。 C应用程序打开窗口。我想让新打开的C窗口显示在我的C#app前面。
目前的流程如下:
编辑我已经完成了所有工作,除了我得到C窗口以某种方式出现的部分。我目前向C应用程序发送消息,它会打开新窗口(在同一个.exe的所有其他窗口之前),但是在我的C#app下。
我尝试过使用
[DllImport("user32.dll")]
static extern bool AllowSetForegroundWindow(ServerWindowHandle);
但是没有运气。我是否需要让我的C应用程序拥有我的.net应用程序的“所有权”? C#app正在通过programinvoke启动。
答案 0 :(得分:1)
你可以修改C应用吗?如果是这样,请在C app窗口句柄上调用SetForegroundWindow。或者,如果您可以获得对C app窗口句柄的引用,则可以从C#应用程序进行此调用。
答案 1 :(得分:0)
您没有提到您正在使用的操作系统,但通过一些搜索我发现SetForegroundWindow显然并不总是在Windows 7上工作。解决方法描述为here。也许您可以从那里获取一些想法并将它们应用于C或C#应用程序以获得可行的解决方案?