問題タブ [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 に答える
3177 参照

windows - ShowCursor が機能しない

システム マウスを非表示にするために、ShowCursor (user32.dll) を使用する単純な C# win32 コンソール アプリを作成しようとしています。ShowCursor(false) を呼び出すと (当然のことながら) -1 が返されますが、マウス カーソルは残ります。ShowCursor(true) で再度呼び出すと、1 が返されます (ただし、カーソルが消えることはないため、目に見える効果はありません)。

ありがとう。

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

excel - Excel UserForm のフェードインとフェードアウトのアニメーションを無効にする

Excel 2007 (および 2010) で VBA を使用して、ユーザー フォームを表示および非表示にするときに、標準のフェードインおよびフェードアウト アニメーションを無効にする方法はありますか。特にフェードアウトは、私が作成しようとしているユーザー インターフェイスには遅すぎます。

おそらく、user32関数AnimateWindowには無効にできる設定がありますが、私はそれを理解していません。

編集:これは審美的な目標です。パフォーマンスの問題はありません。OS によって処理される でのフェードアウトにはMe.Hide1/2 秒かかります。オーバーライドして瞬時にできるかどうかを知りたいです。

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

c# - GetWindowText() でエラーがスローされ、try/catch でキャッチされない

GetWindowText に対して以下のコードを実行すると、次のエラーが内部例外としてスローされます。

{"保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。"}

2 つの質問があります。

  1. try catch でエラーがキャッチされないのはなぜですか?

  2. try/catchを使用する以外に、このタイプのエラーが発生したときにプログラムのクラッシュを停止する方法を教えてください

乾杯

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

python - Python ctypes: LPCSTR [out] パラメータを使用したプロトタイプ

私は現在モジュールに取り込んでおり、を使用して既に受け取ったハンドルでctypesuser32 関数を呼び出そうとしています。今回は、さらに一歩進んで、 で関数を呼び出す代わりに関数プロトタイプを使用したいと思いました。引数を出力パラメータとして宣言するのに問題がありますが。GetWindowTextHWNDFindWindowctypes.windll.user32.GetWindowTextlpString

私の最初の試みはこのように見えました:

ここでcfunc見つけた小さなラッパーです)

このプロトタイプは、呼び出されるとすぐに次の例外を生成します。

どの出力変数も型でなければならないと考えたPOINTER(...)ので、定義を次のように変更しました。

しかし、これも例外をもたらします:

GetWindowTextプロトタイピングを使用して関数を正しく呼び出す方法を誰かが知っていることを願っていますctypes

編集:

さらなる調査により、少なくとも何らかの形で機能させることができました。私が最初に修正した問題は、cfunc()which の使用法に間違った呼び出し指定子があったことでした。その関数の正確なコピーを定義して名前をwinfunc()付けreturn CFUNCTYPE(result, *atypes)((name, dll), tuple(aflags))return WINFUNCTYPE(result, *atypes)((name, dll), tuple(aflags)).

その後、プロトタイピングをさらに検証しました。いくらか渡すと、呼び出し時にオブジェクトが作成("someParameter",POINTER(aType),2)され、そのオブジェクトへのポインターが関数に渡されます。返されたタプルで、オブジェクトにアクセスできます。これは別の問題を引き起こします。cstring は文字の配列です。そのため、ctypes に を作成するように指示する必要があります。これは、次のようなことを意味します。WINFUNCTYPEaTypeaTypec_char array

うまく動作します。しかし残念なことに、ctypes は で指定されたサイズを無視して常に 255 文字の長さの cstring へのポインターを渡すようになりましたnMaxCount

私の意見では、出力パラメーターとして定義された動的にサイズ設定された cstring でその関数を機能させる方法はないと思います。唯一の可能性は、出力パラメーター機能を使用せずにLPCSTR入力パラメーターとして定義することです。次に、呼び出し先は自分でバッファーを作成し、ctypes.create_string_buffer()それを関数に渡す必要があります (C の場合と同様)。

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

c++ - MoveWindow()、メッセージをスキップ、回避、またはバイパスしますか?

でウィンドウのサイズを変更していますが、MoveWindow()そのウィンドウを所有していません。私は単に別のプロセスからそれを盗みました、そして今私はそのhWindowをいじっています。

しかし、私がそれを盗んだプロセスは、メッセージループを実行し、それらのメッセージの一部(、、、など)を処理するWM_MOVEことでした。これWM_SIZEによりWM_GETMINMAXINFO、基本的に、私がやりたいことを何もできなくなりました。フルスクリーンで実行するための鍵となる、指定された最大値を超えてサイズを変更できない場合もあります。

asmを使用する以外に、メッセージングをバイパスする方法はありますか?

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

windows - WM_SETTINGCHANGE メッセージを送信してデスクトップを更新する

このワンライナーを使用して、デスクトップの背景をプログラムで変更することができました。

…目的の壁紙をコンパイル済みスクリプトにドラッグ アンド ドロップします。

デスクトップを変更する別のプログラムがありますが、何らかの理由でWM_SETTINGCHANGEメッセージを送信できません (キーHKCU\Control Panel\Desktop\Wallpaperが更新されていることがわかります)。このメッセージを送信して壁紙の更新をトリガーするにはどうすればよいですか? メッセージはWM_SETTINGCHANGE正しいですか?それとも、最初のスクリプトが唯一の方法ですか?

私はこれを試しましたが、うまくいきません:

0xffffはすべてのウィンドウにメッセージをブロードキャストするためのもので、 を0x001a表しWM_SETTINGCHANGE0x0014は のコードですspi_setdeskwallpaper。Windows 7 のタスク バーがちらつきますが、壁紙は変わりません。

C、C++、または Visual Basic で私の問題を解決する場合は、自分で AutoIt に変換します (必要なのは、呼び出された関数の数値コードだけです)。

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

c# - Windowsアプリケーションからデータグリッドをスクレイプする方法

Windowsアプリケーション内のデータグリッドからデータをスクレイピングしようとしています。

GetWindowUser32.dllと、ハンドルを見つけてSendMessageコンテンツを読み取るなどのメソッドを使用して、アプリケーションのテキストボックスからデータを正常に取得しました。

DataGrid私の問題は、これらのメソッドがaまたは。の値を返さないように見えることですtable

誰かが私がこれを達成することができるかもしれない方法について何かアドバイスがありますか?

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

c# - Sending Click with user32.dll, messages appear in spy++ but button isn't clicked

I have problems with sending a Click to an application with the user32.dll. the button does not be clicked, but in spy++ the message do appear. i'm using win7 x64

The code is written in c#:

Here are the messages of spy++ of that button: enter image description here

If i send the the messages i get following: i don't if that is that problem but the lbuttondown, buttoup appears 2 times ( S + R ) and if i'm clicking it manuelly it gets 1 message (P) also tried to do it with WM_CLICK but then i have the same problem with it

Edit: Using now PostMessage so spy++ shows the same messages as i click it manually, but still the button seems not to be clicked

enter image description here


With this library I have the same problem.

code:

Message are sent, but button isn't be clicked enter image description here

Edit:

thanks for that link (http://www.hanselman.com/blog/IntroducingLync2010SuperSimpleAutoAnswerVideoKioskWithFullScreen.aspx), but also with this library i have the same problem :/

code:

Message are sent, but button isn't be clicked enter image description here

Edit2:

Answer of user was deleted, because i posted my comment as an answer:

This is not an answer, this belongs in your question. It doesn't match your code, clearly you are still posting BM_CLICK. Which is wrong, it should be sent and you should either send BM_CLICK or post the mouse messages. And you are looking at the wrong window, it is button's parent that gets the BN_CLICK notification and acts on it. Having the processs' keyboard state wrong would be a typical failure mode. – Hans Passant 18 hours ago

Regarding to that, why should it be the parents windows? bcs in spy++ (screenshot below i serached for that button (Class: BarButton) and the handle i get from user32.dll is also the same as that one in spy++ enter image description here

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

c# - Windows APIを使用して子ウィンドウの高さをスクロールしますか?

Windows API を使用してスクロール可能な子ウィンドウの高さを取得する方法を知っている人はいますか? GetWindowRect を見つけましたが、それは「可視」領域の RECT のみを返すように見えますが、「スクロール可能な」子ウィンドウ全体の RECT が必要です。このウィンドウはサードパーティのウィンドウなので、User32 WinAPI 関数を使用する必要があると思います。

ありがとう!

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

winapi - user32.dll で DialogBox() 関数を呼び出すにはどうすればよいですか?

WinAPI 関数を呼び出そうとしていますDialogBox()Microsoftの Web サイトでは、この関数は user32.dll に指定されています。ただし、dll からインポートする関数として宣言してこの関数をインポートしようとすると、リンカはそこにないと言いました。次に、C:\Windows\System32\user32.dll で依存関係ウォーカーを使用して関数を見つけようとしましたが、関数はありませんでした。(ただし、他のすべての派手な関数リテラルを見ることができました。)その理由は何ですか?また、どうすれば問題を解決できますか?

Dプログラミング言語を使用しています。標準ライブラリの Windows モジュールは、WinAPI の関数の完全なセットをインポートしません。そのため、手動でインポートする必要がある場合があります。