2012-09-13 113 views
2

我試圖從使用C++的spy ++中的'Messages'窗口中獲取文本。從Spy ++窗口中獲取文本

我試圖發送WM_GETTEXTLB_GETMESSAGE消息給窗口及其子,並且它不工作。

在記事本上測試的代碼,它只是工作正常,所以如何做到這一點?我調用這個函數EnumChildWindows(spyHwnd,EnumChildProc,1); // spyHwnd是「消息」窗口

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) 
{ 
    TCHAR text[40]; 
    int length = 0; 
    int index = 5; 
    length = SendMessage(hwnd,LB_GETTEXT,index,(LPARAM)text);//or WM_GETTEXT & maxLength=40 

    return true; 
} 
+0

你能提供相應的代碼嗎? –

+1

只是出於好奇,「保存日誌到文件...」菜單選項有什麼問題?該控件可能是一個「所有者繪製」的標準文本,不一定要存在並可用於您的消息。 –

回答

0

你要找的窗口中有一個「AfxWnd80u」類的句柄。我很確定它是所有者繪製的。它似乎沒有收到任何與塗料和鼠標相關的消息。 所有者繪製意味着Spy ++將文本存儲在內部的某處並手動繪製窗口畫布。

如果在同一個列表中打開「消息屬性」窗口,您可以看到正在使用的標準列表框控件。它顯然有不同的行爲 - 選擇看起來不一樣,滾動更流暢(這是一個可憐的證據,因爲這些東西都可以自定義,但還是有點說服力 - ?爲什麼你會在一個應用程序做不同的事情)

如果您搜索網頁爲「獲取文本AfxWnd」,你可以看到很多沒有答案的問題。有些人使用模擬Ctrl + C和獲取剪貼板內容,但Spy ++ Messages窗口似乎不支持Ctrl + C。

因此,在這裏不容易的WinAPI方式。

+0

謝謝,我認爲這是一個死路一條。 –

+0

@ssss,你最好是自己掛上消息,如果這就是你之後:[(使用鉤子(MSDN)](http://msdn.microsoft.com/en-us/library/windows/desktop /ms644960(v=vs.85).aspx)。 –

+0

我試圖做它作爲替換鉤(這不適用於vmware),但它似乎即使我得到的文本,它將無法正常工作,我想從VMWare獲取鍵盤消息我認爲間諜++接收它,但它沒有。所以我想知道如何從列表框中獲取文本來學習它。 –