Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何区分程序’;用户界面和控制台窗口?_C#_Windows_User Interface_Console Application_Hotkeys - Fatal编程技术网

C# 如何区分程序’;用户界面和控制台窗口?

C# 如何区分程序’;用户界面和控制台窗口?,c#,windows,user-interface,console-application,hotkeys,C#,Windows,User Interface,Console Application,Hotkeys,我用c#编写了一个代码,它按名称获取进程,激活所需进程的窗口,并向该进程发送一些热键。问题是,所需的进程有两个窗口,一个控制台窗口和一个GUI窗口,因此有时GUI窗口被激活,一切正常,但有时控制台窗口被激活,什么也没有发生。所以我的问题是,有没有办法区分这个进程的GUI和控制台窗口,这样按程序就不会混淆,只激活GUI窗口 (激活是指将此进程的窗口置于前台,以便发送热键。我无法访问所需进程的代码,因此无法更改其启动方式)。您做错了。使用UI自动化。我认为如果任务非常复杂,UI自动化将非常有用。此外

我用c#编写了一个代码,它按名称获取进程,激活所需进程的窗口,并向该进程发送一些热键。问题是,所需的进程有两个窗口,一个控制台窗口和一个GUI窗口,因此有时GUI窗口被激活,一切正常,但有时控制台窗口被激活,什么也没有发生。所以我的问题是,有没有办法区分这个进程的GUI和控制台窗口,这样按程序就不会混淆,只激活GUI窗口


(激活是指将此进程的窗口置于前台,以便发送热键。我无法访问所需进程的代码,因此无法更改其启动方式)。

您做错了。使用UI自动化。我认为如果任务非常复杂,UI自动化将非常有用。此外,UIA发送简单热键的速度要慢得多。但是谢谢你的建议。“发送简单热键”测试你的应用程序中的代码路径,用户通过UI不会点击这些路径。如果要避免UI自动化,不妨完全跳过测试。你的“测试”不是在测试真实的东西。我没有做任何测试。我只想自动化一个简单的任务。问题是,有时我必须手动最小化控制台窗口,然后再试一次,以便gui窗口弹出。因此,如果您知道任何.NET c#方法来区分同一程序的两个窗口,请告诉我。假设您的进程还没有控制台,您可以通过连接到目标进程的控制台。然后调用以获取控制台窗口的句柄。最后,通过
FreeConsole
与控制台分离。对于.NET应用程序,您必须P/调用这些函数。