【问题标题】:Invoke CTRL+V to an open window调用 CTRL+V 到打开的窗口
【发布时间】:2018-01-19 04:47:51
【问题描述】:

我的剪贴板中有一些东西,我想运行一个 python 脚本,该脚本调用 CTRL+V 就像在键盘上按下一样,并将剪贴板的内容粘贴到当前的焦点窗口(比如 chrome)。
知道怎么做吗?

【问题讨论】:

  • 你使用的是什么类型的系统?
  • @JoshKopen 操作系统?窗户。
  • @JoshKopen 如果我理解正确,这可以让我在剪贴板中获取数据,而不是将其粘贴到另一个打开的记事本或 chrome 中。
  • 我自己没试过,但你看过this吗?

标签: python


【解决方案1】:

你有一个X-Y problem

您想要完成的是以编程方式从一个程序(您点击 cntrl-V)中获取数据并将其放入另一个任意程序(chrome)中。

有两种方法可以做到这一点:

第一

您可以将程序设置为具有数据交换机制,例如系统管道或网络连接。这需要一些用于数据交换的 API 已经包含在程序中或对源的访问,因此您可以添加一个。跨程序数据交换有非常具体的渠道,你不会很好地试图绕过它们。程序A不能只说

get_program_b().get_text_box().add(clip_board);

这将违反Process Isolaton,并且像windows这样的操作系统被明确编写为使其不可能。一些程序旨在从其他程序中获取输入。

popen.open('mysql -e "ISNERT INTO table (a) VALUES ('4')")

Chrome 不是这些程序之一,chrome 避免允许程序执行此操作,因为它会成为程序执行以下操作的目标:从 chrome 中获取保存的密码或信用卡数据。或者使用保存密码登录某人的帐户并以别人的名义购买东西。

第二

您可以尝试欺骗用户输入并像用户一样输入数据,这样 chrome 就不会知道其中的区别。但是欺骗用户是很难做到的,而且是故意的,因为它可以防止恶意脚本控制计算机并做坏事。 Windows 的制造商非常清楚,欺骗输入是一种绕过允许的数据交换通道的方法。所以窗户的制造商很难做到。您需要访问大多数程序不会提供的大量系统资产。至少一个程序必须在 Windows 上以管理员身份运行才能完成此操作,然后有一些库可以让您执行此操作。即使那样,我也愿意打赌有更简单的方法来完成工作。在您可以访问任何东西的机器上,一切皆有可能。如果您没有管理员访问权限,那么在不知道系统中一些未修补的漏洞的情况下,这应该是完全不可能的。

因此

您尝试执行的操作与计算机旨在让您执行的操作背道而驰。如果我们有更多关于你想要完成的信息,也许这里的一些优秀的人可以提供帮助。得到你想要的最终结果不应该那么难。但你这样做的方式就像试图穿越海洋,而你只需要一艘船。因为这是我的回答——不要这样做,这不是 windows 的设计方式。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多