問題タブ [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 投票する
2 に答える
3886 参照

c# - win ce5.0 で user32.dll を使用する

組み込みのWindows ce5.0コンピューターでuser32.dllのsendmessageを使用しようとしています。組み込みのuser32をテストするためだけに作成した同じ単純なプログラムが、Windows XPコンピューターで動作しています。アプリとdllは同じフォルダーにあります。

Win ce5.0 にあるときに表示されるメッセージは次のとおりです。Pinvocke DLL 'user32.dll' が見つかりません

コード:(私はウェブで見つけて、それを使ってsendmessageを試しました)

誰でもこれで私を助けることができますか?

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

c# - C#コードから呼び出されたSetTimerWindowsAPIのコールバックメソッドに関する問題

私は現在、古いVB6コードをC#(.Net Framework 3.5)に移行するプロジェクトに携わっています。私の使命は、移行を行うことです機能の強化やリファクタリングは、プロジェクトの後のフェーズにプッシュされます。理想的ではありませんが、そこに行きます。

したがって、VB6コードの一部は、WindowsAPISetTimer関数を呼び出します。これを移行しましたが、動作させることができません。

移行されたプロジェクトはDLLとしてビルドされます。DLLにリンクし、問題のコードを呼び出す小さなWinFormsテストハーネスを作成しました。非常に簡単です。電話をかけることができることを証明するだけです。

移行されたDLLの関連コードは次のとおりです。

上記の呼び出しは、DLLによって外部のDoProcessing()メソッドでラップされます。これにより、StartTimer(両方のWindowsカーネル呼び出し)を呼び出す前にCreateEventを使用してイベントが作成され、処理を続行する前にWaitForSingleObjectが呼び出されます。AsyncObjectCaller関数は、実行の一部としてイベントを設定し、処理を続行できるようにします。

だから私の問題はこれです:コードが上記のように呼び出された場合、それは失敗します。AsyncObjectCallerコールバックメソッドがトリガーされることはなく、WaitForSingleObject呼び出しがタイムアウトします。

ただし、StartTimerでMessageBox.Show呼び出しのコメントを外すと、期待どおりに機能します...ある種。AsyncObjectCallerコールバックメソッドは、MessageBox.Showの呼び出しの直後にトリガーされます。コード内のさまざまな場所にMessageBox.Showを配置しようとしましたが、どこに配置しても同じです(SetTimerの呼び出し後に呼び出される限り)。コールバック関数は、メッセージボックスがトリガーされるまでトリガーされません。表示されます。

私は完全に困惑しており、主に.Netのバックグラウンドから来ているVB6またはWindowsAPIコーディングにあまり精通していません。

助けてくれてありがとう!

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

c# - .NET アプリケーションの自動化

可能な最も簡単な方法を使用して、別の .NET アプリケーション (c# で記述) を使用して、非表示の .NET アプリケーションを自動化しようとしています。これはテスト目的ではなく、このアプリケーションのスクリプトの不足を補う方法です。

ホワイトフレームワークは既に試しましたが、大きな問題が 1 つあります。それは、その動作です。遅く、非表示のウィンドウやコントロールでは機能しません (winAPI のように)。さらに、白を「クリック」すると、マウスが移動し、対象のウィンドウが前面に移動します。

また、user32.dll ラッパーを使用することも考えていました。これは、ターゲットを処理する方法が必要なためですが、.NET アプリケーションでは機能しないことがわかりました。また、対象となるアプリケーションには「...」というラベルの付いた 5 つのボタンがあり、必要なボタンを 2 つ見つけるのは非常に難しいため、それを使用することも問題になります。また、コントロールの .NET id (開発者が GUI の設計時にコントロールに付けた名前) も使用したいと考えています。

ところで、私のターゲット アプリケーションはMeGUIです。私たちは多くのビデオ エンコーディングを行っており、このようなツールは大いに役立ちます。MeGUIを非表示にする必要があります。なぜなら、私は唯一のプログラマーであり、私のツールを使用している他のユーザーは、バックグラウンドで何が起こっているかを見てはならず、多くのウィンドウがあちこちに飛び出していることについて話すべきではありません。

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

c# - ウィンドウをアクティブにする必要があります

私はこのような状況にあります。アプリケーションのウィンドウハンドルがあります。アクティベートする必要があります。これらすべての機能を試しましたが、常に機能するとは限りません(ほとんどの場合、最初は機能しないため、手動でクリックしてアクティブにする必要があります。2回目以降は正常に機能します)これを行っているのは、実行する必要のあるフォームのForm.Activateイベントにコードが記述されているためです。アプリケーションはシングルインスタンスアプリケーションです。新しいインスタンスが作成されると、最初に他のプロセスの存在をチェックします。見つかった場合、ユーザーが古いフォームで作業できるように、古いプロセスのハンドルがこれらの関数に渡されます。アプリケーションは別のCアプリケーションから呼び出されます。[DllImport( "user32.dll")] public static extern int ShowWindow(IntPtr hWnd、int nCmdShow);

0 投票する
0 に答える
2164 参照

windows - Windowsの最小化/最大化/閉じるにカスタムボタンを追加する方法(x)

ウィンドウ(Microsoft Windowsウィンドウ...)のタイトルバーまたは最小化/最大化/閉じる場所の横に、プレーンテキスト以外のアイコン/ボタン/その他のものを(プログラムで)追加する方法があるかどうか疑問に思いました。ボタンはです。自分で描いて、ウィンドウの一部であるような錯覚を作り出すこともできますが、user32apiにそのような方法があるのではないかと思います。

これまでのところ、最小化/最大化/閉じるボタンを無効にする方法を見つけましたが、カスタムボタンを追加する方法はありませんでした。それは私には奇妙に思えます。

これが私が達成しようとしていることです: 代替テキスト

gdi / gdi +を使用してすべてのウィンドウにボタンを描画し、それが別のウィンドウと重なっているかどうかを検出し、重なっていない部分だけを表示することは、ありそうもない解決策のように思えるので、ここでどのように行われるのか疑問に思っています。おそらく、ボタンはウィンドウクラスに登録されているため、すべてのウィンドウにこのボタンがあります。何をすべきかポインタはありますか?

さらに、Unicodeが有効になっていないと仮定して、ボタンを作成するにはどうすればよいですか。次に、次のコードで:

私はすべての素晴らしいWindows定数をそれらの長い同等のもので置き換える必要があります....しかし、私がそれらを検索すると、私が得るのはこれだけです:http: //msdn.microsoft.com/en-us/library/bb775951 (v = VS.85).aspx

ポインタはありますか?

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

wpf - WPF システム コンテキスト メニュー項目をトグル可能にする

ウィンドウクロムに表示されるように、システムコンテキストメニューに「常に上に」項目を追加する次のコードがあります。正常に動作しますが、オン/オフが切り替えられているかどうかを示すチェックマークなどを表示したいと思います。

どうすればこれを行うことができますか?

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

c# - C#ポップアップウィンドウを待って入力用に選択する方法

私は基本的にC#で専用のマクロプレーヤー/レコーダーを書いています。私ができる必要があることの1つは、ポップアップウィンドウ([名前を付けて保存...]ダイアログボックスなど)を待ってから、マクロ入力の再生を続行するように選択できるようにすることです。理想的には、開いているウィンドウをポーリングして、それらのタイトルから一致するウィンドウタイトルを検索できるようにしたいと思います。ダイアログが新しいプロセスとして表示されない可能性が高いため、明らかにProcesses.GetProcesses()を使用することはできません。

開いているウィンドウとそのタイトルはどこで入手できますか?

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

c# - Windows Forms C# プログラム: ボタンの状態 (有効/無効または表示/非表示) を確認する方法は?

エラーが発生すると実行が停止するプログラムがあります。実行を停止すると、「開始」ボタンが有効になり、「停止」ボタンが無効になります。プログラムの実行中 (「開始」をクリックした後)、「開始」ボタンは無効になります。

私の目標は、間隔 (2 分) で「開始」ボタンのステータスをチェックし、「開始」ボタンが有効になったときに SMTP 電子メールを送信するプログラムを作成することです。したがって、プログラムの実行がいつ停止したかを知らせてくれます。

FindWindow を使用してプログラムを見つけることができましたが、ボタンを見つけることができませんでした。ましてや、プログラムの有効化と無効化を区別することはできませんでした。

Spy++ を使用すると、ボタンのハンドルは 000A0B0A になります。ボタンが有効な場合のスタイルは 54000000 です。無効にすると 5C000000 になります。プログラム、またはフォーム/ウィンドウのハンドルは 00050B2C です。

私の質問は次のとおりです。その特定のボタン (ハンドル 00A0B0A) のスタイルを確認するために、どのコマンドを使用できますか?

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

c# - Win32 アプリケーションの出力を Picture Box にリダイレクトすることはできますか?

以前、Windows Media Player の出力を C# の Picturebox にリダイレクトするコード サンプルを見たことがあります。他の Win32 アプリケーションでこれを行うことに興味があります。出力をリダイレクトしたいプロセスの hWnd ハンドルを取得できるという事実を考慮して、どうすれば目標を達成できますか?

user32.dll の ShowWindow メソッドを使用してプロセスのウィンドウを最小化/最大化できるので、問題の解決策があるはずです。

ありがとう。

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

c# - 別のアプリケーションのキャプションを読み取ることができません

メインプログラムでウィンドウハンドルを見つける方法のジャンプ...

C#で

notepad.exe を実行して何かを入力し、SPY++ (0x111111) を使用してメイン ウィンドウ ハンドルを見つけます。

このコードは問題なく動作し、メイン ウィンドウのキャプションを返します。

: :しかし、notepad.exeの子のキャプションを見つけるために同じことをすると、strが何も設定されません。スパイ++は、子供のキャプションには価値があると私に言いました.