RasEntryDlgを使用して、ダイヤルアップのウイザート画面を表示したいのですが、方法定義の仕方がわかりません。どなたかご教授戴けないでしょうか?
const
RASEDFLAG_PositionDlg = $00000001;
RASEDFLAG_NewEntry = $00000002;
RASEDFLAG_CloneEntry = $00000004;
RASEDFLAG_NoRename = $00000008;
RASEDFLAG_ShellOwned = $40000000;
type
PRasEntryDlgA = ^TRasEntryDlgA;
PRasEntryDlgW = ^TRasEntryDlgW;
PRasEntryDlg = PRasEntryDlgA;
TRasEntryDlgA = record
dwSize: DWORD;
hwndOwner: HWND;
dwFlags: DWORD;
xDlg: LongInt;
yDlg: LongInt;
szEntry: packed array[0..RAS_MaxEntryName] of AnsiChar;
dwError: DWORD;
reserved: DWORD;
reserved2: DWORD;
end;
TRasEntryDlgW = record
dwSize: DWORD;
hwndOwner: HWND;
dwFlags: DWORD;
xDlg: LongInt;
yDlg: LongInt;
szEntry: packed array[0..RAS_MaxEntryName] of WideChar;
dwError: DWORD;
reserved: DWORD;
reserved2: DWORD;
end;
TRasEntryDlg = TRasEntryDlgA;
function RasEntryDlg(lpszPhonebook: PChar; lpszEntry: PChar; var lpInfo: TRasEntryDlg): BOOL; stdcall;
external 'rasdlg.dll' name 'RasEntryDlgA';
誠にありがとうございます。
実際にRasEntryDlgを実行するロジックですが、lpInfoには何を指定すればよろしいでしょうか?初心者でお手数おかけします。
var
RasEntryDlgA : TRasEntryDlgA;
begin
with RasEntryDlgA do
begin
dwFlags := RASEDFLAG_NewEntry;
dwSize := sizeof(RasEntryDlgA);
end;
RasEntryDlg(nil,nil,RasEntryDlgA);
end;
のように記載してみましたが、アドレス違反となってしまいます。
var
RasED : PRasEntryDlg;
begin
New(RasED);
FillChar(RasED^, SizeOF(RasED^), 0); // ワスレタラ違反キップ1000点
with RasED^ do begin
dwFlags := RASEDFLAG_NewEntry;
dwSize := Sizeof(RasED^);
hwndOwner:= Self.Handle;
end;
RasEntryDlg(nil, nil, RasED^);
Dispose(RasED);
end;
var
RasED: TRasEntryDlg;
begin
FillChar(RasED, SizeOF(RasED), 0); // ワスレタラ違反キップ1000点
with RasED do begin
dwFlags := RASEDFLAG_NewEntry;
dwSize := Sizeof(RasED);
hwndOwner:= Self.Handle;
end;
RasEntryDlg(nil, nil, RasED);
end;
ありがとうございました。
無事に解決致しました。
ツイート | ![]() |