取得某一dll所有輸出函式名 (轉)
取得某一dll所有輸出名
在uses里加上ImageHlp
procedure ListDLLFunctions(DLLName: String; List: TStrings);
type
chararr = array [0..$FFFFFF] of Char;
var
H: THandle;
I,
fc: integer;
st: string;
arr: Pointer;
ImageDeInformation: PImageDebugInformation;
begin
List.Clear;
DLLName := ExpandFileName(DLLName);
if FileExists(DLLName) then
begin
H := CreateFile(PChar(DLLName), GENERIC_READ, FILE_SHARE_READ or
FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if H<>INVALID_HANDLE_VALUE then
try
ImageDebugInformation := MapDebugInformation(H, PChar(DLLName), nil, 0);
if ImageDebugInformation<>nil then
try
arr := ImageDebugInformation^.ExportedNames;
fc := 0;
for I := 0 to ImageDebugInformation^.ExportedNamesSize - 1 do
if chararr(arr^)[I]=#0 then
begin
st := PChar(@chararr(arr^)[fc]);
if Length(st)>0 then
List.Add(st);
if (I>0) and (chararr(arr^)[I-1]=#0) then
Break;
fc := I + 1
end
finally
UnmapDebugInformation(ImageDebugInformation)
end
finally
CloseHandle(H)
end
end
end;
procedure TForm1.Button1Click(Sender: T);
var
List: TStrings;
I: integer;
S: String;
begin
List := TStringList.Create;
ListDLLFunctions('c:systemAbcsda.dll', List);
showmessage(inttostr(list.count));
S := 'List of functions';
for I := 0 to List.Count - 1 do
S := S + #13#10 + List[I];
ShowMessage(S);
List.Free
end;
//rock
//轉載請保留此資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-996473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++函式名後面有個constC++函式
- 常用輸入輸出函式函式
- ncurses輸出函式:字元+字串的輸出函式字元字串
- 輸出輸入函式彙總函式
- Python透過函式名呼叫函式的幾種場景Python函式
- [轉]重定向輸出
- Linux shell中實現某一列交替輸出1和2Linux
- 最長公共子序列LCS 輸出所有LCS
- C++逐字輸出函式C++函式
- C++關於DLL匯出模板類和模板函式C++函式
- Java 輸出某路徑下的所有檔案Java
- Python怎麼輸出所有的水仙花數?Python
- pytest-根據類或函式名選擇用例函式
- C語言_輸入輸出函式_PAGE5C語言函式
- 新手學python之Python的輸入輸出函式Python函式
- 如何使用 loguru 接管程式的所有日誌輸出?
- Windows 10右鍵選單新增“管理員取得所有權”Windows
- outputStream(輸出流)轉inputstream(輸入流)以及輸入流如何複用
- 字串中大小寫轉換輸出字串
- [轉帖]netstat -st輸出解析(二)
- python怎麼不轉行輸出Python
- 將輸入的字元轉化為int格式輸出字元
- JS 中函式名後面加與不加括號的區別JS函式
- thinkphp 輸出變數使用函式處理PHP變數函式
- Go 最直接的debug 方式 輸出函式Go函式
- 【MATLAB】利用size()函式輸出陣列大小Matlab函式陣列
- converter設計模式擴充套件,多種輸入輸出與標準輸入輸出的轉化方案設計模式套件
- 所有輸入(程式碼形式)
- Python爬蟲-獲得某一連結下的所有超連結Python爬蟲
- 一、輸入一個數(這裡用函式實現) 1.輸出它是幾位數 2.逆序輸出 3.正序輸出函式
- 轉載:字元輸出流Writer簡要概括字元
- 第217篇:Cameralink轉光纖資料傳輸板- Base Camera link輸入轉光纖輸出模組
- qt 打包釋出 獲取dllQT
- 隨機生成100個整數存入一個順序表,整數範圍在[100,200)之間,輸出表中所有元素;然後去掉其中所有的偶數,輸出表中所有元素。隨機
- c# 呼叫 C++ dll 傳入傳出型別對應說明(轉)C#C++型別
- C++中使用巨集定義來註釋掉所有的cout輸出C++
- log4j日誌輸出級別(轉)
- 輸入輸出
- 定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點函式