.net - 从 C# 应用程序控制其他窗口

标签 .net windows showwindow

我正在编写一个 C# 应用程序,它将聚合对多个应用程序(WMP、Google Earth 等)的控制。对于不是我自己编写的应用程序,我作为一个进程启动,所以我有它们的句柄(我相信 handle = Process.Start("C:\whatever.exe"); 是代码)。

为了使其顺利运行,我需要能够控制每个窗口的最小化/最大化状态,包括我使用 Process.Start() 启动的窗口。我见过几种声称可以做到这一点的方法,通常需要导入 user32.dll 并应用 ShowWindow(handle, state)。

我问两个问题。这是最好的方法吗?我是 .NET/Windows 编程的新手(来自 *nix)。此外,我还无法让它工作,所以有什么怪癖会吸引新手吗?

(仅供引用:Windows 7 RTM 上的 VS 2008)

最佳答案

如果您正在寻找窗口的句柄,则获取进程的句柄可能是错误的句柄。

在我使用 VB6 的时候,我使用的库可以让你通过它们的标题找到窗口,然后你可以从那里将消息传递给 min/max/close/activate 等,但是自从迁移到 .Net 之后我没有做过类似的事情,尽管我确定 .Net 存在相同类型的库

回复评论:
是的,我看到有一个 GetMainWindowHandle 属性,所以这是向下的一步。接下来您需要查看 Windows 消息传递,这是您发送“消息”以执行各种 Windows 操作的地方。我手边没有消息代码,但是一旦您知道每条消息的代码,它就相当简单了。

关于.net - 从 C# 应用程序控制其他窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545332/

相关文章:

c# - 如何快速而可靠地确定是否安装了 Visual C++ 2013 Runtime

c# - "access to disposed closure"在这里是什么意思?

linux - Powershell 结果到 Elasticlogsearch 和 Kibana 仪表板

windows - 如何解锁 Windows 锁屏?

c++ - WinApi中的GetClientRect和GetWindowRect有什么区别?

c++ - ShowWindow 替代方案

.net - 我可以使用发布定义将多个逻辑应用部署到特定环境吗?

.net - 为什么不升级到最新的 .NET 框架?