问题描述
通过java关闭win10资源管理器指定的文件夹窗口
问题出现的环境背景及自己尝试过哪些方法
程序遍历当前win10资源管理器中所有的句柄,匹配上地址栏(指定的文件夹)如果窗口被打开,则关闭
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
package com.yuntech.encryption;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinUser;
import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;
import com.sun.jna.win32.StdCallLibrary;
public class TryWithHWND {
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
boolean EnumWindows(WinUser.WNDENUMPROC lpEnumFunc, Pointer arg);
int GetWindowTextA(HWND hWnd, byte[] lpString, int nMaxCount);
}
public static void main(String[] args) {
final User32 user32 = User32.INSTANCE;
user32.EnumWindows(new WNDENUMPROC() {
int count = 0;
@Override
public boolean callback(HWND hWnd, Pointer arg1) {
byte[] windowText = new byte[512];
user32.GetWindowTextA(hWnd, windowText, 512);
String wText = Native.toString(windowText);
// get rid of this if block if you want all windows regardless of whether
// or not they have text
if (wText.isEmpty()) {
return true;
}
if(wText.contains("test")) {
System.out.println("testFolder:"+ wText);
}
System.out.println("Found window with text " + hWnd + ", total " + ++count
+ " Text: " + wText);
return true;
}
}, null);
}
}
最终解决方式: 务必注意 引入包的版本 jna-platform-5.5.0.jar jna-5.5.0.jar JKD1.8