メモ帳などの小さなアプリケーションを閉じるためにWM_CLOSEを使用する方法の例を教えてもらえますか?C#でWM_Closeを使用するには?
4
A
答えて
10
あなたに送信するハンドルがある場合は、
...Some Class...
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
//I'd double check this constant, just in case
static uint WM_CLOSE = 0x10;
public void CloseWindow(IntPtr hWindow)
{
SendMessage(hWindow, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
...Continue Class...
ハンドルを取得するのは難しいことがあります。コントロールの子孫クラス(基本的にWinForms)にはハンドルがあり、すべてのトップレベルウィンドウをEnumWindowsで列挙できます(より高度なp/invokeが必要ですがわずかです)。
0
メモ帳を閉じたいとします。次のコードは、それを行います。
private void CloseNotepad(){
string proc = "NOTEPAD";
Process[] processes = Process.GetProcesses();
var pc = from p in processes
where p.ProcessName.ToUpper().Contains(proc)
select p;
foreach (var item in pc)
{
item.CloseMainWindow();
}
}
考慮事項:
をメモ帳には、それがポップアップ表示されますいくつかの保存されていないテキストがある場合は、「あなたが保存しますかを......?」プロセスは何のUIを持っていない場合、それはあなたがすぐにクローズ処理を強制したい場合は、のPInvokeを移動したい場合は
item.CloseMainWindow()
と
item.Kill();
を交換してください
'item.CloseMainWindow()' threw an exception of type
'System.InvalidOperationException' base {System.SystemException}:
{"No process is associated with this object."}
例外以下のスローダイアログまたは選択したアイテムからハンドルを使用することができます。
item.Handle; //this will return IntPtr object containing handle of process.
関連する問題
- 1. C#でWM_Closeを使用する
- 2. C#でWM_Closeを使用する
- 3. WM_DESTROY、WM_CLOSEバイパスIMessageFilterを
- 4. クリーンアップ操作のインターセプトWM_CLOSE
- 5. C++でCreateProcessWithLogonWを使用するには?
- 6. C++でHidD_GetHidGuid()を使用するには?
- 7. NLogをC++で使用するには?
- 8. GuidsをC#で使用するには?
- 9. C#でクッキーを使用するには?
- 10. C++でerrnoを使用するには
- 11. xsdをC#で使用するには?
- 12. C#でSendmessageを使用するには?
- 13. C++でスイッチケースを使用するには?
- 14. CloseWindowとWM_CLOSEの関係は何ですか
- 15. C#with AIRを使用するには?
- 16. Objective-CでC++クラスを使用する
- 17. C/C++でApache ActiveMQを使用する
- 18. 私のアンドロイドアプリケーションでc/C++/objective cのようなネイティブコードを使用するには?
- 19. C/C++を使用して.comファイルを作成するには?
- 20. C++でregexで変数を使用するには?
- 21. C#でRSA暗号化でキーファイルを使用するには?
- 22. デバッグ中にASP.NET(C#)でConsole.WriteLineを使用するには?
- 23. C++クラスメソッドで使用するのはcout
- 24. C++ 11を使用するライブラリでC++ 14を使用できますか?
- 25. win32 C/C++ APIで定義されているWM_LBUTTONDOWN、WM_COMMAND、WM_CLOSEなどのWindowsメッセージはどこにありますか?
- 26. リモートでC#を使用してLINUXファイルをコピーするには?
- 27. テンプレートを使用してC++で型を指定するには?
- 28. C++でGDI +を使用してイメージファイルタイプを取得するには?
- 29. C#でホットキーを使用してプログラムを起動するには?
- 30. C#でOleDbDataAdapterでパラメータを使用する
私は名前を付ける必要がありますか –
@Hamish、*メモ帳のような他の小さなアプリケーションを閉じたい、質問を読んでする必要がありますそれを閉じるためのapplciationの? – TheVillageIdiot
* @karthikは、別のアプリケーション私は*その他*を追加するように役立っていると思います – Anuya