Datei in Clipboard einfügen
Verfasst: Sonntag 17. Mai 2015, 14:07
Hallo
Also ich habe folgendes Problem mein Programm soll in einem fremden Programm Dateien einfügen das funktioniert dort leider
nur per Rechtklick dann 2 mal "E" und Enter da es keine Schnittstellen hat(wird vom Clipboard eingefügt).
Das simulieren des rechtklicks und der tasten ist kein problem ich habe den Dateipfad der einzufügenden Datei z.b C:\temp1.txt
weiss aber leider nicht wie ich einen Verweis auf eine Datei ins Clipboard einfügen kann wie es die STRG+C Tastenkombionation in
Windows tut.
Für Text verwende ich diesen Code :
Gibt es eine möglichkeit mit ctypes auch Dateien in das Clipboard zu kopieren ?
Bzw gibt eine eine andere möglichkeit dies zu realisieren ich stecke nach längerer Suche leider bei diesem Problem fest?
Danke
Also ich habe folgendes Problem mein Programm soll in einem fremden Programm Dateien einfügen das funktioniert dort leider
nur per Rechtklick dann 2 mal "E" und Enter da es keine Schnittstellen hat(wird vom Clipboard eingefügt).
Das simulieren des rechtklicks und der tasten ist kein problem ich habe den Dateipfad der einzufügenden Datei z.b C:\temp1.txt
weiss aber leider nicht wie ich einen Verweis auf eine Datei ins Clipboard einfügen kann wie es die STRG+C Tastenkombionation in
Windows tut.
Für Text verwende ich diesen Code :
Code: Alles auswählen
import ctypes
wcscpy = ctypes.cdll.msvcrt.wcscpy
OpenClipboard = ctypes.windll.user32.OpenClipboard
EmptyClipboard = ctypes.windll.user32.EmptyClipboard
GetClipboardData = ctypes.windll.user32.GetClipboardData
SetClipboardData = ctypes.windll.user32.SetClipboardData
CloseClipboard = ctypes.windll.user32.CloseClipboard
CF_UNICODETEXT = 13
GlobalAlloc = ctypes.windll.kernel32.GlobalAlloc
GlobalLock = ctypes.windll.kernel32.GlobalLock
GlobalUnlock = ctypes.windll.kernel32.GlobalUnlock
GMEM_DDESHARE = 0x2000
def get():
OpenClipboard(None)
handle = GetClipboardData(CF_UNICODETEXT)
data = ctypes.c_wchar_p(handle).value
pcontents = GlobalLock(handle)
data = ctypes.c_wchar_p(pcontents).value if pcontents else u''
GlobalUnlock(handle)
CloseClipboard()
return data
def put(data):
if not isinstance(data, str):
data = data.decode('mbcs')
OpenClipboard(None)
EmptyClipboard()
hCd = GlobalAlloc(GMEM_DDESHARE, 2 * (len(data) + 1))
pchData = GlobalLock(hCd)
wcscpy(ctypes.c_wchar_p(pchData), data)
GlobalUnlock(hCd)
SetClipboardData(CF_UNICODETEXT, hCd)
CloseClipboard()Bzw gibt eine eine andere möglichkeit dies zu realisieren ich stecke nach längerer Suche leider bei diesem Problem fest?
Danke