2012-01-17 48 views
1

我正在使用spy ++,並看到我有控制我有十進制匹配十六進制(課程轉換後)在間諜++和我看到父窗口匹配以及所以我將IntPtr作爲Label和IntPtr作爲窗體/窗口,但我的SendMessage無法更改目標應用程序中的文本。如何在另一個win32應用程序上設置文本

另一種方法可能會是做這樣的事情後,但什麼是控件的ID,我如何獲取 SetText of textbox in external app. Win32 API

我認爲這裏的hWnd必須控件的hWnd,是否正確?

SendMessageCall(hWnd, WM_SETTEXT, (IntPtr)value.Length, value); 

我注意到,獲取文本可以正常工作

SendMessageCall(hWnd, WM_GETTEXT, (IntPtr)sb.Capacity, sb); 

,我注意到,我得到了測試,查看正確的值,設置文本但它不會改變,然後獲取文本再次使用SendMessage這是新的價值,但應用程序仍然顯示錯誤的價值....嗯,我需要發送一個重新繪製消息也許,如果是這樣,那是什麼代碼?

感謝, 院長

+0

嘗試將'wParam'設置爲零,而不是'value.Length'。 – 2012-01-17 01:45:00

+0

nope,沒有工作,再加上我發現我可以使用winspector,我實際上看到目標組件接收設置文本消息(需要嘗試使rect無效,如下面的答案,看看是否有幫助) – 2012-01-17 14:19:35

回答

2

你不發送窗口消息強制重畫,而不是你打電話InvalidateRect(hWnd, NULL, TRUE)

+0

我的救世主......現在起作用了!稍後需要記住這個重畫,花費幾個小時,直到我甚至意識到這可能是問題。 – 2012-01-17 14:24:45

相關問題