新しいウィンドウが表示されるときの処理 – プログラミング – Home

新しいウィンドウが表示されるときの処理
 
通知
すべてクリア

[解決済] 新しいウィンドウが表示されるときの処理


Pie
 Pie
(@Pie)
ゲスト
結合: 23年前
投稿: 28
Topic starter  

VC++6.0,MFC,ダイアログベースで開発をしています。

自分の作っているアプリが実行され、新たにウィンドウを開くときの処理は
できるのですが、それ以外に、例えばIEで新しいウィンドウが表示されたとか、
デスクトップ上でフォルダを開いて新しいウィンドウが表示だれたときの
処理はどのように行えばいいのでしょうか?
OnNcCreateやOnShowWindowでは、対象がその(現在開発中の)アプリのみで、
上で述べたようなものには対応しないみたいなので何かいい方法をご存知の方
どうかご教授お願いします。


引用未解決
トピックタグ
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

個別にAPIのフックかな。
簡単な方法はないと思います
が。
#無理矢理ポーリング?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

自アプリ以外のところで開かれたウインドウの生成について
簡単な方法で知る事はできないと思います。
元々、同じアプリでもプロセスが違えば、その辺のメッセージは別々に管理されます。
これは通常のアプリを作る時はこの方が都合が良いし、そうでなくては困るからです。
基本的には、Banさんが書かれているようにAPIのフックくらいだと思います。
多分、相当面倒な事をしないと無理でしょう。
あと考えられるのは定周期でウインドウの列挙をしてその差分で検知するくらいでしょうか。
これだとタイミングによっては拾いそこねるでしょうし、厳密にウインドウが開くタイミ
ングで
捕まえられるかどうかは微妙ですね。
周期を狭くしすぎると他のアプリの動作の足を引っ張りそうですし。

なんにせよ、どうしてもやりたいのであれば、相当苦労する事を覚悟でやった方がいいか
と思いますよ。
決まったウインドウだけでよいなら監視対象を絞れるので定周期の監視でもある程度はい
けそうですけどね。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

SetWindowsHookEx じゃご要望にかなわないかな?


返信引用
Pie
 Pie
(@Pie)
ゲスト
結合: 23年前
投稿: 28
Topic starter  

皆様お返事ありがとうございます。

>なんにせよ、どうしてもやりたいのであれば、相当苦労する事を覚悟でやった方がいいか
>と思いますよ。

そうでしたか・・・。できるだけ簡単に処理を済ませたかったのですが、無理みたいですねぇ。

>SetWindowsHookExじゃご要望にかなわないかな?

ちょっと違う感じです。

新しくウィンドウが表示されたか否かを取得するのが難しいなら、自アプリのウィンドウ外での
クリックやダブルクリックの検出でもできればいいのですが。。。
何かいい方法はありませんでしょうか?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

単にウィンドウ外ということであればSetCaptureなどが使えますが、
その間、他のアプリはマウスが効かないので多分望みの動作ではなさそう。

であれば、今度はメッセージフックが必要ですね。

他人様の動作にかってに作用するのは、自分の操作より難易度が上がる、そういうものです。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

いずれにしてもフックというテクニックは必要になるでしょうね。
やろうとしている事が一般的なアプリケーションの範疇から外れているので
それなりにテクニックが要求されます。

どうしても必要な機能なのであれば、本腰を入れてフックについて勉強される事をお勧め
します。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

舌足らずだったかも。
一般的なという表現は曖昧ですね。
少なくともそのシステム内で自己完結できているようなアプリケーションでない場合、
と言うべきなのかな。私の感覚にでは極普通のアプリケーションは上記の表現を
含む物なので話的には通じるのですけれど。


返信引用
Pie
 Pie
(@Pie)
ゲスト
結合: 23年前
投稿: 28
Topic starter  

>どうしても必要な機能なのであれば、本腰を入れてフックについて勉強される事をお勧め
>します。

そうですよね。。。なかなか難しいですね。
フックについて勉強してから出直してきます。
とりあえず今現在実装できるか否か、どのような方法が必要なのかがわかったので
解決にはチェックを入れておきます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました