問題タブ [awtrobot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AWTException をスローせずにグローバル Robot 変数を作成するにはどうすればよいですか?
Robot
をスローせずに Java クラスでグローバル変数を作成しようとしていますAWTException
。私が思い付くことができる唯一の方法は、例外をスローすることです。Robot
グローバルにする必要があるのは、クラス内の他のメソッドで同じ変数を使用する必要があるためです。
例外をスローしない場合は、すべてのメソッドで新しいロボットを宣言する必要があります。
誰か助けてくれませんか?
python - Pythonでキーボードとマウスを制御するにはどうすればよいですか?
Pythonでマウスとキーボードを制御するにはどうすればよいですか?
アイデアは、JavaのRobot()クラスと同じことを行うことです。次のように言うことができます。マウスをここからここに移動し、そこをクリックして、画面に表示されているものをすべて書き込みます。
Windowsにはwin32apiがありますが、私は主にLinuxを使用しています。
LinuxにはXlibがありますが、キーボードでも機能しますか?(マウスへの参照のみが見つかりました)
クロスプラットフォームソリューションはありますか?(Linux、Windows、さらにはOS Xも素晴らしいでしょう。)
java - java.awt.Robot を使用したキーボード入力のテスト
java.awt.Robot を使用してカスタム Swing コンポーネントを実行するテストがあります。ビルド サーバーでテストを実行したいのですが、ビルド サーバーはロックされた Windows マシンで実行されており、画面がロックされていると Robot.keyPress(char) が機能しません。私が送信しているキーストロークは、下向き矢印やバックスペースなどの場合があるため、ドキュメントに直接送信しても役に立ちません。
現在、最初の試行でキーボード入力が機能しない場合は、junit の Assume を使用してテストをスキップしていますが、これらのテストを有効にしたままにします。Swing GUI に対してこの種のテストを実行している人がいると思います。何か案は?
java - Javaアプリは、ユーザーのアイドル時間の10分後に画面表示が応答しなくなります
私は、ユーザーがマウス/キーボード入力をスクリプト化できるJavaアプリを作成しました(JMacro、リンクは重要ではありませんが、好奇心旺盛な人のためだけに)。私は個人的にこのアプリケーションを使用して、睡眠中にオンラインゲームのキャラクターアクションを一晩自動化します。残念ながら、私は午前中にコンピュータに戻ってきて、応答がないことに気づきました。さらにテストしたところ、ユーザーのアイドル時間が約10分経過すると、アプリケーションによってコンピューターが応答しなくなることがわかりました(アプリケーション自体がユーザーアクティビティをシミュレートしている場合でも)。問題を特定できないようですので、他の誰かがどこを見ればよいのか、何が問題を引き起こしているのかを提案してくれることを期待しています。
関連する症状と特徴:
- ユーザーが10分間アイドル状態になると、無反応が発生します
- ユーザーは引き続きマウスポインタを画面上で動かすことができます
- マウス以外はすべてフリーズしているように見えます...マウスクリックは効果がなく、Windows7デスクトップを含むアプリケーションは表示を更新しません
- 画面がフリーズする前に最後のタスクマネージャーの画像を見ることができるように、タスクマネージャーをアプリと一緒に一晩置いておきました... Javaアプリは通常のCPU/メモリ使用率であり、合計CPU使用率はわずか約1%です
- マウスを動かした後(つまり、ユーザーがアイドル状態から戻った後)、画面イメージは30分以内に再び更新を開始します(これは非常にヒットしてミスします...場合によっては10分、場合によっては2時間後に結果が得られません)
- ユーザーはCTRL-ALT-DELを使用して、Windows 7のCTRL-ALT-DEL画面にアクセスできます(30秒間休止した後)。ユーザーは引き続きマウスポインタを移動できますが、ボタンオプションのいずれかをクリックすると、画面が再びフリーズしたように見えます。
- ごくまれに、システムがフリーズすることはなく、午前中に完全な応答性でシステムに戻ります。
- Javaアプリは、深夜に入力スクリプトを自動的に停止するため、Windows 7は「実際の」アイドル状態を検出し、モニターをスタンバイモードに切り替えます。これは、朝起きたときに手動でマウスを動かすと正常に終了します。 、デスクトップディスプレイがまだフリーズしているように見えても
問題の症状と特徴を考えると、Javaアプリが原因で、実行中のアプリケーションを含め、ログインしているユーザーのデスクトップディスプレイの更新が停止しているように見えます。
使用されるプログラミングの概念とJavaパッケージ:
- マルチスレッド
- 標準のoutとerrはjavax.swing.JTextAreaに再ルーティングされます
- アプリケーションはSwingGUIを使用します
- awt.Robot(非常に頻繁に使用されます)
- awt.PointerInfo
- awt.MouseInfo
システム仕様:
- Windows 7 Professional
- Java 1.6.0 u17
結論として、私は非常に具体的な質問をしているわけではないので、特定の解決策を探しているわけではないことを強調する必要があります。私が使用しているJavaライブラリを使用しているときに、誰かが同様の問題に遭遇したのではないかと思っています。また、問題の原因をさらに特定するための提案をいただければ幸いです。
ありがとう!
ロス
PS、これをデバッグし続けている間に他の何かに遭遇した場合は、更新/回答を投稿します。
更新:私のアプリには、それぞれが独自のRobotオブジェクトを初期化し、入力イベントを非同期で作成するマルチスレッドプロセスが含まれていました。1つのRobotシングルトンオブジェクトのみを含むようにアプリをリファクタリングしましたが、異なるプロセスは依然として非同期で入力コマンドを呼び出します。私の知る限り、これによってアプリの動作が変わることはありませんでした。次のステップは、Robotシングルトンの周りに同期ラッパーを作成して、それが役立つかどうかを確認することかもしれませんが、症状を考えると、なぜそうなるのかわかりません。
java - 仮想キーボードの Java 入力メソッド
仮想キーボードの入力方法の実装で問題に直面しています。現在、仮想キーボードから任意のアプリケーションに入力を送信するためにロボット クラスを使用しています。しかし、そのためには、キーコードとユニコードのマッピングを作成する必要があります。これは、異なるキーボード レイアウトでは一貫していません。キーコードとユニコード間のマッピングを気にせずに、インプット メソッドを使用して UNICODE を任意のアプリケーションに直接渡すことができます。
有用なリンクやサンプル コードは役に立ちます。
これは、常に任意のアプリケーションの上にあり、オンスクリーン キーボードとして機能する単純な Java プログラムです。マウスを使用してキーボードの任意のボタン (キー) を押すと、対応する文字が下で実行されているアプリケーションに入力されます。これは、英語のアルファベットに最適です。ユニコードをやっているときに問題に直面しています。
以下のコードスニペットを見つけてください
java - 特定のソフトウェアの実行中に Java Robot キー アクティビティが停止するように見える
私は、オンライン ゲームで夜間にキャラクターのアクションを自動化する Java アプリケーションを作成しています (具体的には、ファイナル ファンタジー XI で魚を捕まえます)。このアプリは、ユーザーのキーボード入力をエミュレートするためと、画面の特定の部分での色の変化を検出するために、Java の Robot クラスを多用します。また、マルチスレッドとスイング GUI も使用します。
ゲームを実行せずにスクリーンショットを使用してアプリの応答をメモ帳にトリガーするだけでテストすると、アプリケーションは完全に動作するようです。しかし、実際に FFXI を起動してプログラムを起動すると、何らかの理由で、キーボードとマウスのすべての操作が完全に機能しなくなります。プログラムは引き続き実行されており、Robot クラスは引き続きピクセルの色を読み取ることができます。しかし、Robot.keyPress、Robot.keyRelease、Robot.mouseMove、Robot.mousePress、および Robot.mouseRelease はすべて何もしません。それは最も奇妙なことです-テストするために、文字を入力し続ける単純なループを作成し、メモ帳に焦点を合わせました。その後、ゲームを開始し、メモ帳の焦点を合わせ直しましたが、何もしませんでした。その後、ゲームを終了すると、すぐに再び機能し始めます。
特定のソフトウェアがJavaの特定の機能を停止させる、このようなものに遭遇した人はいますか?
また、これをより興味深いものにするために、昨年、同じクラスとプログラミング手法を使用して、ゲーム内のパーティーが戦っているときに自動的に回復する非常によく似たプログラムを作成しました。昨年、このプログラムは完璧に機能しました。これらの問題に遭遇した後、私はその古いプログラムを掘り起こし、何も変更せずに実行したところ、同じ問題を抱えていることがわかりました。現在と動作していたときの唯一の違いは、Windows Vista を実行していて、現在は Windows 7 を実行しており、いくつかの新しい Java バージョンと FFXI バージョンがリリースされていることです。
一体何が起こっているのですか?(誰かが私のソース コードを表示する必要がある場合は、mikejturley@gmail.com に電子メールを送信してください。私は秘密にしています。)
java - JTextFieldのクリックをどのようにシミュレートしますか?JButton doClick()と同等ですか?
私はJavaプロジェクトに取り組んでおり、キーを押してJTextFieldのクリックをシミュレートする必要があります。私が探しているのは、JButton doClick()メソッドに相当するものです。
キーを押して「Enter」キーを押して、JTextFieldをクリックするのとまったく同じ機能を実行させようとしています。
他にどのような情報を提供すべきかわからない。前もって感謝します。
java - スレッド: スレッドを混乱させる原因は何ですか? マウス リスナーを使用した 2 つのランナブル
私は JWindow と JFrame を両方とも実行可能にし、両方ともマウスリスナーを実装しています。私は自分のプロジェクトのために多くのテストを行う必要があり、それを簡素化するために、そのほとんどを自動化できるようにしたいと考えているため、独自のマウスレコーダーとリプレーヤー (Java Robot クラスを使用) を開始しました。
単純化された AutoHotKey や AutoIt のようなものですが、Windows マシンだけでなく、Ubuntu マシンでも動作します!!!
私が作成した JWindow は半透明で、画面全体をカバーします。クリックすると消え、背後のオブジェクトへのクリックが再生されてから再び表示されます。これが録音プロセスです。ユーザーが右クリックすると、非表示に設定され、記録されたアクションが再生されます。
再生中にアプリケーション全体を終了できるオプションが必要なので、これを行う最善の方法は、JFrame と JWindow を実行可能にすることです。
JFrame は、アプリケーションからクローズ オプションを提供するためのものです。
だから、私のメインクラスでは
私の理解では、Recorder と GUI は実行可能なオブジェクトであり、新しい Thread コマンドによってスレッド化されます。.start() を使用すると、スレッドの実行が開始され、ここから、特定の時間にどのスレッドが実行されているかがシステムによって決定されます。
Recorder クラスと GUI クラスに。
私のアプリケーションは Recorder を出力し、次に GUI を使用してイベントを記録し、JWindow を右クリックしてそれらを再生できます...
しかし、マウスリスナーのためにJFrameの閉じるボタンをクリックしたり、フレーム内でクリックしたりしても、すべてのアクションが完全に再生されるまで終了しませんか?
私が疑問に思ったことの 1 つは、スレッドを実行し続けるものは何なのかということです。したがって、System.out.println(""); スレッドが死ぬ?だから私はそれらの周りでwhileループを試み、私のアプリケーションは正常に印刷されました
GUI GUI GUI RECORDER RECORDER GUI RECORDER など
したがって、それらのスレッドが同時に実行されていることがわかります...実行外の他のすべてのアクションが実行されないように見えるだけです...マウスリスナーなどをスレッド実行に含めるにはどうすればよいですか?
java - java.awt.Robot でバックスペース キーをシミュレートする
でのバックスペース キーのシミュレートに問題があるようjava.awt.Robot
です。
このスレッドはこれを確認しているようですが、解決策を提案していません。
これは機能します:
これはしません:
何か案は?
java - UAC ダイアログが表示されているときにスクリーンショットをキャプチャするにはどうすればよいですか?
Java Robot クラスを使用してスクリーンショットを撮っています。私の問題は、W7 で UAC ダイアログが表示されたときに (任意のアプリケーションを右クリックして [管理者として実行] を選択)、スクリーン ショットに表示されないか、画面全体が表示されないことです。黒。管理者権限で、またはサービスとしてアプリケーションを実行しても、問題は解決しません。
UACが表示されているときでも画面をキャプチャできるようにするために何をすべきか知っている人はいますか?