搜尋
首頁電腦教學電腦知識螢幕視窗句柄是指什麼?

螢幕視窗句柄是指什麼?

取得螢幕的視窗句柄是什麼意思

了解什麼是句柄就好理解了

就是要得到這個視窗的識別碼

句柄就是用來區分各種記憶體物件的唯一識別符號,是個32位元整數。

有些是整個系統唯一(如視窗句柄),有些是目前進程或執行緒中唯一

(如執行緒句柄,全域的有另一個識別符)。

詳細的可分為許多種,都是以H開頭的。在VB中使用時全部都用Long。

常見的有視窗句柄(HWND),裝置描述表句柄(HDC),記憶體句柄(HMEM),

檔案句柄,進程句柄,線程句柄,筆的類型句柄(HPEN),字體句柄(HFONT),

區域句柄(HRGN)等等。

在申請句柄時是要佔用資源的,分成三類SYSTEM、USER、GDI。

而WINDOWS的資源是固定的,不隨記憶體的擴大而擴大,所以使用完以後一定要釋

放。

>

如果只用VB本身的程式碼一般是不會用到句柄的,但要是使用API​​函數的話,

大多數會使用。

再Windows系統中,句柄(我一直覺得這個字翻譯得特別彆扭)分成三大類:Kernel

Handle、UserHandle和應用程式自訂的Handle。

KernelHandle其實是進程內Kernel物件的指標表索引,Kernel物件包含進程、文字

件、訊號等。但是MS為了掩蓋一事實,在系統啟動時產生了一個所謂Obsfucator的值

(其實應該是Obfuscator,MicrosoftBugs(R):),產生Handle後將Handle與這個值異

或後返回給應用程序,所以看到的Handle都是一些很大而且毫無意義的數字。這些

Handle和索引的物件是由KRNL32.DLL和VMM32.VXD共同管理的,所以稱為Kernel

Handle。

UserHandle是用來標示視窗、DC等物件的,他們是真實的指針,但指向的不是物件

的開頭,有一個偏移量。同樣,這些物件是由USER32.DLL管理的。

第三種Handle不過是應用程式自訂的一些索引之類的東東,具體的意義和應用程式相關

如何取得控制台視窗句柄

1.呼叫 GetConsoleTitle() 來儲存目前的控制台視窗標題。

2.呼叫 SetConsoleTitle() 來將控制台標題變更為一個唯一的標題。

3.呼叫 Sleep(40),以確保已更新視窗標題。

4.呼叫 FindWindow(NULL, uniquetitle),以取得 HWND,此呼叫將傳回 HWND, 如果操作失敗,將傳回 NULL。

5.從步驟 1 中,若要恢復原始視窗標題檢索呼叫 SetConsoleTitle() 的值。

應該測試結果的 HWND。例如可以測試是否回傳的 HWND 對應到目前進程在 HWND 上呼叫 GetWindowText() 並將結果與 GetConsoleTitle() 進行比較。

範例程式碼

在下面的函數中檢索目前控制台應用程式視窗句柄 (HWND)。如果此函數成功,則傳回值是控制台視窗的句柄。如果此函數失敗,則傳回值為 NULL。省略一些錯誤檢查,為簡潔起見。

HWND GetConsoleHwnd(void)

{

#define MY_BUFSIZE 1024 // Buffer size for console window titles.

HWND hwndFound; // This is what is returned to the caller.

char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated

// WindowTitle.

char pszOldWindowTitle[MY_BUFSIZE]; // Contains original

// WindowTitle.

// Fetch current window title.

GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);

// Format a "unique" NewWindowTitle.

wsprintf(pszNewWindowTitle,"%d/%d",

GetTickCount(),

GetCurrentProcessId());

// Change current window title.

SetConsoleTitle(pszNewWindowTitle);

// Ensure window title has been updated.

Sleep(40);

// Look for NewWindowTitle.

hwndFound=FindWindow(NULL, pszNewWindowTitle);

// Restore original window title.

SetConsoleTitle(pszOldWindowTitle);

return(hwndFound);

}

50分如何取得桌面所有視窗的句柄

#include

#include

using namespace std;

//用於EnumWindows的回呼函數

BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lparam)

{

vector *pvec = (vector*)lparam;

pvec->push_back(hwnd);

return TRUE;

}

void main()

{

vector vec;

EnumWindows(EnumProc,(LPARAM)&vec);

}

這個是win32控制台程式專案裡寫的,如果要在MFC下的話,只要包含

#include 並且using namespace std;

EnumProc定義在前面,按鈕回應函數裡加入main函數裡的那兩句話就可以了。

我這裡測試取得到了407個句柄

#

以上是螢幕視窗句柄是指什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Excel办公网。如有侵權,請聯絡admin@php.cn刪除
突襲恢復和硬盤恢復之間的區別突襲恢復和硬盤恢復之間的區別Apr 17, 2025 am 12:50 AM

數據恢復始終是一個加熱的話題。要成功地從設備恢復數據,您應該知道它如何存儲數據。您可以從此PHP.CN帖子中學習RAID恢復和硬盤恢復之間的區別。

Microsoft Word刪除文本Windows 10/11?立即修復!Microsoft Word刪除文本Windows 10/11?立即修復!Apr 17, 2025 am 12:48 AM

您會在打字時遇到單詞文字消失嗎?一些字母甚至段落可能會從您的文檔中消失。怎麼了?在PHP.CN網站的這篇文章中,我們將仔細研究自動刪除文本問題的單詞

如何在《守望先鋒2》上修復LC-208錯誤代碼?這是指南! -  Minitool如何在《守望先鋒2》上修復LC-208錯誤代碼?這是指南! - MinitoolApr 17, 2025 am 12:47 AM

當您嘗試登錄《守望先鋒》 2時,您可能會收到LC-208錯誤消息,並防止您的遊戲連接到遊戲服務器。來自PHP.CN的這篇文章介紹瞭如何修復LC-208守望先鋒錯誤。

Google Drive從File Explorer中消失了 - 輕鬆批准Google Drive從File Explorer中消失了 - 輕鬆批准Apr 17, 2025 am 12:46 AM

通常,您可以從文件資源管理器快速訪問和編輯Google Drive文件。但是,有時您可能會遇到“ Google Drive從File Explorer中消失”的問題。在這裡,php.cn上的這篇文章告訴您如何讓Google Drive顯示我

如何修復Windows 7歡迎屏幕慢?提示在這裡!如何修復Windows 7歡迎屏幕慢?提示在這裡!Apr 17, 2025 am 12:45 AM

為什麼我的計算機在歡迎屏幕上這麼長時間?如何修復Windows 7歡迎屏幕慢?如果您仍然在PC上運行Windows 7並遇到此問題,則您在正確的位置,並且將由PHP.CN提供多個解決方案。

如何在Windows 11中打開憑據管理器?您的6種方法! -  Minitool如何在Windows 11中打開憑據管理器?您的6種方法! - MinitoolApr 17, 2025 am 12:44 AM

是否要使用內置密碼管理工具 - 憑據管理器來管理Web和應用程序的登錄憑據?如何在Windows 11中打開憑據管理器?在這篇文章中,PHP.CN收集了多種訪問該實用程序的方法,並讓

如何在Microsoft Defender -Minitool上啟用/禁用定期掃描如何在Microsoft Defender -Minitool上啟用/禁用定期掃描Apr 17, 2025 am 12:43 AM

Microsft Defender Antivirus具有稱為周期性掃描的功能,當您在Windows 11/10設備上安裝了另一個防病毒產品時,可以啟用該功能。現在,PHP.CN的這篇文章教您如何在WI上啟用/禁用定期掃描

Excel超鏈接不起作用的智能技術Excel超鏈接不起作用的智能技術Apr 17, 2025 am 12:42 AM

您是否曾經遇到過“ Excel超鏈接不起作用”的問題?你知道如何處理嗎?在PHP.CN的這篇文章中,您可以獲得幾種可行的解決方案,以擺脫此問題。您將知道專業的數據恢復工具T

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器