C# 如何区分程序’;用户界面和控制台窗口?
我用c#编写了一个代码,它按名称获取进程,激活所需进程的窗口,并向该进程发送一些热键。问题是,所需的进程有两个窗口,一个控制台窗口和一个GUI窗口,因此有时GUI窗口被激活,一切正常,但有时控制台窗口被激活,什么也没有发生。所以我的问题是,有没有办法区分这个进程的GUI和控制台窗口,这样按程序就不会混淆,只激活GUI窗口C# 如何区分程序’;用户界面和控制台窗口?,c#,windows,user-interface,console-application,hotkeys,C#,Windows,User Interface,Console Application,Hotkeys,我用c#编写了一个代码,它按名称获取进程,激活所需进程的窗口,并向该进程发送一些热键。问题是,所需的进程有两个窗口,一个控制台窗口和一个GUI窗口,因此有时GUI窗口被激活,一切正常,但有时控制台窗口被激活,什么也没有发生。所以我的问题是,有没有办法区分这个进程的GUI和控制台窗口,这样按程序就不会混淆,只激活GUI窗口 (激活是指将此进程的窗口置于前台,以便发送热键。我无法访问所需进程的代码,因此无法更改其启动方式)。您做错了。使用UI自动化。我认为如果任务非常复杂,UI自动化将非常有用。此外
(激活是指将此进程的窗口置于前台,以便发送热键。我无法访问所需进程的代码,因此无法更改其启动方式)。您做错了。使用UI自动化。我认为如果任务非常复杂,UI自动化将非常有用。此外,UIA发送简单热键的速度要慢得多。但是谢谢你的建议。“发送简单热键”测试你的应用程序中的代码路径,用户通过UI不会点击这些路径。如果要避免UI自动化,不妨完全跳过测试。你的“测试”不是在测试真实的东西。我没有做任何测试。我只想自动化一个简单的任务。问题是,有时我必须手动最小化控制台窗口,然后再试一次,以便gui窗口弹出。因此,如果您知道任何.NET c#方法来区分同一程序的两个窗口,请告诉我。假设您的进程还没有控制台,您可以通过连接到目标进程的控制台。然后调用以获取控制台窗口的句柄。最后,通过
FreeConsole
与控制台分离。对于.NET应用程序,您必须P/调用这些函数。