Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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
如何在java中获取所有windows元素的类/标题/句柄_Java_Class_Spy++ - Fatal编程技术网

如何在java中获取所有windows元素的类/标题/句柄

如何在java中获取所有windows元素的类/标题/句柄,java,class,spy++,Java,Class,Spy++,我正在尝试创建一个类似于java中spy++的应用程序,在这个应用程序中,我可以获得鼠标所控制的每个元素的类/标题/句柄。 e、 g: 如果我们在任务栏上移动鼠标,spy工具会将信息显示为:Handle:000100AA标题:Running applications Class:MSTaskListWClass 如果我们将鼠标放在windows计算器的一个按钮上(比如说“1”),间谍工具将显示标题:1 我已经获得了具有以下代码的前景窗口: GetWindowTextW(GetForeground

我正在尝试创建一个类似于java中spy++的应用程序,在这个应用程序中,我可以获得鼠标所控制的每个元素的类/标题/句柄。 e、 g:

  • 如果我们在任务栏上移动鼠标,spy工具会将信息显示为:Handle:000100AA标题:Running applications Class:MSTaskListWClass
  • 如果我们将鼠标放在windows计算器的一个按钮上(比如说“1”),间谍工具将显示标题:1
  • 我已经获得了具有以下代码的前景窗口:

    GetWindowTextW(GetForegroundWindow(), buffer, MAX_TITLE_LENGTH);
    
    和进程名称:

    Pointer process = OpenProcess(PROCESS_QUERY_INFORMATION
                    | PROCESS_VM_READ, false, pointer.getValue());
            GetModuleBaseNameW(process, null, buffer1, MAX_TITLE_LENGTH);
    

    但我仍然无法获得按钮/文本框的标题和类。请帮助做同样的事情。

    以下答案适用于鼠标单击事件

    用于处理全局鼠标单击事件。当用户单击时,找出前景窗口及其位置

    您必须创建一个具有本机winapi调用的dll。然后将此dll加载到java程序中

  • 首先使用jnativehook获取全局鼠标位置
  • 找到该控件的句柄
  • 从把手上取下(&D)

  • Java是一个非常糟糕的选择,因为您需要大量的本机代码。欢迎使用堆栈溢出。如果您展示您尝试过的(代码),我们会更喜欢它。请参阅,以获取指导。我已经获得了前台窗口和进程ID的名称。但要在鼠标上方的活动窗口中检索每个按钮/文本框或任何元素的标题。如果我们在任务栏上移动鼠标,间谍工具将信息显示为:Handle:000100AA标题:Running applications Class:MSTaskListWClass