問題タブ [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.
windows - ShowCursor が機能しない
システム マウスを非表示にするために、ShowCursor (user32.dll) を使用する単純な C# win32 コンソール アプリを作成しようとしています。ShowCursor(false) を呼び出すと (当然のことながら) -1 が返されますが、マウス カーソルは残ります。ShowCursor(true) で再度呼び出すと、1 が返されます (ただし、カーソルが消えることはないため、目に見える効果はありません)。
ありがとう。
excel - Excel UserForm のフェードインとフェードアウトのアニメーションを無効にする
Excel 2007 (および 2010) で VBA を使用して、ユーザー フォームを表示および非表示にするときに、標準のフェードインおよびフェードアウト アニメーションを無効にする方法はありますか。特にフェードアウトは、私が作成しようとしているユーザー インターフェイスには遅すぎます。
おそらく、user32
関数AnimateWindow
には無効にできる設定がありますが、私はそれを理解していません。
編集:これは審美的な目標です。パフォーマンスの問題はありません。OS によって処理される でのフェードアウトにはMe.Hide
1/2 秒かかります。オーバーライドして瞬時にできるかどうかを知りたいです。
c# - GetWindowText() でエラーがスローされ、try/catch でキャッチされない
GetWindowText に対して以下のコードを実行すると、次のエラーが内部例外としてスローされます。
{"保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。"}
2 つの質問があります。
try catch でエラーがキャッチされないのはなぜですか?
try/catchを使用する以外に、このタイプのエラーが発生したときにプログラムのクラッシュを停止する方法を教えてください
乾杯
python - Python ctypes: LPCSTR [out] パラメータを使用したプロトタイプ
私は現在モジュールに取り込んでおり、を使用して既に受け取ったハンドルでctypes
user32 関数を呼び出そうとしています。今回は、さらに一歩進んで、 で関数を呼び出す代わりに関数プロトタイプを使用したいと思いました。引数を出力パラメータとして宣言するのに問題がありますが。GetWindowText
HWND
FindWindow
ctypes.windll.user32.GetWindowText
lpString
私の最初の試みはこのように見えました:
(ここで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 に を作成するように指示する必要があります。これは、次のようなことを意味します。WINFUNCTYPE
aType
aType
c_char array
うまく動作します。しかし残念なことに、ctypes は で指定されたサイズを無視して常に 255 文字の長さの cstring へのポインターを渡すようになりましたnMaxCount
。
私の意見では、出力パラメーターとして定義された動的にサイズ設定された cstring でその関数を機能させる方法はないと思います。唯一の可能性は、出力パラメーター機能を使用せずにLPCSTR
入力パラメーターとして定義することです。次に、呼び出し先は自分でバッファーを作成し、ctypes.create_string_buffer()
それを関数に渡す必要があります (C の場合と同様)。
c++ - MoveWindow()、メッセージをスキップ、回避、またはバイパスしますか?
でウィンドウのサイズを変更していますが、MoveWindow()
そのウィンドウを所有していません。私は単に別のプロセスからそれを盗みました、そして今私はそのhWindowをいじっています。
しかし、私がそれを盗んだプロセスは、メッセージループを実行し、それらのメッセージの一部(、、、など)を処理するWM_MOVE
ことでした。これWM_SIZE
によりWM_GETMINMAXINFO
、基本的に、私がやりたいことを何もできなくなりました。フルスクリーンで実行するための鍵となる、指定された最大値を超えてサイズを変更できない場合もあります。
asmを使用する以外に、メッセージングをバイパスする方法はありますか?
windows - WM_SETTINGCHANGE メッセージを送信してデスクトップを更新する
このワンライナーを使用して、デスクトップの背景をプログラムで変更することができました。
…目的の壁紙をコンパイル済みスクリプトにドラッグ アンド ドロップします。
デスクトップを変更する別のプログラムがありますが、何らかの理由でWM_SETTINGCHANGE
メッセージを送信できません (キーHKCU\Control Panel\Desktop\Wallpaper
が更新されていることがわかります)。このメッセージを送信して壁紙の更新をトリガーするにはどうすればよいですか? メッセージはWM_SETTINGCHANGE
正しいですか?それとも、最初のスクリプトが唯一の方法ですか?
私はこれを試しましたが、うまくいきません:
0xffff
はすべてのウィンドウにメッセージをブロードキャストするためのもので、 を0x001a
表しWM_SETTINGCHANGE
、0x0014
は のコードですspi_setdeskwallpaper
。Windows 7 のタスク バーがちらつきますが、壁紙は変わりません。
C、C++、または Visual Basic で私の問題を解決する場合は、自分で AutoIt に変換します (必要なのは、呼び出された関数の数値コードだけです)。
c# - Windowsアプリケーションからデータグリッドをスクレイプする方法
Windowsアプリケーション内のデータグリッドからデータをスクレイピングしようとしています。
GetWindow
User32.dllと、ハンドルを見つけてSendMessage
コンテンツを読み取るなどのメソッドを使用して、アプリケーションのテキストボックスからデータを正常に取得しました。
DataGrid
私の問題は、これらのメソッドがaまたは。の値を返さないように見えることですtable
。
誰かが私がこれを達成することができるかもしれない方法について何かアドバイスがありますか?
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:
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
With this library I have the same problem.
code:
Message are sent, but button isn't be clicked
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
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++
c# - Windows APIを使用して子ウィンドウの高さをスクロールしますか?
Windows API を使用してスクロール可能な子ウィンドウの高さを取得する方法を知っている人はいますか? GetWindowRect を見つけましたが、それは「可視」領域の RECT のみを返すように見えますが、「スクロール可能な」子ウィンドウ全体の RECT が必要です。このウィンドウはサードパーティのウィンドウなので、User32 WinAPI 関数を使用する必要があると思います。
ありがとう!
winapi - user32.dll で DialogBox() 関数を呼び出すにはどうすればよいですか?
WinAPI 関数を呼び出そうとしていますDialogBox()
。Microsoftの Web サイトでは、この関数は user32.dll に指定されています。ただし、dll からインポートする関数として宣言してこの関数をインポートしようとすると、リンカはそこにないと言いました。次に、C:\Windows\System32\user32.dll で依存関係ウォーカーを使用して関数を見つけようとしましたが、関数はありませんでした。(ただし、他のすべての派手な関数リテラルを見ることができました。)その理由は何ですか?また、どうすれば問題を解決できますか?
Dプログラミング言語を使用しています。標準ライブラリの Windows モジュールは、WinAPI の関数の完全なセットをインポートしません。そのため、手動でインポートする必要がある場合があります。