VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

從VFP剪貼中文到其他軟體視窗變成亂碼??

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
yder



註冊時間: 2009-09-03
文章: 14


第 1 樓

發表發表於: 星期四 十月 15, 2009 12:38 pm    文章主題: 從VFP剪貼中文到其他軟體視窗變成亂碼?? 引言回覆

我不論從vfp的開發環境, 或編譯好的.exe執行畫面, 複製中文文字, 要貼到像記事本, 或Word 等其他視窗時, 都會變成亂碼, 但從word等貼進vfp則不會.
我猜是因為我使用vfp6是英文版本, 請問是不是補充了那些 .dll 可以解決這個問題呢, 還是非得用繁中版的vfp才可以, 謝謝 !!
我會需要如此剪貼的原因是因為User有時需要在政府單位的網站上輸入資料, 如果不能用剪貼的, 變成同樣資料要打兩遍.
回頂端
檢視會員個人資料 發送私人訊息
jurgen



註冊時間: 2007-09-24
文章: 17


第 2 樓

發表發表於: 星期四 十月 15, 2009 3:30 pm    文章主題: 引言回覆

在網上找到的
但你必須把要複製的資料先轉為 unicode 格式


FUNCTION CopyUnicodeText2Clipboard(tcUnicodeText)
LOCAL lnDataLen, lcDropFiles, llOk, i, lhMem, lnPtr, lcUnicodeText

#DEFINE CF_UNICODETEXT 13

* 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)

=CopyFromStr(lnPtr, @lcUnicodeText, lnDataLen)
=GlobalUnlock(lhMem)

* 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
* Close clipboard
=CloseClipboard()
ENDIF

RETURN llOk

************************************************************
FUNCTION LoadApiDlls
************************************************************
* Clipboard Functions
DECLARE LONG OpenClipboard IN WIN32API LONG HWND
DECLARE LONG CloseClipboard IN WIN32API
DECLARE LONG EmptyClipboard IN WIN32API
DECLARE LONG SetClipboardData IN WIN32API LONG uFormat, LONG hMem
* Memory Management Functions
DECLARE LONG GlobalAlloc IN WIN32API LONG wFlags, LONG dwBytes
DECLARE LONG GlobalFree IN WIN32API LONG HMEM
DECLARE LONG GlobalLock IN WIN32API LONG HMEM
DECLARE LONG GlobalUnlock IN WIN32API LONG HMEM
DECLARE LONG RtlMoveMemory IN WIN32API As CopyFromStr LONG lpDest, String @lpSrc, LONG iLen

RETURN
ENDFUNC
回頂端
檢視會員個人資料 發送私人訊息
yder



註冊時間: 2009-09-03
文章: 14


第 3 樓

發表發表於: 星期四 十月 15, 2009 5:10 pm    文章主題: 引言回覆

我努力來去測試看看, 先感謝 jurgen 大大
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作