Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Copy Unicode to clipboard
Message
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01414441
Message ID:
01414754
Views:
58
Does it work, when you modify Sergey's program like this?
* Based on  http://www.berezniker.com/content/pages/visual-foxpro/copy-unicode-text-clipboard
&& Copy Unicode text into Clipboard
FUNCTION CopyUnicodeText2Clipboard(tcUnicodeText)
LOCAL lnDataLen, lcDropFiles, llOk, i, lhMem, lnPtr, lcUnicodeText, lhMem2, lnPtr2, lcTextDBCS
#DEFINE CF_UNICODETEXT  13
#define CF_TEXT             1
 
&&  Global Memory Variables with Compile Time Constants
#DEFINE GMEM_MOVABLE 	0x0002
#DEFINE GMEM_ZEROINIT	0x0040
#DEFINE GMEM_SHARE		0x2000
 
&& Load required Windows API functions
=LoadApiDlls()
 
llOk = .T.
lcUnicodeText = tcUnicodeText + CHR(0)+CHR(0)
lnDataLen = LEN(lcUnicodeText)
&& Copy Unicode text into the allocated memory
lhMem = GlobalAlloc(GMEM_MOVABLE+GMEM_ZEROINIT+GMEM_SHARE, lnDataLen)
lnPtr = GlobalLock(lhMem)
Sys(2600, lnPtr, lcUnicodeText)
=GlobalUnlock(lhMem)
lcTextDBCS = Strconv(lcUnicodeText,6)
lhMem2 = GlobalAlloc(GMEM_MOVABLE+GMEM_ZEROINIT+GMEM_SHARE, Len(m.lcTextDBCS))
lnPtr2 = GlobalLock(lhMem2)
Sys(2600,lnPtr, m.lcTextDBCS)
=GlobalUnlock(lhMem2)

&& Open clipboard and store Unicode text into it
llOk = (OpenClipboard(0) <> 0)
IF llOk
	=EmptyClipboard()
	llOk = (SetClipboardData(CF_UNICODETEXT, lhMem) <> 0)
	&& If call to SetClipboardData() is successful, the system will take ownership of the memory
	&&   otherwise we have to free it
	IF NOT llOk
		=GlobalFree(lhMem)
	ENDIF
	llOk = (SetClipboardData(CF_TEXT, lhMem2) <> 0)
	IF NOT llOk
		=GlobalFree(lhMem2)
	ENDIF
	&& Close clipboard
	=CloseClipboard()
ENDIF
RETURN llOk
This would copy the text in two formats and produce the same order of the clipboard formats that you get when you copy from Excel.
--
Christof
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform