Win32 OleGetClipboard()関数がCLIPBRD_E_CANT_OPENを返すのはなぜですか?

StackOverflow https://stackoverflow.com/questions/139668

  •  02-07-2019
  •  | 
  •  

質問

Win32 API関数OleGetClipboard()はどのような状況で失敗し、 CLIPBRD_E_CANT_OPEN を返しますか?

その他の背景:Firefoxのバグ修正を支援しています。詳細はこちら:

バグ444800 -クリップボードからロスレス形式で画像データを取得できません

作成を支援した自動テストでは、OleGetClipboard()が失敗して CLIPBRD_E_CANT_OPEN を返すことがあります。それは予想外のことであり、Windowsクリップボードから画像データを取得するFirefoxコードは、その呼び出しが成功するかどうかに依存します。

役に立ちましたか?

解決

ドキュメントでは、 OpenClipboard が失敗すると、 OleGetClipboard がこのエラーコードで失敗する可能性があると記載されています。そのドキュメントを読むと、次のように表示されます。

" OpenClipboard は、別のウィンドウでクリップボードを開いていると失敗します。

これは排他的なリソースです。一度に開くことができるウィンドウは1つだけです。基本的に、できない場合は、しばらく待ってからもう一度試してください。

他のヒント

テストはターミナルサービスで実行されていますか? .NETからクリップボードを設定する際の CLIPBRD_E_CANT_OPENエラーを参照してください。

MSDNに表示されていることから、問題はクリップボードに実際にデータを 入れようとした人に起因していると思われます。データのソース。何らかの理由でOleSetClipboard()の呼び出しが失敗した場合、内容を抽出することはできません。 データがどのようにクリップボードに入れられているかを見て、これを実行するテストケースがあるかどうかを確認し(データをクリップボードにコピーします)、それからあなたが話している問題を引き起こします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top