我已经使用Java Swing工具箱创建了一个桌面窗口,该窗口已打开,并且要求使用Java代码关闭该窗口。
窗口可以是:文件浏览器窗口,也可以是您可以考虑在计算机上打开的任何窗口。
答案 0 :(得分:0)
我了解到,您想关闭Windows系统上的本机窗口。
如果这意味着要杀死底层进程,那么您可以按照另一个答案中几乎A所假设的那样使用taskkill。
如果您真的想只关闭一个窗口而不终止后面的过程,则需要一种不同的方法:
Java应用程序在Java虚拟机中运行,因此它们具有自己的虚拟环境,而Java框架不提供此类方法。
(Java框架也是跨平台的,在操作系统上,如何获取和关闭此窗口有所不同。)
我从未使用过Java Native Interface(https://docs.oracle.com/javase/7/docs/technotes/guides/jni/index.html),但据我了解,可以用来编写本机代码,然后从Java VM中执行本机代码。
或者找到一个正在执行此操作的小型工具,然后通过ProcessBuilder / Process / Runtime类执行该外部工具,可能要简单得多(我不知道这样的工具,但是周围可能有这样的工具。用户界面测试工具也许可以做到这一点以及更多!而且在...附近有自动化工具
背后的技术思想:Windows应用程序具有消息队列,您可以使用API对其进行访问。因此,您可以将消息发送到Windows(以及Windows内部的控件)以执行某些操作,例如关闭。
可以在user32.dll / winuser.h中找到该API:
FindWindow函数,例如:https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-findwindowa ->您可以使用该函数获取句柄,然后将其用于下一个函数。
CloseWindow:https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-closewindow
如果您找不到要启动的现有命令行收费,也许您可以使用现有的包装程序(例如CProject上的CWindow)快速编写.Net应用程序:https://www.codeproject.com/Articles/25925/CWindow-A-wrapper-class-for-the-window-API-functio
也许有点复杂,但这是我所知道的控制窗口的方式。
答案 1 :(得分:-1)
我假设您正在使用Windows操作系统。您可以执行命令行指令:
Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"<your command>\"");
例如,关闭Firefox浏览器(通过杀死进程):
Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"taskkill /F /IM firefox.exe\"");
有关关闭特定浏览器窗口的命令的线程: https://superuser.com/questions/1263315/how-to-close-a-particular-opened-folder-using-cmd-or-batch-file
或者,您可以使用命令来杀死指定的进程(就像上面显示的示例一样): https://www.windows-commandline.com/taskkill-kill-process/