1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #9454
    YuO
    メンバー

    [環境]
    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の動作も動いたり動かなくなったり怪しい状態になるので,
    このような環境を使う人は少ないとは思いますが,どこかのタイミングでよいので対策をしていただければと思います。

    #9455
    Yutaka Emura
    キーマスター

    YuOYuO 様

    いつも EmEditor Professional をお使いいただき、ありがとうございます。

    確かに問題が再現しました。/sp オプションで別プロセスで起動すれば問題ないのですが、通常に起動すると、このような場合はフリーズしてしまいます。

    次の v10 RC 20 では、このような場合に、自動的に別プロセスで起動するように修正しました。公開されたらお試しください。v10 RC 版は、

    http://jp.emeditor.com/modules/newbb/viewforum.php?forum=12

    の最新のスレッドからダウンロードしていただけます。

    他にも何かご質問がございましたら、ご遠慮なくご連絡ください。
    どうぞよろしくお願い申し上げます。

    #9517
    YuO
    メンバー

    V10の製品版にて解消されていることを確認しました。
    素早い対応,ありがとうございました。

1 件の投稿を表示中 (合計 3 個)
  • このトピックに返信するにはログインしてください。