iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 3

第三天:lib dll .h竟然有三角戀?

  • 分享至 

  • xImage
  •  

大家好我是Andy,今天的文章由我們每日一句的開場白開啟,目前來到了第三天,恩標題蠻像現在所有youtube標題類型的,都想要騙你點進來,可是我沒有廣告費嗚嗚嗚嗚嗚嗚,好吧話不多說我們直接開始。

在Visual Studio 2019裡面構建動態連結函式庫後看到三種檔案,就是今天的主角Lib Dll .h這三個東西是什麼?互相有關連嗎?我們今天就好好的探討這個三角關係!

lib檔

這個檔案是讓dll附加的,也是之後告訴連結器哪一個函式在哪個dll裡面去連結到exe做呼叫的動作,如果生成了dll那肯定也生成了lib。

dll檔

這個就是我們的函式庫啦

.h檔

這個就是標頭檔,這個的作用是宣告函式介面。

這邊另外加碼一下Windows.h這個標頭檔

windows.h

有興趣的可以搜尋一下這個庫有的函式,我只列了幾個最有趣的出來

FindWindow

HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
HWND是我們的視窗控制代碼
LPCTSTR IpClassName這個是要找窗口的類別

不知道打Null就對了

LPCTSTR IpWindowName這個是要找窗口的名字
這個就如名子所說的,可以配合SendMessage把某個視窗關掉

如果像上圖這個資料夾,那他的IpWindowName就是Debug
這邊也順便提一下,輔助程式 (歪瓜) 是可以透過窗口名字去抓取程式進而破解,但現在大部分的程式都學乖了窗口的名字並不一定是真實的,所以會有抓不到的情況,目前都是使用PID去抓取(也比較快?吧),之後有機會的話應該會講到(應該啦)

SendMessage

稍微看了一下發現有非常多的功用都透過代碼實現,甚麼按鍵控制啊動畫控制、應用程序桌面工具等等一堆的樣子感覺又可以做一篇文章當一天的進度...好我們之後有空的話再搞 (簡單說就是我生不出一篇文章出來的時候)
SendMessage(HWND,UINT,WPARAM,LPARAM);
UINT就是要傳輸什麼指令,像是可以使用WM_CLOSE將使用FindWindow搜尋到的視窗關掉
後面的WPARAMLPARAM看起來基本上都是填0,因為Mircosoft的定義是特定於消息的訊息

WindowFromPoint

這個是可以獲取滑鼠位置的一個函式,要先宣告一個Point A去儲存滑鼠位置
接著使用GetCursorPos(A)去獲取當前滑鼠的位置,當然如果要一直獲取滑鼠位置的話就要寫一個While(1)將他包起來

重點整理

  • 標頭檔是編譯的時候所需要的
  • lib是dll去連結程式所需要的,所以建置dll出來的時候只需把dll和lib抓到你需要連結程式的資料夾裡面在生成就可以做使用了
  • dll是程式執行的時候需要使用

結語

今天介紹了一下lib dll .h檔的三角關係,順便帶個windows.h的標頭檔裡面有甚麼函數,剩下的我們就明天見了,打完有點累趕緊洗洗睡 (單壓X1)


上一篇
第二天:要了解DLL你要先講啊
下一篇
第四天:Dll聽話 讓我看看
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言