私は、非アクティブまたはバックグラウンドアプリケーションのウィンドウの定期的(繰り返し)のスクリーンショットを撮ろうとしています。私は、ウィンドウの矩形を持っているが、ユーザーがウィンドウの四角形を変更する場合は、サイズの変更に応じて黒い影でスクリーンショットを取得しています。スクリーンショットを撮る前に矩形を得ることができますが、コードが遅くなるので、ユーザーがウィンドウのサイズを変更しないようにするか、ウィンドウのサイズ変更が発生したときにイベントトリガーがありますか?私はJava
とJNA
を使用しています。助言がありますか?ありがとうウィンドウのサイズ変更を防止する
答えて
(ここでは、そのフレームと仮定するとjava.awt.Frame
またはjavax.swing.JFrame
です)。 仕事をすることができ1人のリスナーがあります:
public class ShellControlsListener implements ControlListener {
@Override
public void controlMoved(ControlEvent e) {
// You will need to retrieve new coordinates
}
@Override
public void controlResized(ControlEvent e) {
// Do you work here: retrieve new bounds
}
}
私はあなたがAWT/Swingとリスナーのようなものを使用できることが想定しました。
ウィンドウの座標と境界を取得することは、2〜4FPSでは実際の問題ではありません。私は、java.awt.Robotを使って25FPSで記録し、エンコードすることができます。 (ウィンドウ境界の取得はRobot.createScreenCapture(java.awt.Rectangle)と比較すると高速です
パフォーマンスが本当に必要な場合は、ウィンドウを移動またはサイズ変更したときに境界を取得するだけで済みますので、ウィンドウを設定する必要はありませんサイズ変更不可(ビデオキャプチャにスクリーンショットを使用したくない場合は、すべてのスクリーンショットの寸法が同じである必要があります)
25FPSで特定のウィンドウを記録する方法を教えてください。どのようにして他のアプリケーションウィンドウのサイズ変更を防止しましたか?なぜなら、私は毎秒25スクリーンを取得しようとしましたが、私はそうすることができませんでしたか? – Ahamed
基本的に、アプリケーションはawtロボットを使用してスクリーンショットをキャプチャする1つのバックグラウンドスレッドで構成されています(毎秒1 /フレームレート秒でキャプチャ)。その後、画像はビデオエンコーダ(Xuggleなど)に渡されます。 3番目のコンポーネントは、アプリケーションのサイズ変更を検出するControlListenerです。私はJNAを使わなかったので、Java以外のウィンドウは記録できません。 25 FPSを達成する唯一の方法は、オンザフライでビデオをエンコードして記録することです。私は1つのウィンドウしか記録できませんが、私のニーズには十分です。しかし、ウィンドウが大きすぎるとパフォーマンスの問題に直面する(私はフレームレートを下げる必要がある)。 – zeropouet
ありがとうございました!!!! – Ahamed
frame.setResizable(false)
に電話をかけて、ウィンドウのサイズ変更を無効にすることができます。あなたもこれを行うことができます:
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// Update rectangle
}
}
私はSWTコンポーネントを使用してアプリケーションのスクリーンキャストを記録するために同じことをした
アプリケーションのウィンドウサイズの変更を防止したり、それに応答したりできますが、他のウィンドウやアプリケーションのサイズの変更について知りたいことがあります。 – Ahamed
OSによっては、他のアプリケーションのウィンドウのサイズ変更を待ち受けるJNAコールが存在する可能性があります。しかし、私は、現在のウィンドウの四角形を要求することは、ピクセルをつかむことに比べて速くなければならないことに同意するでしょう。毎回四角形を要求したときにどのくらいの減速感が見られますか? –
現在、毎回繰り返しJNAコールをしています。ピクセルを取得するには時間がかかりますが、ウィンドウ内のコンテンツが変化し続けるため、ピクセルを省略することはできません。私はより良い実行のためにコードをチューニングしているので、ユーザーがウィンドウのサイズを変更していない場合は役に立たない、このウィンドウの長方形 'JNA'呼び出しを削除することを考えました。 – Ahamed
- 1. サブウィンドウのサイズ変更を防止する
- 2. UITableViewCell.backgroundViewのオリエンテーション変更のサイズ変更を防止する
- 3. Devexpressのグリッドビュー列のサイズ変更を防止する
- 4. xcodeとインターフェイスビルダのプレビュー画像のサイズ変更を防止する
- 5. フォントチェンジ時のコンボボックスのサイズ変更を防止する
- 6. Excelでセルのサイズ変更を防止する
- 7. ウィンドウのサイズを変更するiframeのサイズを変更する
- 8. カスタムアクティビティデザイナで自動サイズ変更を防止する方法は?
- 9. ユーザーがウィンドウ/フォームサイズのサイズ変更を禁止する
- 10. 古いサムネイルのサイズ変更を防止しますか?
- 11. ウィンドウのサイズ変更
- 12. SWT Java:ウィンドウのサイズ変更を防ぐ方法は?
- 13. ウィンドウのサイズ変更時にTkinterリストボックスウィジェットのサイズを変更する
- 14. 防止カーソルの変更
- 15. ウィンドウのサムネイルのサイズを変更する
- 16. ウィンドウのサイズを変更するC#
- 17. Qizeウィンドウのサイズ変更
- 18. SharpDX 2Dウィンドウのサイズ変更
- 19. SDL OpenGLウィンドウのサイズ変更
- 20. 自動ウィンドウのサイズ変更
- 21. SlimDXウィンドウのサイズ変更
- 22. Win32ウィンドウのサイズ変更アニメーション
- 23. アンドロイドソフトキーボードがアクティブな場合、ウェブページのビューポートのサイズ変更を防止する
- 24. PowerShellウィンドウがシャットダウンを防止する
- 25. ドロップダウンボックスのサイズ変更を防ぐ方法
- 26. OpenGLウィンドウのサイズを変更すると、ウィンドウが開きます
- 27. アンドロイドキーボードが開くと、ドキュメントのリフロー/ブラウザのサイズ変更を防止します。
- 28. ウィンドウのサイズに合わせてコントロールのサイズを変更する
- 29. フレックスボックスによるウィンドウのサイズ変更
- 30. FXML(JavaFX)でウィンドウのサイズを変更
ユーザーのウィンドウのサイズ変更を防止することは、迷惑をかけることになります。それとも? – rossum
また、ウィンドウのサイズ変更イベントはありますか?これらの2つの中から1つを選択できます: – Ahamed
長方形を取得すると、実際にピクセルを取得するのに比べてコードが遅くなりますか?ちょっと驚くべきこと...どんな場合でも私は@ロムムに同意します。 –