web-dev-qa-db-ja.com

Firefoxからクリップボードへのコピーは、Windows 7x64のサービスモードで実行されているSynergyでは機能しません

参考までに、1つのCentOS 5.5Linuxクライアントを搭載したWindows7x64でSynergy1.4.2サーバーを実行します。ほとんどのマウスとキーボードの機能は、期待どおりに機能します。以下は例外です。

サーバーからのコピー&ペースト->クライアントは特定の条件下で失敗します。 Linuxクライアントで行われたすべてのテキストコピーは機能しているようです(テキストをWindowsに貼り付けることができます)。逆は完全に真実ではありません。 Synergyを管理者権限を持つユーザーとして実行すると、Windows 7 x64サーバー上のテキストコピーはすべてのプログラムから機能しているように見えます(コピーしたテキストはどちらのマシンにも正常に貼り付けることができます)。 Synergyをサービスとして実行する場合(services.mscから開始)、Windows 7 x64サーバー上のテキストコピーは、Firefoxを除くすべてのプログラムから機能するように見えます。具体的には、サービスモードで、Firefoxでテキストを強調表示し、(a)[編集]-> [コピー]、(b)右クリック-> [コピー]、または(c)Control-Cのいずれかを実行すると、テキストを他の任意の場所に貼り付けることができますWindows 7サーバー上のプログラムですが、このテキストをLinuxクライアントに貼り付けることはできません。これのみ Firefoxで発生します。

回避策として(まだサービスモードのまま)、メモ帳でテキストドキュメントを開くことがよくあります。 Firefoxからテキストをコピーして、メモ帳に正常に貼り付けました。次に、メモ帳からテキストをコピーして、Linuxクライアントに正常に貼り付けることができます。繰り返しますが、Firefox以外の他のプログラムはこの動作を示しません(つまり、Googleからコピー/貼り付けできますChrome問題なく)。また、この問題のみは次の場合に発生します。 Windows 7 x64Synergyサーバーがサービスモードで起動します。

他の誰かがこれと同じ現象を経験しましたか?すべてのコメントや提案を歓迎します。

5
sivs422

最近、新しいWindows7マシンでこの問題が発生しました。私の場合、Linuxマシンがサーバーで、Windows 7(およびXP)がクライアントです。 XPとLinuxの間でどちらの方向にも問題なくコピーして貼り付けることができ、LinuxからコピーしてWindows 7に貼り付けることもできますが、Windows7からコピーすることはできません。デバッグメッセージを確認しますが、Windows 7の画面から移動したときにクリップボードのメッセージがまったく表示されないことを除いて、何も目立ちませんでした。

私には、おそらくWindows 7の更新されたセキュリティモデルの一部として、Synergyサービスがクリップボードを読み取ることができないようです。

これはSynergyのバグであると自信を持って言えると思いますが、簡単に修正できることを願っています。 (それが十分に迷惑になった場合、私は自分で行くと思います...)

0
Malvineous

私は同じ問題を抱えているようで、デバッグと修正に時間を費やすのに十分迷惑であることがわかりました(私にとって)。

症状は、クリップボード内のプレーンテキスト以外のエントリがすべて無視されているように見えることです。これは、MS Wordとクリップボードビューを開くことでうまく確認できます。エントリには、エントリの形式を識別する小さなアイコンがあるためです。

コードによると、各エントリには複数の形式があり、常にプレーンテキストのUTF-16でエンコードされているため、問題にはならないはずです。これはSynergyが期待していることです。

残念ながら、SynergyはEnumClipboardFormatsを介して利用可能なすべてのエントリ形式を列挙しようとしますが、これも問題はないはずですが、どういうわけか問題はありません。私は簡単なテストプログラムを書きましたが、そのアプローチには問題はありませんでした。 Synergyでは、EnumClipboardFormatsは、プレーンテキストの場合はCF_UNICODETEXTであり、それ以外の場合はまったく異なるものである最初の形式のみを返します。私のテストプログラムとして、他の形式を返す代わりに、SynergyでEnumClipboardFormatsを次に呼び出すと、意味がなく、文書化されていないエラー183(ERROR_ALREADY_EXISTS)が返されます。

CMSWindosClipboard :: getを以下の方法に置き換えると、問題は解決しました。

CString
CMSWindowsClipboard::get(EFormat format) const
{
IMSWindowsClipboardConverter* converter = NULL;
for (ConverterList::const_iterator index = m_converters.begin();
                        index != m_converters.end(); ++index) {
    converter = *index;
    if (converter->getFormat() == format) {
        HANDLE win32Data = GetClipboardData(converter->getWin32Format());
        if (win32Data != NULL) 
            return converter->toIClipboard(win32Data);
    }
}

return CString();
}
3
Thraidh

これは私にとってはうまくいきます: http://tots.1o24.org/how-to-fix-copy-paste-clipboard-issue-on-windows-7-synergy-client/

クライアントWindows7

サーバーLinux

解決策:Windows7クライアントでElevateを無効にする

1
rofrol