- 作成者投稿
- 2010年6月22日 1:21 pm #9454YuOメンバー
[環境]
Windows Vista Ultimate (x86) SP3
EmEditor Professional 9.17
SysInternals Desktops 1.2.0.0 (SysinternalsSuite 2010/05/21版)[状況]
複数のデスクトップが作成されている環境において,
・デスクトップAでEmEditorが起動されている
・デスクトップBでEmEditorを起動しようとする
上記の状態になった場合に,デスクトップB側で起動しようとしたEmEditorが高負荷状態になったままになる。
A側は問題なく使えるが,B側はウィンドウの表示さえされない[希望する動作]
上策:デスクトップBでEmEditorが起動する
妥協策:デスクトップAに新たにタブが増え,デスクトップB側で起動したEmEditorは終了するなぜ上策かというと,デスクトップB上で起動したということは,関連する作業がデスクトップB上に存在する可能性が高く,
デスクトップAとのデスクトップスイッチを行わなくて済むためです。[技術情報]
SysInternals Desktopsは,Dependency WalkerによるAPIのインポート情報を見る限り,
CreateDesktopW APIを使ってデスクトップを作っているようです。
MSDN: CreateDesktop Function (Windows)
http://msdn.microsoft.com/en-us/library/ms682124.aspxそして,作られた複数のデスクトップ間で,ウィンドウハンドルは共有できないようです。
EnumWindowsやFindWindowExでの列挙では他のデスクトップの情報は出てこず,
ウィンドウハンドルを直接指定してのSendMessageはウィンドウハンドルが無効となります。
# 正確には,SendMessageTimeoutWで調査しました。EmEditor内部でどのように情報を渡しているのかわかりませんが,
他の共有可能な管理情報が見つかるのに,ウィンドウが見つからないことで探し続けて高負荷状態になっているのではないかと予想しています。実際には,Win+EやWin+Rの動作も動いたり動かなくなったり怪しい状態になるので,
このような環境を使う人は少ないとは思いますが,どこかのタイミングでよいので対策をしていただければと思います。2010年6月22日 8:25 pm #9455Yutaka EmuraキーマスターYuOYuO 様
いつも EmEditor Professional をお使いいただき、ありがとうございます。
確かに問題が再現しました。/sp オプションで別プロセスで起動すれば問題ないのですが、通常に起動すると、このような場合はフリーズしてしまいます。
次の v10 RC 20 では、このような場合に、自動的に別プロセスで起動するように修正しました。公開されたらお試しください。v10 RC 版は、
http://jp.emeditor.com/modules/newbb/viewforum.php?forum=12
の最新のスレッドからダウンロードしていただけます。
他にも何かご質問がございましたら、ご遠慮なくご連絡ください。
どうぞよろしくお願い申し上げます。2010年7月1日 6:01 pm #9517YuOメンバーV10の製品版にて解消されていることを確認しました。
素早い対応,ありがとうございました。 - 作成者投稿
- このトピックに返信するにはログインしてください。