获取IE地址栏的URL(C语言实现)

  不知道别人是怎么学Windows编程的,获取URL在别人来说也许是个简单的不能在简单的程序,我也没什么Windows编程基础呢,要写个Windows程序,还是蛮费劲的。昨天百度,Google了好长时间,找资料倒是看到不少这个功能的源码,vb的,delphi的,c++的,可是我都不懂,不过上面有需要调用的WINDOWS API这个就足够了,查查这API啥作用就大概知道该咋用了。所以我用C写的········

  网上这实现这功能的多的是,但是用C的没有,我贴出来最主要是想给那些刚学C不久的学生看看吧,让他们也知道C也能写程序,以前我学C的时候,发现这玩意怎么可能编出程序来呢,很纳闷,感觉C也就做点数学运算,但是有计算器谁没事写这代码啊,我承认那时候的我很无知(当然现在也还是无知)。

  看人家代码的时候一开始不知道IEFrame这些是怎么来的,为什么是这个····后来看到有人说用SPY++,就上网搜了一个来用。今天才发现人家VC本身就有这个工具。

  还有就是我这装的是英文盗版XP系统,IE没法更新,还是IE6.0,所以在其他IE版本应该也许大概差不过可能不行吧,不过,知道这个怎么弄的,其他版本的IE应该也没问题了吧········应该说其他类似的程序也都知道怎么实现了。

  这个代码本身感觉并没有太大的意义,本来想写的是个实时监控IE地址栏的,所以从昨天到现在一直在补hook知识,看到有的文章上说hook算是Windows的高级编程部分。对于我来说也确实看的费劲。今天一天都没出宿舍了,也没太大收获,到现在也没搞懂怎么实现hook。但是现在有点头绪了,相信也会很快搞出来,到时候分享出来跟新手一起学习。有人说写BHO或者Active X控件会更容易实现我想要的功能。但是那也是他们认为,因为我只会C和汇编,用汇编写···这个有点扯,所以我只能用C写了。

  好了,废话说的太多了,看代码吧·····

#include <windows.h>
#include <stdio.h>
#include <malloc.h>

int main(int argc, char* argv[])
{
    
    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,"ComboBoxEx32",   NULL);//    获得IE窗口下拉菜单句柄
    HWND hWnd4=FindWindowEx(hWnd3,0,"ComboBox",  NULL);        //    获得IE窗口下拉菜单当前项句柄
    HWND hWnd5=FindWindowEx(hWnd4,0,"Edit",NULL);            //    获得下拉菜单编辑框句柄
    if(hWnd5 != NULL)
    {
        int i=SendMessage(hWnd5,WM_GETTEXTLENGTH,0,0);        //    向IE窗口下拉菜单编辑框发送获取字符串长度的命令
        char *URL;
        URL = (char *)malloc(i);
        SendMessage(hWnd5,WM_GETTEXT,i+1,long(URL));        //    向IE窗口下拉菜单编辑框发送获取字符的命令
        printf("%s",URL);
        
    }
    else
    {
        MessageBox(NULL,"Don't find IE!","ERROR",0);
    }
    printf("\nPress the Enter key to exit!");
    getchar();
    return 0;
}
posted @ 2012-09-12 23:35  xss  阅读(4536)  评论(0编辑  收藏  举报