小玩意1-實時獲取IE瀏覽器輸入框URL地址


主要參考http://www.cnblogs.com/scrat/archive/2012/09/12/2682626.html

主要思路如下:

通過 FindWindow() FindWindowEx()函數獲得窗口句柄,通過SendMessage獲得具體值。具體函數方法請自行百度。

FindWindow這個函數檢索處理頂級窗口的類名和窗口名稱匹配指定的字符串。這個函數不搜索子窗口。

FindWindowEx是在窗口列表中尋找與指定條件相符的第一個子窗口 。

需要注意的地方是獲得窗口的參數問題 這里是如何得到如"IEFrame","WorkerW"等的值呢?

利用工具spy++。Spy++ (SPYXX.EXE) 是一個基於 Win32 的實用工具,它提供系統的進程、線程、窗口和窗口消息的圖形視圖。使用 Spy++ 可以執行下列操作: 顯示系統對象(包括進程、線程和窗口)之間關系的圖形樹。 搜索指定的窗口、線程、進程或消息。 查看選定的窗口、線程、進程或消息的屬性。

打開軟件:

IEFrame ->WorkerW-> ReBarWindow32-> Address Band Root-> Edit

代碼如下:

#include <windows.h>
#include <stdio.h>
#include <malloc.h>
char URL[1000] = {0};
void getURL()
{
    HWND hWnd =FindWindow("IEFrame", NULL);                        //獲得IE窗口句柄
    HWND hWnd1=FindWindowEx(hWnd, 0, "WorkerW", NULL);              //獲得IE窗口的工作區句柄
    HWND hWnd2=FindWindowEx(hWnd1, 0, "ReBarWindow32", NULL);      //獲得IE窗口的菜單欄句柄
    HWND hWnd3=FindWindowEx(hWnd2, 0, "Address Band Root", NULL);    //獲得IE窗口地址欄句柄
    HWND hWnd4=FindWindowEx(hWnd3, 0, "Edit",NULL);                  //獲得IE窗口地址欄編輯框句柄

    if(hWnd4 != NULL)
    {
        int i=SendMessage(hWnd4,WM_GETTEXTLENGTH,0,0);           //向IE窗口地址欄編輯框發送獲取字符串長度的命令
        memset(URL, 0 ,1000);
        SendMessage(hWnd4,WM_GETTEXT,i+1,long(URL));             //向IE窗口地址欄編輯框發送獲取字符的命令
        printf("%s\n",URL);
        return;
    }
    else
    {
        printf("Don't find IE!\n");

    }
    return;
}
int main(int argc, char* argv[])
{
   //一個死循環,每隔一秒去取得IE當前輸入框內容
    while(1)
    {
        getURL();
        Sleep(1000);
    }
    return 0;
}

 ps:代碼可能還有些問題,待進一步改進。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM