2012-05-01 167 views
1

爲什麼GetClipBoardOwner始終與Acrobat Reader返回0,GetClipBoardOwner使用Adobe Acrobat Reader

當使用GetClipBoardOwner與任何其他MS應用,例如使用Notepad.exe的結果將是真正的剪貼板所有者,但與Adobe使用時Acrobat Reader軟件我沒有得到任何結果,這意味着0

我叫GetLastError函數(),它給出了一個正確的手柄,而是使用Adobe Acrobat Reader作爲結果給出0

可以請一些人解釋我這個?

千恩萬謝

回答

1

一些真正怪異的情況與使用Adobe Acrobat:

Acrobat使用EmptyClipboard()來採取所有權它打開與NULL(OpenClipboard(NULL))剪貼板,這意味着車主HWND是後空值。

到目前爲止,一切都很好,奇怪的是它比使用SetClipboardData()時所有者爲NULL,並且從MSDN和我自己的經驗來看,這種情況會導致SetClipboardData()失敗,但在Acrobat中SetClipboardData()不會失敗,並將剪貼板放置數據,而車主是NULL!

這就是爲什麼你會得到一個NULL所有者。新的懸而未決的問題是怎麼來的SetClipboardData()不會失敗...

+1

有與此相關的一個問題,並想指出的是您還可以設置剪貼板數據與有效的句柄集,然後摧毀窗口句柄和數據仍然在剪貼板上並且有效,GetClipboardOwner返回null。好像自從OpenClipboard說,NULL是有效的與當前任務相關聯,應該有類似GetClipboardOwnerTask - 返回主人的任務,在不依賴於一個窗口句柄。 – eselk

相關問題