-
夥計,我已經用C++做到了這一點,VB也是一樣,你可以先在要控制的程式的文字框中輸入指定的問題,比如“abc”,然後使用EnumchildWindows遍歷控制代碼下所有控制項的控制代碼,然後使用GetWindowText取出每個控制項。
控制代碼,發現為"abc"返回控制控制代碼。
找到控制代碼,使用 sendmessage(handle, wm settext....您可以設定所需的任何值。
-
這可能嗎?
我不知道你的想法是否正確,我認為,它應該是子類捕獲。
也就是說,視窗將訊息作為任何系統傳送,然後另乙個視窗使用子類捕獲技術來捕獲訊息並對其進行處理。
這取決於你取得了什麼成就,它現在不能給你。
-
您可以將文字框作為引數傳遞,該引數被定義為文字框型別的變數。
-
如果你使用 VB,你必須呼叫 API 來做到這一點! VC也一樣!
-
首先,視窗的控制代碼根本不是固定的,因此不宜使用常量來表示視窗控制代碼。 VB 窗體具有乙個名為 hwnd 的屬性,該屬性儲存視窗的控制代碼。
其次,“32770”是乙個普通形式的視窗類名,如果要找到這樣的視窗,可以使用控制代碼=findwindow(視窗類名,視窗名)來查詢。
如果要查詢子視窗的控制代碼,假設父視窗具有要 phandle 的控制代碼,則可以使用 chandle = findwindowex(phandle, 0, 子視窗類名, vbnullstring) 來完成。 此時,將找到父視窗中名稱為“子視窗類名”的第乙個子視窗。 如果要查詢下乙個子視窗,則需要使用 chandle2 = findwindowex(phandle, chandle, 子視窗類名, vbnullstring)。
現在我們知道第乙個子視窗的控制代碼是 h1,子視窗類被命名為"edit",那麼我們可以使用以下語句查詢第二個子視窗:
h2 = findwindowex(874523, h1, "edit", vbnullstring)
但是,建議使用變數將控制代碼儲存到父視窗。 順便說一句,如果此時 h2 為 0,則表示此父視窗中沒有第二個類名"edit"子視窗。
-
到目前為止想到的方法:
1. findwindow 獲取程式的視窗控制代碼。
2. findwindowex 查詢文字框的控制代碼。
3. GetWindowText 或 SendMessage 傳送 WM GetText 訊息以獲取內容。
4.根據得到的文字型別(Unicode ANSI),進行最後的轉換並清除空白處理。
我不明白的是,手柄一直在變化,如何處理?
我應該如何處理訊息的內容?
由於我的軍銜低,我現在沒有被分配到我的同志中......
乙個文字框,還是乙個靜態的文字框,我怎樣才能獲得其文字的控制代碼,然後直接呼叫它來閱讀其中的文字?
使用 sendmessage(getdlgitem(hwnddlg, idc edit), wm gettext, max path, reinterpret cast(lpfile)) 獲取文字的副本! 希望師傅能解決!
如果是VC++,剩下的就看不懂了! 最好使用 winapi!MFC 也有效! 學習 MFC!
-
你能具體說一下嗎? 不明白你的意思。
-
.版本 2元件 視窗元件 1
程式集變數 parent,整數。
程式集變數 account,整數。 子程式按鈕 1 在父視窗標題上單擊以獲取控制代碼 (“2010”)。
輸出除錯文字(父級)。
帳戶視窗將查詢子項(父項,到文字 (“atl:30a44018”))。
輸出除錯文字(帳號)。
-
你首先使用spy++來檢視你找到的是否是乙個盒子手柄,而不是你的手柄設定的盒子? 確認它是盒子,然後使用其他人給你的方法。
-
首先,hwnd hwnd=findwindow("你那扇帶框的窗戶");
然後是 getdlgitem(hwnd,id)。
這恐怕做不到,按照你說的,你玩的網遊是用DirectX寫的,Direct中的架構和Windows Windows完全不同,直接中光彈窗就夠難了,更別說操作裡面的東西了。 >>>More
每個視窗的右上角有三個小圖表,分別是最小化、關閉和恢復(上下),如果要縮小,可以選擇單擊恢復(向下)按鈕。 >>>More
這樣你就可以使用一些快捷方式來做一些重複性的工作。 例如,如果要複製和貼上文章,通常需要兩個操作,但是如果設定巨集,則只需乙個鍵即可完成。 當然,可以程式設計更多動作。