made copy to clipboard work in windows. fixes #46

This commit is contained in:
Micah Lee 2014-06-21 20:29:26 -04:00
parent 8f9d43055c
commit d8dbbcc42a

View file

@ -65,8 +65,22 @@ def start_onionshare():
@app.route("/copy_url")
def copy_url():
global clipboard
clipboard.setText(url)
if platform.system() == 'Windows':
# Qt's QClipboard isn't working in Windows
# https://github.com/micahflee/onionshare/issues/46
import ctypes
GMEM_DDESHARE = 0x2000
ctypes.windll.user32.OpenClipboard(None)
ctypes.windll.user32.EmptyClipboard()
hcd = ctypes.windll.kernel32.GlobalAlloc(GMEM_DDESHARE, len(bytes(url))+1)
pch_data = ctypes.windll.kernel32.GlobalLock(hcd)
ctypes.cdll.msvcrt.strcpy(ctypes.c_char_p(pch_data), bytes(url))
ctypes.windll.kernel32.GlobalUnlock(hcd)
ctypes.windll.user32.SetClipboardData(1, hcd)
ctypes.windll.user32.CloseClipboard()
else:
global clipboard
clipboard.setText(url)
return ''
@app.route("/heartbeat")