1

Java アプリケーションで貼り付け操作を実行したいと考えています。ロボットを使わずにこれは可能ですか?

たとえば、アプリケーションはときどき貼り付け操作を呼び出すので、メモ帳に書き込んでいると、クリップボードの内容が表示されます。

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

1 に答える 1

2

Javaを使用して別のアプリケーション(Windows NotePadなど)を操作または部分的に駆動してそのアプリケーションに貼り付けようとしているように聞こえます。その場合、いくつかの解決策があります。1つはロボットを使用し、もう1つはJavaを動作させます。システム呼び出し。ただし、これはコアJavaだけでは直接実行できず、JNI、JNA、またはAutoItなどの他のプラットフォーム固有の非コアユーティリティプログラム(Windowsの場合)を使用する必要があります。

なぜあなたはロボットを使わないことに夢中になっているのですか?あなたのニーズをより詳細に説明できますか?


あなたのコメントに関して編集してください:

クライアントがRobotを不合理に拒否するため、Robotの代替案を検討したいと思います。

これはWindowsプラットフォーム用のように見えるので、Windows APIと、駆動しようとしているJava以外のプログラム(存在する場合)のAPIを調べてから、JNAを使用して対話することを検討してください。Windows User32.dllを使用すると、ドライブしようとしているアプリケーションのウィンドウハンドル(hWnd)を取得できます。これは、これが機能するために必要な場合があります。

ただし、問題に関するより具体的な情報がなければ、より具体的なアドバイスを提供することは困難です。

コメントに関して2を編集
します。

アプリをプラットフォームに依存しないようにしたいと思います。

さて、ロボットが頭に浮かびます。クライアントと一緒に座って、ロボットの何が嫌いなのかを調べてから、プラットフォームに依存しないソリューションへの最善の道を提供する可能性があることを穏やかに説明することをお勧めします。

JNAおよび/またはJNIの例はありますか?私もよく知らない。

はい、このサイトや他のサイトにはたくさんの例があります。Googleが詳細を調べるお手伝いをします。JNAは、Cブリッジプログラムを作成する必要がないため、操作が少し簡単ですが、JNIよりも少し遅くなる可能性があり、C ++コードでは直接動作しません(私が知る限り)。

コメントに関して3を編集 します。

シリアルポートリスナー(Javaアプリ)があります。そのコンテンツをWebブラウザに提供する必要があります。クリップボードはそれを行う方法のようでした。

そしてこれが、コードソリューションがどうあるべきかではなく、問題のコンテキストを提供することが非常に重要である理由です。

アプリケーション間の通信は簡単なことではありません。Javaは可能な限りプラットフォームに依存しないように設計されているため、低レベルのOS機能と簡単に統合できるツールを提供していないため、Javaはこれに最適なツールではないことがよくあります。 。私はあなたの問題を解決するための最良の方法を知りませんが、私の直感はクリップボードを使用することは行く方法ではないかもしれないと私に言います。他のプログラムとのインターフェースを可能にする何らかのAPIがあるかどうか、私がほとんど知らないことなど、あなたが話しているWebブラウザーに大きく依存する可能性があります。また、あなたのプログラムはどこにありますか?ユーザーのコンピューター上で?ある種のJavaWebブラウザー・ライブラリーを使用し、独自の専用Webブラウザー・プログラムを作成し、シリアル・ポート・リスナーから直接データを取得することを検討しましたか(繰り返しますが、私はこれを自分で行いませんでした)

Cプログラムへのブリッジングがどのように役立つかわかりません。

私はこれを示唆していません。これは、JNIを使​​用した場合にのみ必要になります。これは、JNAの方がはるかに簡単なので(少なくとも私にとっては)避けています。

于 2012-06-19T13:45:00.330 に答える