最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

pvzclass是如何實(shí)現(xiàn)的?pvzclass源代碼初步分析(2) ProcessOpener

2021-06-12 11:44 作者:__W1thoutD0ubt  | 我要投稿

本篇將分析ProcessOpener(.h/.cpp),pvzclass中尋找PVZ進(jìn)程的代碼。

文中會(huì)涉及到一些Windows API函數(shù),這些函數(shù)不會(huì)細(xì)講。

1.ProcessOpener初探

ProcessOpener.h

定義尋找PVZ進(jìn)程所需的常量,并聲明尋找PVZ進(jìn)程所需的函數(shù)。

ProcessOpener.cpp

對(duì)ProcessOpener.h中定義的常量賦值。對(duì)ProcessOpener.h中聲明的函數(shù)進(jìn)行定義。

根據(jù)“源代碼文件解釋頭文件”的原則,我們先看頭文件:

短短十四行

windows.h包括尋找PVZ進(jìn)程必需的函數(shù)和變量類型(如以下代碼中的LPCWSTR)。

剩下的就是ProcessOpener類,其中包括四個(gè)常量和四個(gè)函數(shù)。

它們的具體作用就得去源代碼文件中尋找了。

2.ProcessOpener.cpp

ProcessOpener.cpp的作用如上所說,是將頭文件中的各種聲明予以實(shí)現(xiàn)。

開頭是這樣的:

常數(shù)&包含的頭文件

你不需要知道"TLHELP32.H"和"direct.h"有什么用因?yàn)槲乙膊恢?/span>。

我們先來看最后的Open函數(shù):

實(shí)際上就是依次調(diào)用另外三個(gè)函數(shù)

Open函數(shù)的作用很簡單,即尋找PVZ進(jìn)程。其返回值為進(jìn)程的ID,或者是空(意味著沒找到PVZ進(jìn)程)。

在使用pvzclass的代碼開頭,基本上都需要定義一個(gè)變量存儲(chǔ)Open函數(shù)尋找的結(jié)果,因?yàn)楹竺孢€要用這個(gè)結(jié)果將PVZ類實(shí)例化。

而對(duì)于剩余的三個(gè)函數(shù),

OpenByProcessName依據(jù)進(jìn)程名尋找PVZ進(jìn)程(默認(rèn)為"PlantsVsZombies.exe"),OpenByWindowTitle依據(jù)PVZ的窗口標(biāo)題尋找PVZ進(jìn)程(默認(rèn)為"Plants vs. Zombies",而不是漢化版的“植物大戰(zhàn)僵尸中文版”),

OpenByFilePath依據(jù)PVZ本體的文件存儲(chǔ)位置尋找PVZ進(jìn)程(默認(rèn)為同一目錄下名為"PlantsVsZombies.exe"的文件)。

與另外兩個(gè)文件不同的是,OpenByFilePath可以在PVZ未開啟的情況下,直接開啟并找到PVZ進(jìn)程。

這也就是為什么有的基于pvzclass的修改器雖然要求先開PVZ再開修改器,但直接打開修改器也可以完美發(fā)揮作用。

當(dāng)然,我們也可以根據(jù)自己的需要(比如排除特定改版,只修改原版),類比Open函數(shù),或者只使用三個(gè)基本尋找函數(shù),設(shè)計(jì)符合需要的尋找進(jìn)程函數(shù),或者直接修改相應(yīng)的常量。

但!是!胡亂修改尋找函數(shù)可能導(dǎo)致這些函數(shù)無法運(yùn)行!如果你對(duì)Windows API函數(shù)不熟悉,千萬不要修改函數(shù)本身!

感覺有點(diǎn)少啊……

下一篇就要開始分析重中之重,PVZ.h了。

pvzclass是如何實(shí)現(xiàn)的?pvzclass源代碼初步分析(2) ProcessOpener的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
高雄县| 宜昌市| 姚安县| 禹州市| 区。| 邛崃市| 永春县| 南川市| 衡阳县| 营山县| 凤凰县| 南岸区| 上栗县| 漳浦县| 遂平县| 谷城县| 永兴县| 临颍县| 铜鼓县| 武城县| 莱阳市| 宜黄县| 乐清市| 台安县| 昌都县| 阜宁县| 静海县| 西平县| 江阴市| 鞍山市| 苏尼特左旗| 开远市| 霍林郭勒市| 北海市| 南陵县| 新营市| 台湾省| 大丰市| 兴义市| 布尔津县| 漠河县|