【问题标题】:How can you get the data about the clicked object?您如何获取有关单击对象的数据?
【发布时间】:2018-12-23 06:42:07
【问题描述】:

我正在考虑创建一个应用程序,它可以衡量我们在某些文件或目录上花费了多少时间。目前,我还没有写任何代码,我只是在想它。

假设用户左键单击桌面上某个随机目录的图标。为了显示目录的内容,操作系统应该首先识别出click所在的位置。

或者,如果 Internet 浏览器打开并且您按下退出按钮(右上角),操作系统会终止正确的进程 - 而不是任何其他进程。

在任何情况下,操作系统都知道你点击的是什么,所以必须有一些机制来做到这一点,我只是不知道如何达到它。

所以我的问题是,如何获取有关点击对象的数据(路径、类型、指向内存的指针等)?

我已经知道如何检测双击及其位置。我打算用python编写代码。

【问题讨论】:

    标签: java python operating-system


    【解决方案1】:

    这是 JAVA 解决方案,我不知道 Phython 是否足够好,但它可能会有所帮助,因为问题是用 JAVA 标记的

    JButton btn = new JButton();
    btn.addActionListener(new ActionListener(){
        public void onActionPerformed(ActionEcent event){
             JButton btn = (JButton)event.getSource();
        }
    });
    

    您可以对每个JComponent 和每个侦听器执行此操作,因此,如果您使用例如JLabel 执行此操作并添加MouseAdapterMouseListener,您总是可以调用getSource() 来获取组件遇到了Event。

    【讨论】:

    • 也许我不够清楚......我需要为操作系统生成的所有窗口,而不是我的应用程序。例如,如果您打开一个文件夹,会出现一个窗口(包含文件夹的内容),该窗口由 os.当您单击关闭窗口(或打开它)时,我需要获取有关该文件夹的数据。
    • 好吧,你需要什么,(我很确定)是 C 语言 (++,#),因为这是一个依赖于平台且非常复杂的任务。也许这根本不可能。
    • 您可以“询问”正在运行的进程获取 PID(这在 Java 和 Python 中可能)并尝试与它们通信(我认为因此您需要 C++、C或者也许 C# 也可以,但我对此持怀疑态度)
    • 是的,它适用于 PID... 唯一的问题是,这仅适用于进程,而不适用于例如打开文件夹。我会努力找东西的,非常感谢!
    • 我想你搜索的是windows explorer.exe的一个界面。看看是否有任何 API 可以用来捕获一些打开的文件夹事件。但正如我所说的,我认为如果存在这样的想法,它只适用于 c/C++。也许如果你稍微调查一下,如果你打开一个文件夹,这可能会启动一个新的资源管理器进程。试试看。在 Windows 任务管理器中有一个选项可以查看所有进程。如果幸运的话,资源管理器会为每个打开的文件夹启动一个新的子进程(带有自己的 PID)。
    猜你喜欢
    • 2020-04-08
    • 2011-12-27
    • 2021-05-23
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多