日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows窗体之ShowWindow函数分析

發(fā)布時(shí)間:2023/12/18 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows窗体之ShowWindow函数分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、窗體創(chuàng)建過程

??? 在文章《Windows消息機(jī)制的逆向分析》中詳細(xì)分析了Windows的消息機(jī)制以及窗體的創(chuàng)建過程,文章中表述Windows窗體的創(chuàng)建分為三步:聲明WNDCLASS實(shí)例、窗體注冊、創(chuàng)建窗體。如果繼續(xù)細(xì)分可以分為四步:聲明WNDCLASS實(shí)例、窗體注冊、創(chuàng)建窗體、顯示窗體

??? 其中窗體注冊函數(shù)是RegisterClass()或RegisterClassEx(),創(chuàng)建窗體則是CreateWindow()或CreatewindowEx()函數(shù),顯示窗體則是利用ShowWindow()函數(shù)。

??? 本文重點(diǎn)描述ShowWindow()函數(shù)。

二、ShowWindow函數(shù)

??? CreateWindowEx 建立窗口以后,這時(shí)候,窗口雖已建立,但還沒有在屏幕上顯示出來。

??? ShowWindow函數(shù)

??? 函數(shù)功能:該函數(shù)設(shè)置指定窗口的顯示狀態(tài)。

??? 函數(shù)原型:BOOL ShowWindow(HWND hWnd, int nCmdShow)

??? 其中hWnd指窗口句柄;nCmdShow指定窗口如何顯示。如果發(fā)送應(yīng)用程序的程序提供了STARTUPINFO結(jié)構(gòu),則應(yīng)用程序第一次調(diào)用ShowWindow時(shí)該參數(shù)被忽略。否則,在第一次調(diào)用ShowWindow函數(shù)時(shí),該值應(yīng)為在函數(shù)WinMain中nCmdShow參數(shù)。在隨后的調(diào)用中,該參數(shù)可以為下列值之一:

預(yù)定義值等?效?值
nCmdShow值
SW_FORCEMINIMIZE在WindowNT5.0中最小化窗口,即使擁有窗口的線程被掛起也會(huì)最小化。在從其他線程最小化窗口時(shí)才使用這個(gè)參數(shù)11
?SW_HIDE?隱藏窗口,大小不變,激活狀態(tài)不變0
?SW_MAXIMIZE?最大化窗口,顯示狀態(tài)不變,激活狀態(tài)不變3
?SW_MINIMIZE?最小化指定的窗口并且激活在Z序中的下一個(gè)頂層窗口6
?SW_RESTORE?激活并顯示窗口。如果窗口最小化或最大化,則系統(tǒng)將窗口恢復(fù)到原來的尺寸和位置。在恢復(fù)最小化窗口時(shí),應(yīng)用程序應(yīng)該指定這個(gè)標(biāo)志9
?SW_SHOW在窗口原來的位置以原來的尺寸激活和顯示窗口5
?SW_SHOWMAXIMIZED?顯示并激活窗口,以最大化顯示3
?SW_SHOWMINIMIZED?顯示并激活窗口,以最小化顯示2
?SW_SHOWMINNOACTIVE?顯示窗口并最小化,激活窗口仍然維持激活狀態(tài)7
?SW_SHOWNA?以窗口原來的狀態(tài)顯示窗口。激活窗口仍然維持激活狀態(tài)8
?SW_SHOWNOACTIVATE?以窗口最近一次的大小和狀態(tài)顯示窗口。激活窗口仍然維持激活狀態(tài)4
SW_SHOWDEFAULT依據(jù)在STARTUPINFO結(jié)構(gòu)中指定的SW_FLAG標(biāo)志設(shè)定顯示狀態(tài),STARTUPINFO 結(jié)構(gòu)是由啟動(dòng)應(yīng)用程序的程序傳遞給CreateProcess函數(shù)的10
?SW_SHOWNORMAL?激活并顯示一個(gè)窗口。如果窗口被最小化或最大化,系統(tǒng)將其恢復(fù)到原來的尺寸和大小。應(yīng)用程序在第一次顯示窗口的時(shí)候應(yīng)該指定此標(biāo)志1

三、函數(shù)過程分析

??? 本次分析樣本仍以https://blog.csdn.net/weixin_39768541/article/details/85010183 文章中的CM。在RegisterClass、CreateWindow以及NtUserShowWindow(模塊間調(diào)用無ShowWindow函數(shù))處下斷點(diǎn)。

??? 可以觀察到函數(shù)執(zhí)行流程是先將所有的窗體注冊與創(chuàng)建完成后,再逐一執(zhí)行NtUserShowWindow函數(shù)

??? 那么現(xiàn)在來搜索ShowWindow函數(shù)何處調(diào)用。利用RUN跟蹤:

??? 調(diào)用函數(shù)即為NtUserShowWindow外層函數(shù),其中標(biāo)紅位置即為nCmdShow值。

總結(jié)

以上是生活随笔為你收集整理的Windows窗体之ShowWindow函数分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。