Java剪贴板调用粘贴操作

时间:2012-06-19 13:41:37

标签: java clipboard paste

我想用我的java应用程序调用粘贴操作。这可能不使用机器人吗?

例如,应用程序会经常调用粘贴操作,因此当我在记事本中写入时,我会看到剪贴板的内容。

JAVA APP                       Notepad
clipboard.paste()  -------->   clipboardContents

1 个答案:

答案 0 :(得分:2)

听起来好像你正在尝试使用Java来交互或部分驱动另一个应用程序(例如Windows NotePad)并粘贴到该应用程序,如果是这样,有几种可能的解决方案,一种是使用Robot,另一种是Java进行操作系统调用,虽然这不能仅使用核心Java直接完成,而是需要使用JNI,JNA或其他特定于平台的非核心实用程序,如AutoIt(如果这是用于Windows)。

你为什么不使用机器人?你能更详细地解释一下你的需求吗?

修改
关于你的评论:

  

我想探索机器人的替代方案,因为我的客户非理性地拒绝机器人。

由于这似乎适用于Windows平台,因此您可以考虑使用Windows API和API来查找您尝试驱动的任何非Java程序(如果存在),然后使用JNA与其进行交互。 Windows User32.dll将允许您获取您尝试驱动的应用程序的窗口句柄(hWnd),这可能是必要的。

如果没有关于您的问题的更多具体信息,很难提供更具体的建议。

编辑2
关于你的意见:

  

我希望该应用与平台无关。

那么,机器人会浮现在脑海中。您可能希望与您的客户坐下来了解他们对机器人非常不喜欢的内容,然后轻轻地解释它可能为平台无关的解决方案提供最佳途径。

  

是否有JNA和/或JNI的示例?我也不熟悉。

是的,此网站和其他网站上有很多示例,Google会帮助您了解更多信息。 JNA更容易使用,因为它不需要你创建一个C桥程序,但它可能比JNI慢一点,并且不能直接使用C ++代码(据我所知)。 / p>

编辑3 关于你的意见:

  

我有一个串口侦听器(java app)。我需要将其内容提供到Web浏览器上。剪贴板似乎是一种方法。

这就是为什么提供问题的背景而不是您认为代码解决方案应该如此重要的原因。

在应用程序之间进行通信并不是一件容易的事情,并且Java通常不是最好的工具,因为它被设计为尽可能与平台无关,它不提供允许与低容易集成的工具。级OS功能。我不知道解决问题的最佳方法,但我的直觉告诉我使用剪贴板可能不是最佳选择。很大程度上取决于您正在谈论的Web浏览器,它是否具有允许与其他程序接口的某种API,我所知道的东西很少。你的课程在哪里?在用户的电脑上?您是否考虑过使用某种类型的Java Web浏览器库,创建自己的专用Web浏览器程序,并直接从串口侦听器获取数据(同样,我自己没有这样做过,但是已经在SO上看到了它)?

  

我不明白C程序的桥接对我有何帮助。

我不是在暗示这个。只有在你使用JNI时才需要这样,因为JNA更容易(至少对我来说),因此我避免使用JNI。