2012-05-12 3 views
1

問題があり、Web上で2〜3件の投稿がありました:C#アプリケーション(Clipboard.SetTextまたはClipboard.Clear)でクリップボードを使用しているとき、Chromeは無作為にそれを使用しているので、私のクリップボード要求は失敗します。Google Chromeでクリップボードを盗みます。

クロムを閉じても問題なく動作してからChromeを再起動しても、何分も失敗します。私は、これは迷惑な私です本当にクロムであることを確認するために、1秒タイマーとGetOpenClipboardWindow()、別のPInvoke :(と、次のコードを使用しています:

[DllImport("user32.dll")] 
    static extern IntPtr GetOpenClipboardWindow(); 

    [DllImport("user32.dll", SetLastError = true)] 
    static extern int GetWindowThreadProcessId(IntPtr hWnd, out int 
    lpdwProcessId); 


    IntPtr hwnd = GetOpenClipboardWindow(); 
    if (hwnd != IntPtr.Zero) 
    { 
     int processId; 
     GetWindowThreadProcessId(hwnd, out processId); 
     Process p = Process.GetProcessById(processId); 
     listBox1.Items.Add(p.Modules[0].FileName); 
    } 

はあなたのいずれかが、すでにこの問題を抱えていますか? ?

クロームクリップボードを盗んで、なぜあなたは知っていますか[編集] Chromeチームのメンバーのいずれかで

:親愛なる開発者、あなたは今日、これを読めば、私はあなたよりも多くの権限を持っているように、戻って私に私のクリップボードを与えます私はあなたのために2日間探しています。

+1

奇妙です。これはおそらくこれを行っているChromeにアドオンですか?それは他のマシンでも起こりますか? –

+1

この人にも起こった:http://code.google.com/p/chromium/issues/detail?id=86765 –

答えて

3

残っていることは残念ですが、別のプロセスでクリップボードが開いている場合、そのプロセスがクリップボードを閉じるまで解放する方法はありません。

+0

そうです。私が行うことができるのは、エラーを処理してChromeがその処理を行うのを待つことだけでした。時間がかかりすぎると、ユーザーに犯罪プログラムの再起動や終了を指示します。 –

0

あなたのアプリは(最終的にはあなたが制御できるので)ルールによって再生されていることを確認してください。あなたが行ったときに複数の開閉操作をしていないことを確認してください。たとえば、複数の書式をクリップボードに配置する場合は、2つではなく1つの開/閉ブロックでカプセル化する必要があります。更新後にクリップボードを閉じると、クリップボードの通知が生成され、クリップボードを監視する他のアプリケーションがトリガされ、新しいデータが表示されます。したがって、意図した操作ごとに1つのそのようなイベント(複数ではない)を生成するようにしてください。意図しない操作を作成しないでください(アプリを起動するときにクリップボードを開いたり閉じたりしないでください)。クリップボードを更新したばかりの場合は、ウィンドウ(wm_DrawClipboardなど)からの通知メッセージに反応している他のアプリ(wm_DrawClipboardなど)に頭をぶつけずにすぐにクリップボードを読むことができるとは思わないでください。

関連する問題