国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

windows使用FindWindow函數(shù)查找窗口句柄

這篇具有很好參考價值的文章主要介紹了windows使用FindWindow函數(shù)查找窗口句柄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

理解什么是句柄?

對于“句柄”,之前一直停留在一知半解的認識層面,也說不清具體概念,只知道它是一個標(biāo)識符,用來標(biāo)記對象或者說某個東西的。只知其名不知其意。目前學(xué)習(xí)windows編程,對“句柄”做一個完整的認。

現(xiàn)在先看一張圖(這張圖是從其他博主博文扒下來的):
windows使用FindWindow函數(shù)查找窗口句柄,windows,windows
windows使用FindWindow函數(shù)查找窗口句柄,windows,windows
圖1是程序運行到某時刻時的內(nèi)存快照,圖2是程序往后運行到另一時刻時的內(nèi)存快照。紅色部分標(biāo)出了兩次的變化。

【解釋一下:】
windows是一個以虛擬內(nèi)存為基礎(chǔ)的操作系統(tǒng),很多時候,進程的代碼和數(shù)據(jù)并不是全部裝入內(nèi)存,進程某一段裝入內(nèi)存之后,可能會被換出到外存。當(dāng)再次需要時會重新裝入內(nèi)存。兩次裝入內(nèi)存,那么很多時候裝入的地址是不一樣的。也就是說同一個對象在內(nèi)存中的地址會變化。那么程序怎么才能準(zhǔn)確的訪問到對象呢?這時候就引入了句柄。

系統(tǒng)為每個進程在內(nèi)存中分配一定的區(qū)域,用來存放各個句柄,即一個個32位無符號整型值(32位操作系統(tǒng)中)。每個32位無符號整型值相當(dāng)于一個指針,指向內(nèi)存中的另一個區(qū)域(我們不妨稱之為區(qū)域A)。而區(qū)域A中存放的正是對象在內(nèi)存中的地址。當(dāng)對象在內(nèi)存中的位置發(fā)生變化時,區(qū)域A的值被更新,變?yōu)楫?dāng)前時刻對象在內(nèi)存中的地址,而在這個過程中,區(qū)域A的位置以及對應(yīng)句柄的值是不發(fā)生變化的。這種機制,用一種形象的說法可以表述為:有一個固定的地址(句柄),指向一個固定的位置(區(qū)域A),而區(qū)域A中的值可以動態(tài)地變化,它時刻記錄著當(dāng)前時刻對象在內(nèi)存中的地址。這樣,無論對象的位置在內(nèi)存中如何變化,只要我們掌握了句柄的值,就可以找到區(qū)域A,進而找到該對象。而句柄的值在程序本次運行期間是絕對不變的,我們(即系統(tǒng))當(dāng)然可以掌握它。這就是以不變應(yīng)萬變,按圖索驥,順藤摸瓜。

所以,我們可以這樣理解句柄:
  • 數(shù)值上:是一個32位的unsigned int;
  • 邏輯上:相當(dāng)于一個二級指針。指向?qū)ο笤趦?nèi)存中的地址。(理解上:這個指針的值不可變的,普通指針的值可以變得。)
  • 作用上:是windwos使用句柄來標(biāo)識諸多資源或者對象。比如窗口,畫筆,進程,線程等等。

【回到開頭,windows下我們?nèi)绾文玫揭粋€窗口句柄】:
使用FindWindow函數(shù)可以根據(jù)窗口的類名和窗口名拿到句柄

HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
//IpClassName :指向一個指定了類名的空結(jié)束字符串
//pWindowName:指向一個指定了窗口名(窗口標(biāo)題)的空結(jié)束字符串。如果該參數(shù)為空,則為所有窗口全匹配。
//返回值:如果函數(shù)成功,返回值為具有指定類名和窗口名的窗口句柄;如果函數(shù)失敗,返回值為NULL。

[那么我們?nèi)绾潍@取到窗口的 類名 和 窗口名呢?]
我們可以使用vs自帶的工具spy++.exe;
通過搜索–>查找窗口,拖到要查詢的窗口就行。
windows使用FindWindow函數(shù)查找窗口句柄,windows,windows
現(xiàn)在,我們寫一個簡單的例子:用記事本打開一個文件。我這里打開的是cfg.ini文件。然后找到記事本窗口,然后通過查找到的記事本窗口句柄將記事本窗口進行移動位置并且改變大小。文章來源地址http://www.zghlxwxcb.cn/news/detail-737523.html

//根據(jù)類名和窗口名查找窗口句柄
HWND GetWindowHandle(std::string className, std::string windowName)
{
	HWND hwnd = FindWindowA(className.c_str(), windowName.c_str());
	return hwnd;
}

int main()
{
	HWND notePadWHND = GetWindowHandle("Notepad", "cfg.ini - 記事本");
	if (notePadWHND) {
		RECT rect;
		GetWindowRect(notePadWHND, &rect); //獲取記事本窗口的位置
		MoveWindow(notePadWHND, rect.left + 500, rect.top + 300, 300, 300, TRUE);//移動記事本窗口
	}
	return 0;
}

到了這里,關(guān)于windows使用FindWindow函數(shù)查找窗口句柄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • pyspark 筆記:窗口函數(shù)window

    pyspark 筆記:窗口函數(shù)window

    窗口函數(shù)相關(guān)的概念和基本規(guī)范可以見:pyspark筆記:over-CSDN博客 ? 以? partitionBy ?作為分組條件, orderBy ?對? Window ?分組內(nèi)的數(shù)據(jù)進行排序 后面的示例如無特殊說明,都是使用這個窗口規(guī)范? 用于給出從1開始到每個窗口分區(qū)的結(jié)果的連續(xù)行號 ? [觀察上面的數(shù)據(jù),發(fā)現(xiàn)同樣

    2024年01月19日
    瀏覽(22)
  • MATLAB 之 圖形對象及其句柄和圖形窗口與坐標(biāo)軸

    MATLAB 之 圖形對象及其句柄和圖形窗口與坐標(biāo)軸

    MATLAB 的圖形系統(tǒng)是面向圖形對象的。圖形對象是 MATLAB 圖形元素的集合,是用于顯示圖形和設(shè)計用戶界面的基本要素。 在 MATLAB 中,每一個具體的圖形都是若干個不同的圖形對象組成的。所有的圖形對象都按父對象和子對象的方式組成層次結(jié)構(gòu),其形式如下圖所示。 在圖形對

    2024年02月09日
    瀏覽(30)
  • MySQL窗口函數(shù)(MySQL Window Functions)

    MySQL窗口函數(shù)(MySQL Window Functions)

    ? ? ? ?MySQL從8.0開始支持窗口函數(shù)(Window Functions),因其經(jīng)常被用在數(shù)據(jù)分析的場景,窗口函數(shù)也被稱為分析函數(shù)(Analytic Functions)。 目錄 一、窗口函數(shù)概念 二、基礎(chǔ)語法 2.1 窗口的定義 2.2 命名窗口 三、專用窗口函數(shù) 3.1 row_number() 3.2 rank() 3.3 dense_rank() 3.4 percent_rank() 3.5

    2024年02月11日
    瀏覽(18)
  • 創(chuàng)建函數(shù)句柄

    參考信息來源:matlab官方解析 什么是函數(shù)句柄? ?簡言之:函數(shù)句柄是一種存儲指向函數(shù)的關(guān)聯(lián)關(guān)系的Matlab數(shù)據(jù)類型。 注:可以使用下述的語句來查看變量h是否為函數(shù)句柄,如下所示: 創(chuàng)建函數(shù)句柄 通過在函數(shù)名前添加@符號來為該函數(shù)創(chuàng)建句柄。如: 創(chuàng)建句柄并調(diào)用該函

    2024年02月12日
    瀏覽(16)
  • matlab 函數(shù)句柄詳解

    MATLAB中的函數(shù)句柄是一個非常重要的概念,可以讓我們更加靈活地使用函數(shù),并且可以提高代碼的可讀性和可維護性。本文將介紹MATLAB中函數(shù)句柄的基本概念、使用方法以及一些應(yīng)用場景。希望能夠幫助讀者更好地理解和應(yīng)用函數(shù)句柄。 一、函數(shù)句柄的基本概念 在MATLAB中,

    2024年02月10日
    瀏覽(16)
  • MATLAB中的函數(shù)句柄 理解

    https://zhuanlan.zhihu.com/p/266263265 https://blog.csdn.net/kevinhg/article/details/8861774 函數(shù)句柄也是MATLAB中的一種常見的數(shù)據(jù)類型,它的地位類似于其它計算機語言里的函數(shù)對象(Javascript,Python),函數(shù)指針(C++),或者函數(shù)引用(Perl)。 它的作用是將一個函數(shù)封裝成一個變量,使其能夠像其它變量

    2024年02月03日
    瀏覽(18)
  • hive窗口分析函數(shù)使用詳解系列二之分組排序窗口函數(shù)

    我們討論面試中各大廠的SQL算法面試題,往往核心考點就在于窗口函數(shù),所以掌握好了窗口函數(shù),面對SQL算法面試往往事半功倍。 已更新第一類聚合函數(shù)類,點擊這里閱讀 hive窗口函數(shù)聚合函數(shù)類 本節(jié)介紹Hive聚合函數(shù)中的第二類聚合函數(shù):分組排序窗口函數(shù)。 這些函數(shù)的用

    2024年04月13日
    瀏覽(17)
  • 真正理解微軟Windows程序運行機制——什么是句柄

    真正理解微軟Windows程序運行機制——什么是句柄

    我是荔園微風(fēng),作為一名在IT界整整25年的老兵,今天說說Windows程序的運行機制。經(jīng)常被問到MFC到底是一個什么技術(shù),為了解釋這個我之前還寫過帖子,但是很多人還是不理解。其實這沒什么,我在學(xué)生時代也被這個問題困繞過。而且那個時間學(xué)習(xí)資料沒有那么豐富,網(wǎng)上也

    2024年02月04日
    瀏覽(19)
  • Windows 10 X64 內(nèi)核對象句柄表解析

    Windows 10 X64 內(nèi)核對象句柄表解析

    fweWindows 很多API函數(shù)都會創(chuàng)建和使用句柄(傳入?yún)?shù)),句柄代表一個內(nèi)核對象的內(nèi)存地址,每個進程都有一個句柄表,它保存著進程擁有的句柄,內(nèi)核也有一個句柄表 PspCidTable,它保存著整個系統(tǒng)的句柄。 ExpLookupHandleTableEntry windows內(nèi)核句柄表結(jié)構(gòu)解析 句柄表結(jié)構(gòu) 進程句柄表位

    2024年02月06日
    瀏覽(22)
  • SQL窗口分析函數(shù)使用詳解系列三之偏移量類窗口函數(shù)

    本文以HiveSQL語法進行代碼演示。 對于其他數(shù)據(jù)庫來說同樣也適用,比如SparkSQL,F(xiàn)linkSQL以及Mysql8,Oracle,SqlServer等傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。 已更新第一類聚合函數(shù)類,點擊這里閱讀 ①SQL窗口函數(shù)系列一之聚合函數(shù)類 ②SQL窗口函數(shù)系列二之分組排序窗口函數(shù) 本節(jié)介紹Hive窗口分

    2024年04月26日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包