zoukankan      html  css  js  c++  java
  • 取得某一dll所有输出函数名 DELPHI

    取得某一dll所有输出函数名 - DELPHI
    在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;

    ImageDebugInformation: 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: TObject);

    var

    List: TStrings;

    I: integer;

    S: String;

    begin

    List := TStringList.Create;

    ListDLLFunctions('c:\windows\system\Abcsda.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

    本文来自: 书部落-电子书下载(www.shubulo.com) 详细出处参考:http://www.shubulo.com/thread-38032-1-1.html

  • 相关阅读:
    个人总结
    第三次个人作业——用例图设计
    结对项目——第二次作业
    结对项目——第一次作业
    第二次个人编程作业
    第一次个人编程作业
    个人总结
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631345.html
Copyright © 2011-2022 走看看