問題タブ [user32]
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.
c# - WinForms:ウィンドウがアクティブでなくなったかどうかを判断する方法(子ウィンドウにフォーカスがない)?
私のアプリケーションは複数のウィンドウを使用しています
アプリケーションがフォーカスを失った場合 (アクティブ ウィンドウがアプリケーション ウィンドウでない場合) に備えて、特定のウィンドウを非表示にしたい
Deactivateメインフォームのイベントを処理しています。
出力は常に
アプリケーション内の新しいウィンドウがフォーカスを受け取り、別のアプリケーションをクリックした場合も、同じ動作を観察しました。
ハンドラーGetActiveWindowから呼び出されたときに、新しいアクティブ ウィンドウのハンドルを返すことが期待されます。Deactivate代わりに、常にアプリケーション ウィンドウのハンドルを返します。
これはどのように可能ですか?Deactivate イベントは「早すぎる」処理ですか? (メインフォームがまだアクティブな間?)。
タイマーで GetActiveWindow を実行せずに、アプリケーションがフォーカスを失い (アプリケーション ウィンドウがアクティブ ウィンドウではない)、別のアプリケーションがフォーカスを獲得したことを検出するにはどうすればよいですか?
c# - C# を使用してウィンドウが表示されているかどうかを判断する
C# でコンソール/フォーム ハイブリッド アプリケーションを使用していますが、現時点では、コンソール ウィンドウを表示/非表示にするために user32.dll に依存する必要があります。しかし、コンソールウィンドウが非表示か表示されているかを判断できる方法が見つからないようです(値を自分で保存せずに)
c# - C# を使用して任意のウィンドウから強調表示されたテキストをキャプチャする
c# を使用して、任意のウィンドウから強調表示/選択されたテキストを読み取る方法。
私は2つのアプローチを試みました。
- ユーザーが何かを選択するたびに「^c」を送信します。しかし、この場合、私のクリップボードは大量の不要なデータであふれています。時々、パスワードもコピーしました。
そのため、アプローチを2番目の方法であるメッセージ送信方法に切り替えました。
このサンプルコードを参照してください
このコードはメモ帳で正常に動作します。しかし、Mozilla firefox や Visual Studio IDE などの別のアプリケーションからキャプチャしようとすると、テキストが返されません。
誰が私を助けてくれますか? まず第一に、私は正しいアプローチを選択しましたか?
c# - マウスイベントの取得
私は C# で作業しており、すべてのマウス イベントを取得したいと考えています。そうするのが最善の理由は何ですか。私は試した:
動作させることができず、単一のモジュールに制限されています。すべてのマウス イベントを取得したいと考えています。
c# - C# でタスクバーのフラッシュをリセットする
イベントが発生した場合にタスクバーが点滅するアプリケーションがあります。これは完全に機能しており、以下で説明する Win32 API を使用して実装するのは比較的簡単でした 。
ただし、点滅を停止すると、アプリケーションがタスクバーの「強調表示」状態でスタックすることがあります。これは、タスクバーのアプリケーションをクリックして最小化し、再度最大化することによってのみリセットされます。ユーザーの操作なしで強調表示されないようにする方法はありますか?
c# - ネイティブ .NET メソッドまたは user32.dll の GetKeyboardState に相当するものはありますか?
回答:このメソッドに相当するネイティブ マネージはありません。ただし、マネージ コード API の良い例はpinvoke.netにあります。
こんにちは、みんな
「トレース モード」のフラグを受け入れるアプリケーションがあります。トレース モードは、テキスト ボックスを含むフォームをオンにします。テキスト ボックスには、カスタム TraceListener オブジェクトを介して出力が表示されます。コマンドラインに -t が存在する場合、トレース ウィンドウは優先度の低いスレッド内から開かれます。何か問題が発生したときにアプリケーションを診断しようとしているコンサルタントにとって便利です。
何人かのコンサルタントは、起動時にいくつかのあいまいなキーの組み合わせを押すと、トレース モードがオンになり、コマンド ラインに移動して毎回アクティブにする必要がなくなるようにするように要求しました。合理的な要求です。
さまざまなコンポーネントがインスタンス化および初期化されるため、メイン フォームが作成される前に、コンサルタントが気にする多くの重要な情報が Trace に表示されるため、このためのボタンやメニュー項目を提供したくありません。
.NET で現在のキーボードの状態を検出するのに十分単純なはずだと思っていましたが、どこを見ても [DllImport("user32.dll", EntryPoint = "GetKeyboardState", SetLastError = true) を使用するようにアドバイスされているようです。 ] 何が起こっているかを検出する方法として。
それはすべてうまくいっています-私はそれで満足しています。ただし、一般的な経験則として、独自のロールを作成する前に、Windows 関数にネイティブの .NET マネージ コードを使用するようにしています。
ネイティブ .NET メソッドまたは user32.dll の GetKeyboardState に相当するものはありますか?
windows-7 - rundll32 user32.dll を使用して、ユーザーの環境が変更されたことを示す
Windows 7 で環境変数を変更する機能がありません。ただし、レジストリ設定を変更する権限が付与されています。たとえば、変更できます: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment キー: システムの pathEnv の末尾に追加される BPATH。
しかし、変更を加えても、次の再起動まで変更は有効になりません。
「PATH」が後続のプログラムとウィンドウで常に更新されるように、BPATH の変更を通知できる「常にインストールされる」コマンド ラインを見つけたいと思います。
条件:
- システムの詳細タブからではなく、レジストリを介してのみパスとbpathを編集できます...
- 標準の Windows 7 インストールに含まれていないソフトウェアはインストールしたくありません。
- 通常、これは PowerShell プロンプトの CMD プロンプトから実行する必要があります。
c# - 外部ウィンドウがドラッグされていませんか?
場所とサイズを指定するスロットにウィンドウをスナップさせるプログラムがあります。ウィンドウをドラッグすると、ドラッグが終了すると最も近いスロットにスナップされます。追加したいのは、ドラッグ中にウィンドウが移動するスロットのオーバーレイです。
スナップとオーバーレイは正常に機能します。私の問題は、ウィンドウがドラッグされているかどうかを知るためのより良い方法が必要なことです。ドラッグが発生している間にウィンドウがスロットにスナップするのを防いでいた方法は、マウスがクリックされている間は何もしないことです。マウスがクリックされている間にオーバーレイを描画すると機能しますが、ウィンドウがドラッグされている場合でも、マウスがクリックされるたびにオーバーレイが表示されます。
hwnd を取得して、そのウィンドウがドラッグされているかどうかを教えてくれるメソッドはありますか? または、このプロセスについてより良い方法はありますか?
winapi - p/invoke と EnumDisplaySettingsEx の問題
システムに存在するすべてのさまざまなモニター (およびそのアダプター) に関する情報を取得しようとしています。これまでのところ、すべてのモニターを一覧表示するために使用する試みEnumDisplayDevicesはうまく機能しました。最初は 2 つ見つかりました"\\.\DISPLAY1\Monitor0"(2 つ目はそれぞれ 2 と 1 ですが、この質問には関係ありません)。とにかく、上記のようにモニターの名前を渡して呼び出しEnumDisplaySettingsExを試みましたが、常に失敗します。null name パラメーターを使用した呼び出しは成功しますが、DEVMODE返される構造はdmDeviceNameis "cdd" であり、正確であるとは思えません。私は何を間違っていますか?
ああ、私はEnumDisplaySettings(非Exのもの)を使ってみましたが、それはnull nameパラメータでも機能しません。
P/Invoke 署名 (ex は pinvoke.net のものからわずかに変更され、動作させるために試行錯誤しています):
DEVMODEhttp://www.pinvoke.net/default.aspx/Structures/DEVMODE.htmlで定義されています。EdsDwFlags今のところ常にゼロです。iModeNum-1 (現在の設定)。
そして、何らかの理由で StackOveflow では、この投稿に C# タグを付けることはできません。
winapi - Win32API は、Python 内で Spy++ ウィンドウ情報機能を複製します
Python クラス (ctypes を使用) でラップしているサードパーティの GUI プログラムがあります。
次のことができる Win32 API 関数はありますか?
1) 指定された画面位置にあるウィンドウのウィンドウ ハンドルを取得します。
2) 特定のキャプションを持つボタンまたは静的ウィンドウのウィンドウ ハンドルを取得します。
3) テキストを編集ウィンドウに送信します。
4) RICHEDIT インスタンスからテキストを抽出します。
私は WinSpy (Spy++ タイプのアプリ) を持っており、そのツールを使用してウィンドウ ハンドルとキャプションを取得できることを知っていますが、Python 内で動作するものが必要です。
Python の ctypes を使用すると、Win32 API 内の任意の関数にアクセスできると想定しているため、MSDN をスキャンしています (特に、この windows/messages セクション)。機能するものが見つからないようです。
ありがとう、
マイク