1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
unit Comdlg32;
interface
uses
Call32NT;
type
UINT = Longint;
DWORD = Longint;
HINST = Longint;
HWND = Longint;
type
POpenFilename = ^TOpenFilename;
TOpenFileName = packed record
lStructSize: DWORD;
hWndOwner: HWND;
hInstance: HINST;
lpstrFilter: PChar;
lpstrCustomFilter: PChar;
nMaxCustFilter: DWORD;
nFilterIndex: DWORD;
lpstrFile: PChar;
nMaxFile: DWORD;
lpstrFileTitle: PChar;
nMaxFileTitle: DWORD;
lpstrInitialDir: PChar;
lpstrTitle: PChar;
Flags: DWORD;
nFileOffset: Word;
nFileExtension: Word;
lpstrDefExt: PChar;
lCustData: Longint;
lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: Longint; lParam: Longint): UINT;
lpTemplateName: PChar;
end;
function GetOpenFileName(var OpenFile: TOpenFileName): Longint;
implementation
var
W32GetOpenFileNameA: function(var OpenFile: TOpenFileName; id: Longint): Longint;
var
id_W32GetOpenFileNameA: Longint;
function GetOpenFileName(var OpenFile: TOpenFileName): Longint;
begin
GetOpenFileName := W32GetOpenFileNameA(OpenFile, id_W32GetOpenFileNameA);
end;
begin
@W32GetOpenFileNameA := @Call32;
id_W32GetOpenFileNameA := Declare32('GetOpenFileNameA', 'comdlg32', 'p');
if Call32NTError then Halt(1);
end. |