2007年8月21日火曜日

同期と非同期

あー、思ったよりも深いかも。

ProcessクラスのWaitForExitメソッドで外部プロセスを実行した際には、呼びもとのAPでは全てのメッセージ処理が行われない、ということがわかったので色々と方法を試しているんだけど。VB6時代に利用していたWaitForSingleObject APIを利用したパターンだとまた微妙な動作をしてくれる。

子プロセスとして起動したAPの背景だけがクリアされる。それ以外の部分は最描写もキチンと行われている・・・。
これがWaitForExitメソッドだと全て再描写されないんだよね。
動き的にはAPI使っているほうがいいんだけど、どっちもダメな事には変わりないねぇ。

後は今思いついている最後の手として、

APを同期で起動した際、呼び出し元のAPではマウスのローカルフックを行う起動されたAPの終了を監視し、終了時にローカルフックを終了させる

という方向でいこうかと。こっちでの問題は「別ユーザーで起動したAP」の終了判断なんだよなぁ。Processクラスで起動できればExitイベントがあるからいいんだけど、別ユーザーの場合API使って起動するもんでねぇ・・・。
さて、どうしようか?

0 件のコメント:

コメントを投稿