【发布时间】:2009-09-20 12:09:16
【问题描述】:
我想编写一个应用程序,在某些击键时将一些文本粘贴到活动窗口。如何使用 Python 或 C++ 做到这一点?
我想编写一个像守护进程一样工作的应用程序,并在一些全局击键时将一些文本粘贴到当前活动的应用程序(文本编辑器、浏览器和 jabber 客户端)。我想我需要使用一些低级 X Window 服务器 API。
【问题讨论】:
我想编写一个应用程序,在某些击键时将一些文本粘贴到活动窗口。如何使用 Python 或 C++ 做到这一点?
我想编写一个像守护进程一样工作的应用程序,并在一些全局击键时将一些文本粘贴到当前活动的应用程序(文本编辑器、浏览器和 jabber 客户端)。我想我需要使用一些低级 X Window 服务器 API。
【问题讨论】:
在多个应用程序界面之间进行交互可能会很棘手,因此提供有关您正在尝试执行的具体操作的更多信息可能会有所帮助。
不过,如果您想使用剪贴板来完成此操作,您有几个选择。在 Windows 上,Windows API 提供GetClipboardData 和SetClipboardData。要在 Python 中使用这些函数,您需要利用 win32com。
在 Linux 上,与剪贴板交互有两个主要选项(据我所知)。 PyGTK 提供了一个 gtk.Clipboard 对象。还有一个用于设置 X“选择”的命令行工具,XSel。您可以通过os.popen 或subprocess 使用Python 与XSel 交互。有关使用 gtk.Clipboard 和 xsel 的信息,请参阅 this guide。
就您实际使用剪贴板的方式而言。一个应用程序可能会每隔一段时间轮询剪贴板以查找更改。
如果您想进入真正的“企业”架构,您可以使用消息总线,例如RabbitMQ,在两个应用程序之间进行通信。
【讨论】:
如果您使用 Tkinter(可在 Linux、Mac OS X、Windows 和任何地方运行的 GUI 库)并制作任何小部件(例如文本小部件),则复制 (Ctrl + C) 和粘贴 (Ctrl + V) 命令自动工作。例如,以下代码显示了一个 Text 小部件,您可以在其中键入多行文本,并复制并粘贴到其他应用程序或从其他应用程序(例如,OpenOffice)。
from Tkinter import *
root = Tk() # Initialize GUI
t = Text(root) # Create a text widget
t.grid() # Show the widget
root.mainloop() # Start the GUI
我已经使用 Windows 和 Linux/KDE 3.5 测试了代码。
【讨论】: