1

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

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

这是我的目标:我的 C# 应用程序向我的 C 应用程序发送 win32 消息。C 应用程序打开窗口。我希望新打开的 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 启动。

4

2 回答 2

1

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

于 2012-11-21T19:54:46.330 回答
0

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

于 2012-11-21T20:17:24.537 回答