不知道别人是怎么学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; }