獲取窗口句柄有什麼好處?昨天小編隻是在微頭條随手發了一條關于句柄的内容,沒想到居然很多人感興趣,由于微頭條的結構限制并不能很好的将句柄講清楚,今天特地在這裡将小編所掌握的關于句柄的知識分享給大家,我來為大家講解一下關于獲取窗口句柄有什麼好處?跟着小編一起來看一看吧!
昨天小編隻是在微頭條随手發了一條關于句柄的内容,沒想到居然很多人感興趣,由于微頭條的結構限制并不能很好的将句柄講清楚,今天特地在這裡将小編所掌握的關于句柄的知識分享給大家。
句柄是什麼我們先看權威的解釋:句柄是整個windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個4字節(64位程序中為8字節)長的數值,來标識應用程序中的不同對象或實例,諸如,一個窗口,按鈕,圖标,滾動條,輸出設備,控件或者文件等。應用程序能夠通過句柄訪問相應的對象的信息;
句柄控制對象的原則是:程序在運行時系統會在為進程分配一塊内存,用來存儲32位無符号整數,這些數值就是句柄,每個句柄在此處可以理解為一個指針變量,指向系統中一塊在進程期間固定的内存。而這塊内存不存别的東西,全部儲存的是一個個地址,這個地址就是在進程運行期間各對象所在内存的地址。通過這個地址我們就能獲取到對應的對象;Windows是一個以虛拟内存為基礎的操作系統,在這種環境下,Windows内存管理器經常在内存中來回移動對象,以此來滿足各種應用程序的需要。對象被移動意味着它的地址變化了,所以在運行過程中我們需要一個唯一且不變的标記來與每個對象對應,已達到不失去對對象的控制權的目的;如下圖所示:
理解句柄上面說的還是有點繞,那麼我們該怎麼去理解才能夠更容易的掌握呢?我覺得用身份證來進行印證理解是最貼切的。身份證和句柄一樣都是唯一的,且都代表一個具體的實體(對象)。每個人擁有一個唯一的身份證号碼,通過身份證号碼我們有可以去警察局處查住址登記簿,不管你這個人住址怎麼變,隻要你每次變更住址都會到警察局登記更新你的新住址,這樣我們都能通過身份證号碼在住址登記簿找到你的住址,從而找到你這個人。
或者你也可以用二級指針的概念來理解句柄,隻不過句柄不具備很多指針的功能,比如賦值、獲取屬性的,在這裡隻是用來印證理解。
查看窗體句柄的工具這裡介紹一個可以快速查看窗體句柄的一個工具,大家在開發中可以通過這個工具輔助自己開發。這個工具就是spy
spy
這個軟件如果大家是用vs開發的話,安裝vs一般是默認安裝這個軟件的,大家按下圖所示找一下就可以:
窗體句柄有什麼用關于窗體句柄的作用,這裡給大家舉一個最簡單的例子,大家就會有很大的沖動想去學習句柄的使用了。假設現在有一個别人開發好的軟件,現在需要向這個軟件發一些命令,但是它又沒有提供接口怎麼辦呢?這時候我們可以通過句柄來獲取窗體控件對象,并通過windows的API去給對應的對象直接發消息;
這裡通過windows定義的系統消息WM_GETTEXT(0x000D)來獲取控件的text值;當然你還可以幹很多事,隻要是windows系統有定義的命令都可以發送給控件對象,如果讓button點擊一下,輸入框的值改變等等;獲取text值的代碼如下(這邊是用CSharp實現的,因為開發速度快~~):
這裡就不詳細講user32這裡的系統API的用法了,因為内容太多,這裡隻是給大家演示一下windows窗體句柄的一個作用,讓大家有一定的了解;
如果大家對操控别人的窗體程序有興趣可以留言給我,我可以專門寫一篇關于這個的文章;
END純手KEY,希望大家多多支持小編,點個關注~~~
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!