2012-06-13 6 views
5

में क्लिपबोर्ड में एक फ़ाइल संग्रहीत करना python में विंडोज क्लिपबोर्ड में फ़ाइल के संदर्भ को संग्रहीत करने के लिए win32clipboard मॉड्यूल का उपयोग करने का कोई तरीका है। मेरा लक्ष्य एक छवि को ऐसे तरीके से पेस्ट करना है जो पारदर्शिता की अनुमति देता है। यदि मैं एक 'png' फ़ाइल को OneNote में खींच और छोड़ देता हूं या मैं फ़ाइल की प्रतिलिपि बनाता हूं और फिर इसे OneNote में पेस्ट करता हूं, तो यह पारदर्शिता को संरक्षित करता है। जहां तक ​​मैं कह सकता हूं, क्लिपबोर्ड पारदर्शी छवियों को स्टोर नहीं कर सकता है, यही कारण है कि इसे फ़ाइल का संदर्भ होना चाहिए।पाइथन

मेरे शोध से पता चलता है कि इसमें win32clipboard.CF_HDrop विशेषता शामिल हो सकती है लेकिन मुझे यकीन नहीं है।

तो, संक्षेप में संक्षेप में, मेरा लक्ष्य थोड़ा पाइथन कोड होना है जिसे मैं क्लिक कर सकता हूं और उदाहरण के लिए 'img.png' नामक मेरे डेस्कटॉप पर एक विशिष्ट फ़ाइल का उपयोग करता है। नतीजा यह है कि 'img.png' क्लिपबोर्ड में संग्रहीत हो जाता है और इसे अन्य कार्यक्रमों में चिपकाया जा सकता है। अनिवार्य रूप से, वही व्यवहार जैसे कि मैंने डेस्कटॉप पर फ़ाइल का चयन किया है, राइट-क्लिक किया है और 'कॉपी' चुना है।

संपादित करें: http://timgolden.me.uk/pywin32-docs/win32clipboard__GetClipboardData_meth.html

यह कहते हैं, "CF_HDROP" के साथ

+0

popen और clip.exe, मेरे सिर के शीर्ष से –

+0

यह पता चला है कि आप क्लिपबोर्ड में एक छवि स्टोर कर सकते हैं, लेकिन पारदर्शिता के साथ नहीं। मैं खालिद के जवाब को स्वीकार करूंगा, लेकिन यह 100% नहीं है जो मैं चाहता था। –

उत्तर

0
from PythonMagick import Image 
Image("img.png").write("clipboard:") 

"यूनिकोड फ़ाइल नाम के एक टपल" जुड़ा हुआ है: यह पृष्ठ सुझाव देने के लिए लगता है एक तरह से win32clipboard.CF_HDrop किसी भी तरह का उपयोग कर रहा है PythonMagick

+0

काम नहीं लग रहा है। जब मैं छवि पेस्ट करता हूं, तो अब इसकी पारदर्शी पृष्ठभूमि नहीं होती है। –

+0

तो आप कह रहे हैं कि कॉपी पेस्ट ऑपरेशन वास्तव में काम करता है, लेकिन आपकी छवि किसी भी तरह दूषित है? –

+0

मुझे नहीं लगता कि 'दूषित' सही शब्द है। जैसा कि मेरे प्रश्न में बताया गया है, एक ऐसी छवि चिपका रही है जिसमें पारदर्शी पृष्ठभूमि है, जो मुझे चिंतित करता है। मुझे लगता है कि मुद्दा यह है कि क्लिपबोर्ड छवि की जानकारी सीधे या किसी फ़ाइल के संदर्भ में संग्रहीत कर सकता है। यदि छवि डेटा संग्रहीत किया जाता है तो पारदर्शिता खो जाती है। यदि फ़ाइल का संदर्भ संग्रहीत किया जाता है, तो विंडोज़ को फ़ाइल में 'png' डालने पर पारदर्शिता को बनाए रखने का तरीका लगता है। –

1

के लिए windows binaries पकड़ो मैं इसे एक उत्तर के रूप में लिखता हूं, हालांकि यह केवल एक कदम है जो आपकी मदद कर सकता है, क्योंकि टिप्पणियों में बहुत से प्रारूपण विकल्प नहीं हैं आयनों।

मैं इस नमूने पटकथा लिखी:

import win32clipboard as clp, win32api 

clp.OpenClipboard(None) 

rc= clp.EnumClipboardFormats(0) 
while rc: 
    try: format_name= clp.GetClipboardFormatName(rc) 
    except win32api.error: format_name= "?" 
    print "format", rc, format_name 
    rc= clp.EnumClipboardFormats(rc) 

clp.CloseClipboard() 

तब मैं एक्सप्लोरर में एक छवि फ़ाइल का चयन किया और कॉपी; ,

format 49161 DataObject 
format 49268 Shell IDList Array 
format 15 ? 
format 49519 DataObjectAttributes 
format 49292 Preferred DropEffect 
format 49329 Shell Object Offsets 
format 49158 FileName 
format 49159 FileNameW 
format 49171 Ole Private Data 

यह "पसंदीदा DropEffect" संदिग्ध लगता है, हालांकि मैं एक Windows विशेषज्ञ से दूर कर रहा हूँ: तो, स्क्रिप्ट की रिपोर्ट निम्नलिखित उपलब्ध क्लिपबोर्ड प्रारूपों। मैं पहले FileNameW के साथ प्रयास करता हूं, हालांकि, यह आपके लिए नौकरी कर सकता है (मेरे पास OneNote इंस्टॉल नहीं है, क्षमा करें)। ऐसा लगता है कि यह अंत में डेटा के रूप में केवल पूर्ण पथनाम को 'utf-16-le' के रूप में एन्कोड किया गया है, जो अंत में '\0\0' के रूप में एन्कोड किया गया है)।