關於如何讀取指定對話方塊輸入框中內容

2021-06-29 14:58:52 字數 1549 閱讀 2119

來自:

最近在論壇上看到乙個帖子,讀取輸入框中的內容,我也正在做這方面東西,於是就動手做了一下,原本以為很簡單的東西,實際著手去做的時候倒是遇到了不小的麻煩。

首先想要獲得乙個未知的對話方塊的edit控制項的內容無非就是幾個步驟:

1,獲得所要獲得內容的控制代碼

2,獲得控制項控制代碼

3,獲得控制項內容

第一步沒什麼好說的關鍵在於第二步和第三步,我上網查了好多資料,可就是不能得到重要的結果,網上還有好多朋友和我有一樣的困惑,如何獲得乙個控制項的控制代碼?網上的很多朋友說控制項是視窗的子視窗,可以列舉所有視窗的子視窗,但可以想象不光是列舉比較麻煩,列舉出來之後判斷是否是你要找的控制項的控制代碼也是相當麻煩,你需要乙個乙個去測試。我們就是想得到乙個edit控制項的控制代碼有這麼麻煩麼?或者說有沒有現成的工具?當然有!spy++

看到沒有control id 0000044f,說明控制項的id就是0000044f,但是注意這個十六進製制的數,程式中應該這樣寫0x0000044f,控制項的id一般是不會變化的,那麼獲得控制項的控制代碼也就是輕而易舉的事h1=getdlgitem(h,0x0000450) ;乙個函式就搞定,(h是這個視窗的控制代碼)。

有了edit控制項控制代碼如何獲取裡面的內容呢?這又是個麻煩的事,於是我又上網看了好多資料,有人說用getwindowtext,可是我試了好多次發現getwindowtext呼叫總是失敗返回的錯誤**是126。這是怎麼回事呢?於是上msdn上查了一下,msdn上是這麼說的getwindowtext:to retrieve the text of a control in another process, send a wm_gettext message directly instead of calling getwindowtext.大概意思就是取edit control的文字發訊息wm_gettext,而不用getwindowtext。這下知道了吧,你要想得到乙個按鈕的文字getwindowtext是可以得到的,但是你想要得到乙個edit控制項的文字,就不能用這個辦法了,那我們就sendmessage吧,是不是有點神奇?要取他的訊息,就要給他發訊息。

最終的程式如下:

#include "stdio.h"  

void main()

; hwnd h=null,h1=null,h2=null;

h=::findwindow(null,"連線 校園網");

h1=getdlgitem(h,0x0000450) ;

if(h1==null)

printf("getdlgitem fail!");

sendmessage(h1,wm_gettext,255,(lparam)temp);

printf("%s\n",temp);

h2=getdlgitem(h,0x000044f) ;

if(h2==null)

printf("getdlgitem fail again!");

sendmessage(h2,wm_gettext,255,(lparam)temp);

printf("%s\n",temp);

}

對話方塊中顯示對話方塊

一 對話方塊中顯示對話方塊的方法 1 首先建立要在對話方塊裡顯示的那個對話方塊,命名為 idd inner 設定這個對話方塊的屬性 1 style 選擇 child 中文版 樣式 選擇 下層 2 border 為 none 中文版 邊框 選擇 無 2 為了顯示時能夠準確定位,我們可以在右邊要顯示對話...

關於對話方塊

1.1 一般new的時候在初始化的時候,而進行銷毀的時候是在程式退出的時候。1.2 就如windows中的,在init函式進行new操作然後在onclose函式中進行delete操作。1.3 注意 在沒有不得已的時候不要在標頭檔案中包含其他標頭檔案,這是非常之高危險的事情,盡量的使用前置宣告。1.4...

讀取檔案對話方塊

uigetfile 的用法 標準開啟檔案對話視窗 1.filename,pathname,filterindex uigetfile filterspec,title example filename,pathname,filterindex uigetfile m pick a matlab co...