diff --git a/onionshare_gui/webapp.py b/onionshare_gui/webapp.py index d2c951cf..80f2c3f8 100644 --- a/onionshare_gui/webapp.py +++ b/onionshare_gui/webapp.py @@ -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")