NotifyIconのメニュー内でデスクトップの最前面ウィンドウ(タスクトレイをクリックする前の作業ウィンドウ)を取得しようとしてます。NotifyIcon.MouseDownでGetForegroundWindowを呼び出すと、タスクバー(Shell_TrayWnd)が返ってくるようです。コンテキストメニュー.ClickではFrameworkのウィンドウクラスが返ってくるようです。特定のウィンドウスタイルを持つZオーダーのトップウィンドウを探すというようなやり方になると思うのですが。ウィンドウ操作では無理ならタスクトレイのアイコンがアクティブになる直前をフックしてGetForegroundWindowするってことになりますでしょうか。一歩踏み込んだヒントをお願いします。NotifyIconのメニュー内でデスクトップの最前面ウィンドウ(タスクトレイをクリックする前の作業ウィンドウ)を取得しようとしてます。NotifyIcon.MouseDownでGetForegroundWindowを呼び出すと、タスクバー(Shell_TrayWnd)が返ってくるようです。コンテキストメニュー.ClickではFrameworkのウィンドウクラスが返ってくるようです。特定のウィンドウスタイルを持つZオーダーのトップウィンドウを探すというようなやり方になると思うのですが。ウィンドウ操作では無理ならタスクトレイのアイコンがアクティブになる直前をフックしてGetForegroundWindowするってことになりますでしょうか。タイマーかけて定期的にトップレベルウィンドウを取得しておくとか。他にもいくつか条件づけが必要かも。それでも誤検出可能性は否めないかな。タイマーかけて定期的にトップレベルウィンドウを取得しておくとか。タイマーだと、タイマー周期の合間にトップレベルウィンドウが入れ替わる可能性があるので、フックの方が確実性は高いでしょうね。15:44:54)こんにちは。Subとしたら、異なるアクティブなウィンドウ毎に異なるHandleが返ってきました。一歩踏み込んだヒントをお願いします。一歩踏み込んだ状況説明があるとやりやすいです。推測ですが「タスクトレイアイコンからの操作で、アクティブなウィンドウのスクリーンショットを撮るツールを作ろうとしています」とかですね。いや、ちょうどそういうのを作ろうとしていたもので。タスクバーを返すというのはいい事を聞きました。あれば、メニューをクリックした何秒か後に撮るので、それまでに目的のウィンドウをアクティブにしといてください、というツールはありますね。NotifyIconのメニュー内でデスクトップの最前面ウィンドウ(タスクトレイをクリックする前の作業ウィンドウ)を取得しようとしてます。22:44:16)えぇ、急きょ半ドンになったので帰っちゃいました。れいさん、ひどりさんタイマ監視まで飛び出しているので一発OKみたいなのは無いみたいですね。確実に取得できるタイミングを見つけたほうがよさそうです。さんMouseMoveですか。よし!が、タスクバーの他の部分をクリックした後だとだめかも?ですね。推測ですが「タスクトレイアイコンからの操作で、アクティブなウィンドウのスクリーンショットを撮るツールを作ろうとしています」とかですね。なんだ、知ってんじゃないの。(笑もともとVB6のころに作ったものを今まで新言語に移行し続けてきました。キャプチャ機能そのものはできあがってます。ホットキーで通常時にアクティブウィンドウのキャプチャはできていまして、タスクトレイメニューにデスクトップに対するメニューを作りました。GetDesktopWindow一発なので問題はありませんで、じゃぁメニュー選択時のアクティブウィンドウに対するメニューもということでの質問でした。ホットキーでできてますのでいらないと言っちゃいらないわけですが。一応方法は知っておこうと。最前面のウィンドウとフォアグラウンドウィンドウは別の概念です.なるほど、TopMostとFocusedWindowですね。忘れてましたが、これはアプリの仕様として決める必要がありますね。>アクティブとはかつ、重なっていた時の処理も出てきそうです。最初に書きましたが、連鎖反応で急きょ明日はおやすみとなりましたのでお試しは月曜以降ということでご容赦ください。#それまではきっとシャノンさんが。10:52:40)アクティブになる直前というメッセージがあれば、Shell_TrayWndウィンドウのウィンドウプロシージャでフックすればと思いましたがだめ。いうようにいろいろ試しましたが、苦労の割にはというところが無きにしも非ず。ホットキーにより要件は満たしていますのでこれで終わりにします。ありがとうございました。