[ borovac @ 05.10.2004. 19:49 ] @
1. Kako pomjeriti kursor miša na 320x445? 2. Kako znati koje funkcije podržava neki dll fajl? 3. Kako pozvati neku funkciju iz nekog dll-a? |
[ borovac @ 05.10.2004. 19:49 ] @
[ reiser @ 05.10.2004. 19:59 ] @
1.
Code: SetCursorPos(320, 445) 2. Dupli klik na neki DLL, otvori ti se Dependency Walker i vidis sve exportovane funkcije/procedure 3. Code: procedure MyProcedure; external 'SomeDLL.dll' name 'DLLProcedure'; I posle toga kad u kodu pozoves MyProcedure;, ti u stvari pozivas DLLProcedure iz SomeDLL.dll. [ borovac @ 05.10.2004. 20:04 ] @
2. Mislio sam kako dobiti nazive tih funkcija putem Delphi-a.
[ reiser @ 05.10.2004. 20:15 ] @
Code: uses Forms, Classes, SysUtils, Dialogs, ImageHlp, // routines to access debug information Windows; // by Dmitry Streblechenko 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; // the following is an example how to use the procedure var List: TStrings; I: integer; S: String; begin List := TStringList.Create; ListDLLFunctions('c:\winnt\system32\mfc42.dll', List); S := 'List of functions'; for I := 0 to List.Count - 1 do S := S + #13#10 + List[I]; ShowMessage(S); List.Free end. http://delphifaq.com/fq/q2133.shtml [ borovac @ 06.10.2004. 20:09 ] @
Hvala.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|