問題タブ [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.

0 投票する
1 に答える
1996 参照

vb.net - VB.NET2010でGetAsyncKeyStateを使用する場合のPInvokeStackImbalance

私がやろうとしているのは、次のコードを使用してメインフォームでCtrl+Tabキーを押すことをトレースすることです

しかし、プロパティを呼び出しているときCtrlPressedPInvokeStackImbalanceエラーが発生します。の宣言とGetAsyncKeyStateインポートも確実ですInteropServicesが、CtrlPressedプロパティの構文が間違っています。この問題を解決するにはどうすればよいですか?

ありがとう

0 投票する
2 に答える
1014 参照

c# - ユーザーが入力した入力文字を取得する(WINAPI、user32.dll)

フォーカスされている入力ポイント (キャレット位置、ウィンドウ/コントロール) を取得する必要があります。私のアプリケーション/サービスは、ユーザーがいつ入力を開始したかを検出し、入力された文字を所定の値に置き換える必要があります。秘訣は、ユーザーが入力したい場所がわからないことです (これをいくつかのアプリケーションに限定したくありません)。

次を使用してテキストを取得/置換する方法を知っていると思います:

フォーカスされているコントロールを取得するにはどうすればよいですか? テキストの入手先と代替品の送付先を知るにはどうすればよいですか?

私はC#、WPFでこれをやっています。

ありがとうございました!

0 投票する
3 に答える
40315 参照

c# - マウスイベントの指示 [DllImport("user32.dll")] クリック、ダブルクリック

[DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y); を試しました。

カーソルを目的のポイントに移動するのはかなりうまくいきます。このような種類の DLL インポートを試したことはありませんが、機能します :)。しかし、もっと欲しいのですが、他に何を抽出できますか? 主に、マウス入力なしでダブルクリック、クリック、またはホイールオプションを使用したいのですが、どうすればそれを行うことができるコードだけですか? また、user32dll に他に何が含まれているかを確認するにはどうすればよいですか?

ありがとう

0 投票する
2 に答える
333 参照

c# - シミュレートされたマウスクリックが何もしないのはなぜですか?

私はこのコードを持っています:

私のフォームは次のようになります。

「ボタン」をクリックすると、次のように実行されます。

そして私のウィンドウにはこれもあります:

ウィンドウをクリックすると、期待どおりに「クリック」と表示されますが、「ボタン」をクリックしても何も実行されないようです。

座標は絶対ですか、それとも相対ですか?複数のモニターではどうですか?それらは焦点を絞ったアプリケーションでのみ機能しますか?

50,50が私のウィンドウをどこかでヒットして「クリック」ハンドラーをトリップするか、ランダムなウィンドウをクリックすることを期待します。これは、アプリが完全に欠落していて、代わりにフォーカスするためです...なぜ何も起こらないのですか?

0 投票する
1 に答える
1777 参照

c# - 外部プロセスにウィンドウをアタッチする

独自のウィンドウの1つを別のプロセスが所有するウィンドウにアタッチする必要があるアプリケーションをC#で作成しています。Windows APIからSetParent関数を使用してみましたが、機能しないようです。これを行う方法はありますか?

0 投票する
3 に答える
2774 参照

c# - AutoIT、またはUser32ボタンのクリックが散発的に機能する

アプリケーションのテストを自動化しようとしていますが、トラブルシューティングに苦労している問題に悩まされています。

アプリケーションには標準のWindowsボタンがあり、AutoITとUser32dllの両方でこれらのボタンのいくつかをクリックしてみました。ボタンが適切にクリックされることもあれば(イェーイ!)、失敗することもあります(ブー!)-しかし、さらに悪いことに、AutoITはボタンをクリックした(ダブルブー!)と誤検知(トリプルブー!)を生成すると確信しています。納得しているのを見たとき、クリックが成功しなかったのに成功したということです。

Win Server 2K8でアプリケーションを実行していますが、このアプリケーションにはMDIウィンドウを使用する以外に特別なことはなく、一部のボタンはMDIウィンドウに含まれています。ただし、一部はMDIウィンドウ内にありません(たとえば、親ウィンドウが作成される前のログインウィンドウ)。

コマンドの順序は次のとおりです。

ウィンドウ内のボタンを見つける(成功、常に)ウィンドウを前面に移動する(成功)ウィンドウをアクティブにする(成功)ボタンをアクティブにする(成功)ボタンにフォーカスする(成功)ボタンにフォーカスがあり、ボタンが有効になっている場合は、クリックして。(成功/失敗、予測できない動作。なぜ成功するのか、なぜ失敗するのかを絞り込むことはできません...)

その他の情報:

注文でボタンがクリックされている場合があります。これにより、別のウィンドウが開きます。そのウィンドウを閉じてから、ボタンをもう一度クリックします。今回は何も起こりません。それ以外の場合は、期待どおりに機能します。

管理者として実行していますが、UACは完全に無効になっています。

私の知る限り、これはタイミングの問題ではありません。ボタンをクリックする前に、ボタンがフォーカスされ、有効になっていることを確認し、ボタンの周りにフォーカスされたハイライトが表示されることを確認します。

また、前述したように、単純なUser32 / SendMessage呼び出しだけでこれを試しましたが、これも失敗します。

最後になりましたが、これは、アプリケーションを手動で操作した場合には発生しません。私はいつも実際のボタンクリックを機能させてきました。

何かご意見は?

アップデート

これが私が言及すべき方程式の別の変数です-これはVMで起こっています(それは私がそれを実行する必要がある場所だからです)。自分のマシンで限定的なテストを行うことはできますが、実際のテストを行うには、VM上にある必要があります。私自身の開発ボックスをクリックすることは信頼できるようであり、これはさらに不可解なものになります。

私はこれを別のVMで試してきましたが、そこでも機能しているようです。2つのVMは、同じバージョンのWindows、同じバージョンのアプリケーション、同じバージョンのAutoITなどを実行しています。

私はそれを1つの詳細に減らしました-運が良ければ、私は自分自身を構成することができず、構成を変更するためにチケットを入れる必要があります。構成の違いは次のとおりです。

動作していないVMで、デバイスマネージャーはvmwareマウスであるマウスを表示します。動作しているVMで、デバイスマネージャはPS/2マウスであるマウスを表示します。明らかにどちらもソフトウェアマウスですが、VMWareマウスの動作が異なり、ボタンのクリックが常に機能するとは限らないのではないかと思います。私の理解では、User32 SendMessage呼び出しを使用しても実際にはマウスは使用されず、代わりにマウスが送信したのと同じメッセージが送信されるため、これが解決策としてどの程度可能性があるかはわかりませんが、一見の価値があります。 ..。。

0 投票する
1 に答える
700 参照

c# - user32AnimateWindow関数が正しいフォームをスライドしない

サブフォームの1つにウィンドウスライドを追加しようとしています。この小さな部分が私のアプリで何をするかについて簡単に説明します。

ユーザーはIPアドレスの範囲で入力します。アプリはすべてのpingを実行し、結果を新しい形式で(動的に)表示します。

これが私がどのように機能させたいかです:ユーザーが一度pingを実行すると、スライドアニメーションに関して何も起こりません。ただし、ユーザーが結果フォームの[再試行]コントロールをクリックすると、古い結果フォームの右側から新しい結果ウィンドウがスライドします。

結果フォーム(名前:Ping_Form)で、ロードイベントに次を追加しました。

しかし、pingメソッドを実行すると、空白のフォームが作成されてスライドアウトしますが、結果のフォームは正常に表示されます。

どんな監督やアドバイスもこの分野で素晴らしいでしょう。本当にありがとう!

0 投票する
4 に答える
587 参照

api - win32 の非常に低レベルのアセンブリ - アプリケーションの起動の問題

フォームとボタンを使用してアセンブリでwin32プログラムをプログラミングするのに忙しい...問題は、ウィンドウがRAMの変数を変更することです。場所は、hInstance 変数と hwnd 変数のストアでした。回避策を見つけましたが、エレガントな解決策ではありません。ウィンドウが変数を変更する理由を知りたいのですが、アプリケーションの起動を説明するドキュメントを見つけることもできますか?

MyWndProc は、Windows からのコールバック関数です。Windows からの 27 回目の呼び出しで、最後の 7 つの変数を変更します。最後の 8 つの変数の位置を windowsVarx で切り替えても、windowsVarx を変更せずに hwnd、hwnd2 を変更します。x は 1 ~ 8 です

次の関数は、収集してディスパッチするメッセージ ループです。

0 投票する
2 に答える
6263 参照

c# - DllImportuser32対user32.dll

ここでのDllImportの使用法の違いは何ですか?具体的には、「user32」は単に「user32.dll」を意味するのでしょうか、それとも「user32.lib」などを意味するのでしょうか。

おそらく、CharSetとCallingConventionは無視してかまいません。

それらが同じである場合、私はこれをより一貫性のあるものに書き直すことができますが、そうでない場合、私はそれにたくさんの問題を抱えたくありません。

0 投票する
1 に答える
169 参照

c# - 最小化されたプログラムの処理

カスタム/自作の explorer.exe ファイルを使用する際に、最小化されたプログラムの処理に助けが必要です。「アイコニック」プロセスをチェックし、それらの mainWindowHandler をリストし、「MoveWindow」で画面の外に移動するために、C# でタイマーを作成しました。それらを元に戻すには、ハンドラーと「ShowWindow」関数を使用しますが、これは素晴らしい動作をします..しかし、私が言ったように、これにはタイマーが常に実行されているため、これを実現するためのよりクリーンで簡単な方法が必要です。

何か案は?ウィンドウが最小化されているときにイベントをフックして発生させる方法はありますか?

*注意: show と movewindow は user32.dll の関数です。MY フォームが最小化されているときではなく、OTHERS プログラムが最小化されているときにキャッチしようとしています。