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

來源:互聯網
上載者:User

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

       首先想要獲得一個未知的對話方塊的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 "windows.h"#include "stdio.h"void main(){int k=0;char temp[255]={0};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);}

        最終效果如下:

         做最後的申明:菜鳥言論僅供娛樂。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.