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