⑴ 句柄是什麼
昨天回答過了。
句柄是從英文翻譯過來的詞,原文叫handle,操縱桿的意思。翻譯成句柄,很令人費解。
從計算機軟體核心來看,句柄是一個無符號整型數,它相當於一個指針地址,指向一個「資源塊」,例如 HWND 型的 句柄,不同的句柄 指向 不同的 窗體資源塊。
從我們寫程序來看,可以把它看成 窗 的 ID ( 標識),例如:HWND hwd1,hwd2;
hwd1 就是 1號窗,hwd2 就是 2號窗。
對 hwd1 的操作,就是對 1號窗 做操作。
對 hwd2 的操作,就是對 2號窗 做操作。
c/c++ 有多種多樣的 句柄。我們把他們看成 ID 或 一樣東西的別名,一個對象(object) 的別名。
⑵ 句柄是什麼意思
句柄(handle),有兩種解釋
1,句柄是一種特殊的智能指針。當一個應用程序要引用其他系統(如資料庫、操作系統)所管理的內存塊或對象時,就要使用句柄。
2,整個Windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個4位元組長的數值,來標識應用程序中的不同對象和同類中的不同的實例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控制項或者文件等。
(2)編譯的句柄是什麼意思擴展閱讀:
注意事項:
1,內核對象句柄,是用來標識某個內核對象的一個ID同一個對象的該id對於每個進程是不同的,具體如何實現是ms不公開的演算法,以下是一個近似的,可能的演算法。
2,進程創建時,windows系統為進程構造了一個句柄表。
3,當該進程希望獲得一個內核對象句柄或者創建一個內核對象從而獲得該對象句柄時。
4,系統會將在句柄表中增加一個表項,表項的內容中存儲了指向目標內核對象的指針。
同時,系統返回這個表項在句柄表中的索引作為句柄。
⑶ 編程中句柄的意思是什麼
所謂句柄實際上是一個數據,是一個Long
(整長型)的數據。
句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,點陣圖,GDI對象等等。WINDOWS句柄有點象C語言中的文件句柄。
從上面的定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。從數據類型上來看它只是一個16位的無符號整數。應用程序幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之後其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。
如果想更透徹一點地認識句柄,我可以告訴大家,句柄是一種指向指針的指針。我們知道,所謂指針是一種內存地址。應用程序啟動後,組成這個程序的各對象是住留在內存的。如果簡單地理解,似乎我們只要獲知這個內存的首地址,那麼就可以隨時用這個地址訪問對象。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,Windows是一個以虛擬內存為基礎的操作系統。在這種系統環境下,Windows內存管理器經常在內存中來回移動對象,依此來滿足各種應用程序的內存需要。對象被移動意味著它的地址變化了。如果地址總是如此變化,我們該到哪裡去找該對象呢?
為了解決這個問題,Windows操作系統為各應用程序騰出一些內存儲地址,用來專門登記各應用對象在內存中的地址變化,而這個地址(存儲單元的位置)本身是不變的。Windows內存管理器在移動對象在內存中的位置後,把對象新的地址告知這個句柄地址來保存。這樣我們只需記住這個句柄地址就可以間接地知道對象具體在內存中的哪個位置。這個地址是在對象裝載(Load)時由系統分配給的,當系統卸載時(Unload)又釋放給系統。
句柄地址(穩定)→記載著對象在內存中的地址————→對象在內存中的地址(不穩定)→實際對象
本質:WINDOWS程序中並不是用物理地址來標識一個內存塊,文件,任務或動態裝入模塊的,相反的,WINDOWS
API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。
但是必須注意的是程序每次從新啟動,系統不能保證分配給這個程序的句柄還是原來的那個句柄,而且絕大多數情況的確不一樣的。假如我們把進入電影院看電影看成是一個應用程序的啟動運行,那麼系統給應用程序分配的句柄總是不一樣,這和每次電影院售給我們的門票總是不同的一個座位是一樣的道理。
⑷ 句柄的編譯原理
一個句型的最左直接短語稱為該句型的句柄,句型的句柄是和某產生式右部匹配的子串,並且,把它規約成該產生式左部的非終結符,代表了最右推導過程的逆過程的一步。
如右圖,在推導過程中,S→aABe→aAde→aAbcde→abbcde,此四步的句柄分別為aABe,d,Abc,b
句柄的特徵:
1. 它是直接短語,即某規則右部。
2. 它具有最左性。
注意:短語、直接短語和句柄都是針對某一句型的,特指句型中的哪些符號子串能構成短語和直接短語,離開具體的句型來談短語、直接短語和句柄是無意義的。另外句柄的右邊僅含終結符如果文法二義,那麼句柄可能不唯一。
⑸ 句柄是什麼意思,詳細解釋下
句柄是編寫工具
游戲外掛所用到得窗口ID
游戲窗口進程,比如按鍵精靈所用到的就是獲取游戲窗口(句柄)進程ID
E語言編寫軟體很多地方都會用到句柄
自己慢慢學
⑹ 為什麼handle會被翻譯成句柄
可能是當年的大佬覺得計算機語言也是「語句」,控制語句對象,則可稱之為句柄。之前的一些翻譯害死一批善良的人。例如神句「金銀天然不是貨幣,但貨幣天然是金銀」,問題是TMD很多考題還喜歡用這句話。明明就是ZB的翻譯。如果翻譯成「金銀原本並不被當作貨幣,但貨幣誕生時就是金銀充當的」你就會非常清楚他在講什麼。MLGZZ,裝逼害死人!!
⑺ 編譯原理中的句柄是什麼意思
是操作系統用來管理不同的對象,給他們一個編號而已
比如窗口、線程、圖標等都會對應一個句柄,這樣可以方便標識與管理
句柄其實也就是一個整數值,而且是唯一的
⑻ 句柄是什麼意思
句柄概念在WINDOWS編程中是一個很重要的概念,在許多地方都扮演著重要的角色。但由此而產生的句柄概念也大同小異,比如:<<Microsoft Windows 3 Developer's Workshop>>(Microsoft Press,by Richard Wilton)一書中句柄的概念是:在Windows環境中,句柄是用來標識項目的,這些項目包括:
*.模塊(mole)
*.任務(task)
*.實例(instance)
*.文件(file)
*.內存塊(block of memory)
*.菜單(menu)
*.控制(control)
*.字體(font)
*.資源(resource),包括圖標(icon),游標(cursor),字元串(string)等
*.GDI對象(GDI object),包括點陣圖(bitmap),畫刷(brush),元文件(metafile),調色板(palette),畫筆(pen),區域(region),以及設備描述表(device context)。
WINDOWS程序中並不是用物理地址來標識一個內存塊,文件,任務或動態裝入模塊的,相反的,WINDOWS API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。
在<<WINDOWS編程短平快>>(南京大學出版社)一書中是這么說的:句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,點陣圖,GDI對象等等。WINDOWS句柄有點象C語言中的文件句柄。
從上面的2個定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。
⑼ 編譯原理中的句柄是什麼意思舉個簡單的例子
語法樹的最左子樹