2013-10-29 3 views
0

이미지를 클립 보드로 보내려고 할 때 알파 채널이 손실되는 문제에 직면했습니다. here은이 소프트웨어에 붙여 넣기 파일을 복사하면 알파 채널이 보이지만 보존해야합니다. 이 고려 사항에 따라 Windows 탐색기에서 허용하는 파일에 Ctrl + C을 시뮬레이트합니다. Clipview을 사용하여 15 : CF_HDROP 필드가 내 목표와 관련이 있음을 발견했습니다. win32clipboardCF_HDROP 형식으로 win32clipboard 데이터를 설정하는 방법은 무엇입니까?

import win32clipboard 
win32clipboard.OpenClipboard(0) 
file1="C:\\Users\\User\\Desktop\\test.png" 
win32clipboard.SetClipboardData(15, file1) 
win32clipboard.CloseClipboard() 

내가 어떤 오류가이 일을하지 않는 사용하여이 필드를 설정하려고했으나 같은 유니 코드 파일 이름의 there 튜플이 저장되어 있어야합니다 설명하기 때문에 나는이 새로운 클립 보드의 콘텐츠를 사용하려고하면 작동하지 않습니다 CF_HDROP 필드에 있습니다.

나는 진행 방법을 모른다. 또한 file1= (unicode('C:\\Users\\User\\Desktop\\CANEVAS\\test.png'),) 으로 시도했지만 나는이 오류가 발생했습니다 :

TypeError: expected a readable buffer object.

답변

0

documentation for CF_HDROP는 win32clipboard.GetClipboardData가 내장되어 지원 CF_HDROP에 대한

The data consists of an STGMEDIUM structure that contains a global memory object. The structure's hGlobal member points to a DROPFILES structure as its hGlobal member.

을 말한다. STGMEDIUM 및 DROPFILES 구조를 해독하여 파일 이름의 튜플을 생성합니다.

설명서에는 SetClipboardData에 파일 이름의 튜플에서 STGMEDIUM 및 DROPFILES 구조를 구성하는 해당 코드가 있다고 명시되어 있지 않습니다.

구조체를 작성하고 SetClipboardData 함수로 전달하는 것이 얼마나 쉬운지를 알기 위해 Python 또는 FFI에 대해 충분히 알지 못합니다. 또는이 작업을 수행 할 기존 라이브러리가있는 경우.

관련 문제