Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

Halt Подскажите с делфом как можно вызвать стандартный диалог...


Halt Подскажите с делфом как можно вызвать стандартный диалог открытия/сохранения файла на winApi
или как его организовать, жел-но с примером(подробным)
Санкс
SLV :: GetSaveFileName или GetOpenFileName. Структура OPENFILENAME.

WELL :: var
OpenFN: TOpenFileName;
begin
FileName:=’’;
FillChar(OpenFN, SizeOf(TOpenFileName),0);
with OpenFN do
begin
hwndOwner := MainWindow;
lpstrFilter := ’EXE Files (*.txt)’#0’*.txt#0’All Files (*.*)’#0’*.*’#0;
lStructSize := sizeof(TOpenFileName);
lpstrFile := FileName;
nMaxFile := SizeOf(FileName);
lpstrDefExt := ’exe’;
flags := OFN_EXPLORER
or OFN_FILEMUSTEXIST or
OFN_NOREADONLYRETURN or OFN_HIDEREADONLY;
end;
if GetOpenFileName(OpenFN) then showmessage(FileName);

Ну вобщем типа того =)

SLV :: WELL пишет:
цитата:
OpenFN: TOpenFileName;


Без ’’T’’ =) TOpenFileName это другое

Halt :: Спасибо

Halt :: Извините за назойливосить?а что записать в uses? перепробывал много, но вылетает ошибка - н найдено ....

WELL :: SLV пишет:
цитата:
Без ’’T’’ =) TOpenFileName это другое


У меня с T

Halt пишет:
цитата:
а что записать в uses?


CommDlg

SLV :: WELL пишет:
цитата:
У меня с T


С T это из VCL, из Dialogs.

RideX :: SLV пишет:
цитата:
из Dialogs


Нет :)))

Вот пример:

program CrkTemplate_03;
{Delphi Patch Template #03 by RideX[AHTeam]}

uses
Windows, Messages, CommDlg, ShellApi;

{$R rsrc.res}

const
RIDEXPATCHER = 1000;
IDC_GRP01 = 2000;
IDC_EDIT01 = 2001;
IDC_EDIT02 = 2002;
IDC_STATIC01 = 2003;

IDC_GRP02 = 3000;
IDC_BUTT_OK = 3001;
IDC_BUTT_EXIT = 3002;

IDC_GRP03 = 4000;
IDC_BUTT_MAIL = 4001;
IDC_BUTT_URL = 4002;

IDI_ICON = 5000;
IDC_STATIC_BMP = 6000;

szURL = 'http://ahteam.org/';
szMailTo = 'mailto:ridex@ahteam.org?subject=Delphi%20Patch%20 Template%20#3';

//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
//Yours data here...

byte01: Byte = $00;

//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

var
Msg: TMsg;
hWnd, hFile, hEdit01, hEdit02: THandle;
WriteBuff: DWORD;
Ofn: TOpenFilename;
Obuf: array[0..255] of Char;

function WndProc(hwnd, wmsg, wParam, lParam: lParam): LongBool; stdcall;
var
rcDlg, rcOwner: TRect;
begin
Result := False;
case wmsg of
WM_INITDIALOG:
begin
GetWindowRect(GetDesktopWindow, rcOwner);
GetWindowRect(hWnd, rcDlg);
SetWindowPos(hWnd,
HWND_TOP,
rcOwner.Right div 2 - (rcDlg.Right - rcDlg.Left) div 2,
rcOwner.Bottom div 2 - (rcDlg.Bottom - rcDlg.Top) div 2,
0, 0,
SWP_NOSIZE);

hEdit01 := GetDlgItem(hWnd, IDC_EDIT01);
hEdit02 := GetDlgItem(hWnd, IDC_EDIT02);
end;
WM_COMMAND:
begin
case loWord(wParam) of
IDC_BUTT_OK:
begin
FillChar(Ofn, SizeOf(Ofn), 0);
Ofn.lStructSize := SizeOf(Ofn);
Ofn.hWndOwner := hWnd;
Ofn.lpstrFilter := 'Programs (*.exe;*.dll;*.scr,*.ocx;*.sys)'#0 + '*.exe;*.dll;*.scr,*.ocx;*.sys'#0 +
'All Files (*.*)'#0 + '*.*'#0#0;
Ofn.nMaxFile := SizeOf(OBuf);
Ofn.lpstrFile := @Obuf;
Ofn.Flags := OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST;
if GetOpenFileName(Ofn) then begin
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
//Something do here...
SetDlgItemTextA(hWnd, IDC_EDIT01, Obuf);
hFile := CreateFile(Obuf,GENERIC_WRITE,FILE_SHARE_READ,nil, OPEN_EXISTING,0,0);
SetFilePointer(hFile, $00000000, nil, FILE_BEGIN);
WriteFile(hFile, byte01, 1, WriteBuff, nil);
CloseHandle(hFile);
//...
SetDlgItemTextA(hWnd, IDC_EDIT02, 'File patched successful...');
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
end;
end;
IDC_BUTT_EXIT:
begin
SendMessage(hWnd, WM_DESTROY, 0, 0);
end;
IDC_BUTT_MAIL:
begin
ShellExecute(hWnd, 'open', szMailTo, nil, nil, 0);
end;
IDC_BUTT_URL:
begin
ShellExecute(hWnd, 'open', szURL, nil, nil, 0);
end;
end;//case
end;
WM_CLOSE:
SendMessage(hWnd, WM_DESTROY, 0, 0);
WM_DESTROY:
begin
EndDialog(hWnd, 0);
PostQuitMessage(0);
end;
end;
end;

begin
hWnd := CreateDialog(hInstance, MAKEINTRESOURCE(1000), 0, @WndProc);
SetDlgItemTextA(hWnd, IDC_EDIT02, 'Open a file for patch, please...');
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.

SLV :: Возможно, но я пишу OPENFILENAME (как в асме, типа ofn OPENFILENAME ‹›)

WELL :: SLV пишет:
цитата:
С T это из VCL, из Dialogs.


... Ну RideX в принципе убедительно объяснил =)






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS