2011年5月1日

在 C# 中取得 process 中載入的 dll的相關資訊

其實是為了某個最近剛出沒多久的 SLG 遊戲… 雖然有 SSG 檔,但是少一個插座很不方便有些地方很不方便,所以才想要自己寫一個,不過雖然參考 SSG 可以抓位置,但是實際上連 SSG 都還看不是很懂呢… 總之先備份一下… 感覺之前寫其他遊戲的修改器也常用到

processPtr = FindWindow(@"AliceStartWindowClass", null);
GetWindowThreadProcessId(processPtr, out ProcessId);
ProcessHandle = OpenProcess(0x1F0FFF, true, ProcessId);

EnumProcessModules(ProcessHandle, ModuleHandles, 20, out requireSize);
ModuleHandles = new IntPtr[requireSize/4];
EnumProcessModules(ProcessHandle, ModuleHandles, requireSize, out requireSize);

// 剛好最後一個 dll 是我要找的那個
dllHandle = ModuleHandles[requireSize/4 - 1];

GetModuleFileNameEx(processPtr, dllHandle, fileName, 260);
GetModuleInformation(ProcessHandle, dllHandle, out ModInfo, 12);

基本上是參考這篇 VB 的改寫而來的…

接下來就是要看懂 SSG 了啊~
--
C# 中引用 win32 api 的 list

沒有留言:

張貼留言