最近VC程式中用如下代碼獲取目標視窗文本并放入對話框的RichEdit中
TCHAR buf[16*1024] = {0};
::SendMessage(g_hTargetWnd, WM_GETTEXT, _countof(buf), (LPARAM)buf);
GetDlgItem(IDC_TXTSEND)->SetWindowText(buf);
對多數視窗,比如 記事本、EditPlus 的視窗,能夠正常獲得文本
但是對于PHP編輯器 PHPDesigner 8.1,我有時獲得正常文本,有時獲得一堆亂碼。相同的內容,從 PHPDesigner拷貝到記事本,從記事本獲取文本,是正常的
一開始以為是我的程式哪里有問題,但后來用Spy++試驗,發現移到 PHPDesigner 8.1的代碼視窗,多次移開又移入,可以發現,Spy++獲得的文本(“標題”)同樣有時正常,有時亂碼。可以確認,無論是正常時,還是亂碼時,句柄是同一個, PHPDesigner 8.1的代碼視窗未做任何編輯操作。
從Spy++看,代碼視窗是 TSynEdit型別,我就不清楚為什么會發生這種情況?是TSynEdit特有的,還是PHPDesigner特有的,或者其他原因。
有誰能探究一把
uj5u.com熱心網友回復:
多半是編碼問題。TSynEdit是個delphi的第三方組件,基本可以確定是它的問題,它運行時后臺會有很多動作不停在處理文本的高亮格式編碼等,用訊息獲取它的文本不太靠譜,看看TSynEdit是否有提供介面匯出它的文本吧。
擼過
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130115.html
