Сабж. Понял, что необходимо использовать функцию
GetOpenFileName, но как не понял.
Мне нужно обьявить эту функцию, вызвать и вернуть путь к файлу. А также понять что за структура OPENFILENAME.
Нашел следующий код (правилен ли он я не знаю так как не сумел проверить из за неизвестного типа OPENFILENAME):
var
ofn : OPENFILENAME;
begin
ZeroMemory(@ofn, sizeof(OPENFILENAME));
with ofn do
begin
lStructSize:=sizeof(OPENFILENAME);
lpstrInitialDir:='c:\windows';
lpstrTitle:='Choose Any File';
nMaxFile:=255;
lpstrFile:=VirtualAlloc(0, 255, MEM_COMMIT, PAGE_READWRITE);
lpstrFilter:='Win32 Executables'+#0+'*.exe'+#0+'All file types'#0+'*.*'+#0#0;
Flags:=OFN_FILEMUSTEXIST + OFN_HIDEREADONLY + OFN_PATHMUSTEXIST;
end;
if GetOpenFileName(ofn) then
MessageBox(0, ofn.lpstrFile, nil, MB_OK);
VirtualFree(ofn.lpstrFile, 0, MEM_RELEASE);
Объявлять кажется так:
function GetOpenFileName(lpofn: pointer): integer; stdcall; external 'comdlg32.dll' name 'GetOpenFileNameA';
Правильно ли и как обьявить структуру OPENFILENAME?