如果有,是不是要包含哪个头文件
还有他对应CBC中的什么类型,需要哪个头文件

解决方案 »

  1.   

    例如
    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;
      

  2.   

    cbc中为 #include <imagehlp.h>,你自己找吧
      

  3.   

    知我者大哥了,我上午就在看上面的代码,想把他换成cbc的,这里帖先结了!