У меня есть эта периодически возникающая проблема, которая давно сводит меня с ума: в моей программе GetClipboardData (CF_TEXT) успешно выполняется 90% (или около того) времени, но каждый время от времени возвращается NULL.
Это несмотря на то, что OpenClipboard () всегда успешно (и возвращаемое значение проверяется) перед вызовом GetClipboardData (CF_TEXT).
Обратите внимание, что коэффициент успеха 90% относится к той же самой странице! (т.е. я знаю там есть содержание CF_TEXT)
Примечание. Когда происходит сбой, я немедленно вызываю GetLastError (), но все, что он возвращает, это: "Операция успешно завершена" .
Код, о котором идет речь, так же прост:
if (::OpenClipboard(hwndW))
{
HANDLE handleClip = ::GetClipboardData(CF_TEXT);
if (handleClip == NULL)
dw = GetLastError()
}
Что может добавить в этот код неправильный код GetLastError ()?
Есть идеи, что может вызвать такое непоследовательное поведение?
Возможно ли, что какой-то другой процесс блокирует буфер обмена? Если да, то как мне его вернуть?
Как мне устранить неполадки или отладить что-то подобное?