メモ帳などの小さなアプリケーションを閉じるために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. クリーンアップ操作のインターセプトWM_CLOSE
- 6. C++でerrnoを使用するには
- 7. xsdをC#で使用するには?
- 8. C#でSendmessageを使用するには?
- 9. C++でCreateProcessWithLogonWを使用するには?
- 10. Cでマルチスレッドを使用するには?
- 11. NLogをC++で使用するには?
- 12. C++でOSVRを使用するには?
- 13. C++でコールバックを使用するには?
- 14. C++でHidD_GetHidGuid()を使用するには?
- 15. C#でマルチスレッドを使用するには?
- 16. C#でクッキーを使用するには?
- 17. GuidsをC#で使用するには?
- 18. Cでパイプを使用するには?
- 19. C++でクラスを使用するには?
- 20. C++でスイッチケースを使用するには?
- 21. CでGstSplitMuxSinkを使用するには?
- 22. CloseWindowとWM_CLOSEの関係は何ですか
- 23. WM_CLOSEを無視するウィンドウを閉じますか?
- 24. C/Objective CでSSE命令セットを使用するには?
- 25. C#with AIRを使用するには?
- 26. Apache-FlinkでC/C++を使用する
- 27. Objective-CでC++クラスを使用する
- 28. C/C++でApache ActiveMQを使用する
- 29. C#でIEnumerableをListに使用する
- 30. Qt C++で使用するC#DLLをラップする方法は?
私は名前を付ける必要がありますか –
@Hamish、*メモ帳のような他の小さなアプリケーションを閉じたい、質問を読んでする必要がありますそれを閉じるためのapplciationの? – TheVillageIdiot
* @karthikは、別のアプリケーション私は*その他*を追加するように役立っていると思います – Anuya