私はこの断続的で一貫性のない問題を抱えており、長い間私を夢中にさせてきました: 私のプログラムでは、GetClipboardData(CF_TEXT)は 90% (またはその程度) の確率で成功しますが、時々 NULL を返します。
これは、GetClipboardData(CF_TEXT) を呼び出す前に OpenClipboard() が常に成功する (そして戻り値がチェックされる) にもかかわらずです。
90% の成功率は、まったく同じページに対するものであることに注意してください。(つまり、そこに CF_TEXT コンテンツがあることを知っています)
注: 失敗すると、すぐに GetLastError() を呼び出しますが、返されるのは "操作が正常に完了しました"だけです。
問題のコードは次のように単純です。
if (::OpenClipboard(hwndW))
{
HANDLE handleClip = ::GetClipboardData(CF_TEXT);
if (handleClip == NULL)
dw = GetLastError()
}
これに間違った GetLastError() コードを挿入する可能性があるのは何ですか?
このような一貫性のない動作を引き起こす可能性のあるものは何ですか?
他のプロセスがクリップボードをロックしている可能性はありますか? もしそうなら、どのように私はそれを取り戻すのですか?
このような問題をトラブルシューティングまたはデバッグするにはどうすればよいですか?