相关疑难解决方法(0)

在Java中获取活动窗口信息

我正在尝试使用Java升级我的应用程序,只有在具有特定名称的进程窗口处于活动状态时才能工作.我发现使用JNI可以实现这一点,但我不知道究竟是怎么做到的.我找不到任何可以解释它的描述或例子.我的问题是 - 如何在Windows中获取当前活动窗口的进程名称(通过JNI或其他任何方式 - 我接受任何其他解决方案)?

java java-native-interface jna

30
推荐指数
2
解决办法
2万
查看次数

使用Python在Mac OS X中查找当前活动窗口

有没有办法在Mac OS X上使用Python在给定时间找到当前活动窗口的应用程序名称?

python macos cocoa objective-c

20
推荐指数
3
解决办法
2万
查看次数

使用JNA获取GetForegroundWindow();

我在之前的一个帖子(/sf/ask/364464341/)上问了一个类似的问题,但我被引导使用JNI,而我我没有取得多大成功...我已经阅读了一些教程,虽然有些工作正常,但其他人却没有,我仍然无法获得我需要的信息,这是前景窗口的标题.

现在我正在研究JNA,但我无法弄清楚如何访问GetForegroundWindow()...我想我可以使用此代码(在另一个线程上找到)获取窗口句柄后打印文本:

import com.sun.jna.*;
import com.sun.jna.win32.*;

public class jnatest {
    public interface User32 extends StdCallLibrary {
        User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);

        int GetWindowTextA(PointerType hWnd, byte[] lpString, int nMaxCount);
    }

    public static void main(){
        byte[] windowText = new byte[512];

        PointerType hwnd = //GetForegroundWindow() (?)...
        User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512);
        System.out.println(Native.toString(windowText));

    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

java windows winapi jna

10
推荐指数
2
解决办法
1万
查看次数

如何使用C/java检测活动应用程序?

我想记录活动应用程序并保存活动应用程序的历史记录.我说活动应用程序,因为如果我运行一个应用程序并且它被最小化等,我不会将它视为活动应用程序.为了使我的问题更清楚,让我们来看看这个例子.我打开Firefox并在网上冲浪20分钟.然后我打开一个文本编辑器并开始写5分钟(Firefox正在运行,但我不使用它,因此Firefox不应被视为活动应用程序).所以我应该能够记录以下信息:

Firefox -> 20 minutes 
Text editor -> 5 minutes
Run Code Online (Sandbox Code Playgroud)

我希望在操作系统(首选Linux)期间跟踪每个使用过的应用程序,并创建一个开源应用程序,说明您使用每个应用程序的数量.

更新:我要记录的应用程序是用户在显示器上看到并正在使用的应用程序.例如,你可以改变窗口大小,你可以看到Firefox和文本编辑器(在不同的工作空间,级联等),但是你在文本编辑器中键入,因此,文本编辑器是积极的应用.换句话说,如果您正在与应用程序进行交互,或者是您正在查看的最后一个交互式应用程序,以PDF格式,文本等方式阅读某些内容,则应用程序处于活动状态.与应用程序交互:我的意思是单击,键入,滚动等.

NARROWING:我唯一不知道的是如何在这些条件下获得活动应用程序.我认为,如果我在当前工作区中的显示器上获得可以解决问题的最好的应用程序,那么我们有一个属性设置为窗口(总是在顶部),可能需要在没有启用此属性的情况下获取.我发现这个问题可能有助于回答.

使用Fedora 26,

提前致谢.

c java linux x11 operating-system

5
推荐指数
1
解决办法
176
查看次数