3

WM_CLOSEそのメッセージを送信すると、Windows シェル エクスプローラー プロセスを閉じようとし、ユーザーにウィンドウをシャットダウンするように求めるという点で、Windows エクスプローラー プロセスに問題が発生しています。これは意図した動作ではありません。どうすれば回避できるのでしょうか。

PC 全体を同時にシャットダウンせずに、個々のエクスプローラー ウィンドウを適切に閉じるにはどうすればよいですか? 目標は、ユーザーが自分で X ボタンをクリックした場合と同じ動作をすることです。

編集:エクスプローラープロセスのすべての子ウィンドウを取得できることがわかりましたが、その時点から、どのウィンドウが実際のユーザーに表示/対話可能なエクスプローラーウィンドウであるかを特定する方法がわかりません。

11/21/2012 16:27:49 [12]  DEBUG - Closing process with PID: 2680
11/21/2012 16:27:49 [12]  DEBUG - Window has 11 descendant windows
11/21/2012 16:27:49 [12]  DEBUG - Found child window:  hWnd: 590746 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: 4:27 PM hWnd: 656010 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window:  hWnd: 2294392 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window:  hWnd: 1245586 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: User Promoted Notification Area hWnd: 2949496 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: System Promoted Notification Area hWnd: 1245548 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window:  hWnd: 852646 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window:  hWnd: 918356 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: Running applications hWnd: 1769950 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: Running applications hWnd: 1179980 Window State: Normal
11/21/2012 16:27:49 [12]  DEBUG - Found child window: TF_FloatingLangBar_WndTitle hWnd: 458926 Window State: Normal
4

1 に答える 1

1

窓口はどうしていますか?テキストによる winapi 呼び出しでハンドルを取得できるため、おそらくデスクトップ エクスプローラーにはキャプションがありません。http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx lpWindowName パラメータを見てください。

また、ここで推測しているだけですが、GetDesktopWindow() http://msdn.microsoft.com/enによって返されるハンドにどのように関連するかという限り、デスクトップ エクスプローラーと他のエクスプローラー インスタンスとの関係を見ることができます。 -us/library/windows/desktop/ms633504(v=vs.85).aspx

于 2012-11-21T20:54:20.550 に答える