Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизКак программно создать Dial-Up соединение ? Найти похожие ветки
← →
Style © (2005-04-21 15:26) [0]Функции которая это делает, я так и не нашел.
Хочется просто создать стандартное DialUp соединениеи вписать в него логин, пароль и телефон.
В XP, NT 2000 у меня получилось подправить rasphonebook.pbk и добавить туда свое соединение. Затем, вызвать стандартный диалог (подключения) и помощью SendMessage нужым окнам, заполнить его логин, пароль...
Но вот в 95/98, соединения хранятся в непонятном для меня виде в реестре и создать их самому у меня так и не получилось :(
Может кто чего подскажет по этому поводу?
Заранее благодарен.
← →
Ученик (2005-04-21 23:26) [1]Наверно, поможет RasSetEntryProperties, по поиску можно найти примеры использования, на www.torry.net скорее всего есть бесплатные компоненты с исходниками (RAS)
← →
Style © (2005-04-22 09:59) [2]
> Наверно, поможет RasSetEntryProperties, по поиску можно
> найти примеры использования, на www.torry.net скорее всего
> есть бесплатные компоненты с исходниками (RAS)
Нет, это не то..
Сначала Entry нужно создать. в RASAPI есть функция, но она вызывает стандартный диалог добавления подключения.. А мне нужно ручками создать Entry.
← →
Style © (2005-04-22 15:08) [3]Люди, ну помогите плиз, очень нужно!
← →
Ученик (2005-04-22 22:05) [4]The RasSetEntryProperties function changes the connection information for an entry in the phone book or creates a new phone-book entry.
← →
Raider © (2005-04-23 00:34) [5]ftp://delphi-jedi.org/api/RAS.zip, пример прилагается.
← →
Style © (2005-05-12 12:50) [6]>>Ученик (22.04.05 22:05) [4]
>>The RasSetEntryProperties function changes the connection >>information for an entry in the phone book or creates a new >>phone-book entry.
Смотрю хелп по WinApi -
Так же там написано что эта функция не работает в Win95.
У кого нито хоть получилось создать подключение в Win98 или в 95 с помощью RAS.
В общем я замучался и конкретного примера не нашел -
пришлось разобраться в алгоритме как Microsoft хранит и шифрует соединения покрайней мере в 98 винде в реестре :0)
В общем так мона создавать соединения в 98. Пока заполняю только имя соединения модем и телефон.
uses Ras, Registry;
const
Head = #$41+#$42+#$30+#$32+#$07+#$00+#$00+#$00+#$20+#$00+#$00+#$00+#$21+#$00+#$00+#$00
+#$07+#$00+#$00+#$00+#$2B+#$00+#$00+#$00+#$27+#$00+#$00+#$00+#$37+#$00+#$00+#$00
+#$00;
Connect = #$50+#$50+#$50+#$00+#$0C+#$00+#$00+#$00+#$05+#$00+#$00+#$00+#$07+#$00+#$00+#$00+#$9C+#$00+#$00+#$00+#$08+#$01+#$00+#$00;
Tail = #$6D+#$6F+#$64+#$65+#$6D+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00
+#$00+#$00+#$00+#$6C+#$00+#$00+#$00+#$03+#$00+#$01+#$00+#$08+#$00+#$08+#$00+#$60
+#$00+#$00+#$00+#$01+#$00+#$00+#$00+#$1C+#$00+#$00+#$00+#$00+#$C2+#$01+#$00+#$15
+#$20+#$00+#$00+#$00+#$00+#$0A+#$00+#$0A+#$00+#$08+#$00+#$00+#$11+#$13+#$00+#$00
+#$00+#$38+#$7E+#$06+#$00+#$00+#$00+#$30+#$00+#$00+#$00+#$30+#$00+#$00+#$00+#$30
+#$00+#$00+#$00+#$30+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$3C
+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$01+#$00+#$00+#$00+#$90
+#$01+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
edName: TITEdit;
edPhone: TITNumericEdit;
btnOK: TITButton;
procedure btnOKClick(Sender: TObject);
private
procedure CreateConnection(Name, Phone: string);
function GetControlSumm(ConnectionName: string): byte;
function GetFirstModem: string;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function TForm1.GetFirstModem: string;
var
lpSize: integer;
lpDevices: integer;
Info: array of TRASDEVINFOA;
i: integer;
begin
result := "";
lpSize := 0;
lpDevices := 0;
SetLength(Info, 1);
RasEnumDevicesA(nil,lpSize,lpDevices);
SetLength(Info, lpDevices);
ZeroMemory(@Info[0],SizeOf(TRASDEVINFOA));
Info[0].dwSize := SizeOf(TRASDEVINFOA);
RasEnumDevicesA(@Info[0],lpSize,lpDevices);
for i := 0 to lpDevices-1 do
begin
if(lowercase( Trim(Info[i].szDeviceType) ) = "modem") then
begin
if(Trim(Info[i].szDeviceName) <> "") then
begin
result := Trim(Info[i].szDeviceName);
break;
end;
end;
end;
end;
procedure TForm1.CreateConnection(Name, Phone: string);
var
i: integer;
xorbyte: byte;
ConnectText: string;
Reg: TRegistry;
pstr: pchar;
ZeroStr: string;
begin
xorbyte := GetControlSumm(Name);
ZeroStr := "";
for i := 1 to 128 do
ZeroStr := ZeroStr + #0;
ZeroStr := copy(GetFirstModem + ZeroStr, 1, 128);
ConnectText := Head + Phone + #0 + Connect + ZeroStr + #0 + Tail;
ConnectText[25] := char($22 + Length(Phone) ) ;
ConnectText[29] := char($32 + Length(Phone) ) ;
Reg := TRegistry.Create;
try
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey("RemoteAccess\Addresses",False);
pstr := allocmem(Length(ConnectText));
try
for i := 0 to Length(ConnectText)-1 do
pStr[i] := char(byte(ConnectText[i+1]) xor XorByte);
pStr[2] := char(XorByte xor $30 ) ;
Reg.WriteBinaryData(Name, PStr^, Length(ConnectText));
finally
freeMem(pstr);
end;
finally
Reg.Free;
end;
end;
function TForm1.GetControlSumm(ConnectionName: string): byte;
var
i: integer;
begin
result := 0;
for i := 1 to Length(ConnectionName) do
begin
result := result + byte(ConnectionName[i]);
end;
end;
{$R *.dfm}
procedure TForm1.btnOKClick(Sender: TObject);
begin
CreateConnection(edName.Text, edPhone.Text);
end;
А логин и пароль можно заполнять на форме стандартного dialerа из wininet.dll который одинковый во всех виндах, с помощью SendMessage(WM_SETTEXT...
← →
VMcL © (2005-05-12 15:54) [7]>Смотрю хелп по WinApi -
Так же там написано что эта функция не работает в Win95.Client: Requires Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, Windows 98, or Windows 95 OSR2 and later.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
← →
Style © (2005-05-12 16:08) [8]VMcL © (12.05.05 15:54) [7]
Ну не выдумал же я...
Win32s.hlp
DWORD RasSetEntryProperties - New Windows NT
Quick Info:
Win95 - NO!
Win32s - NO!
← →
VMcL © (2005-05-12 17:44) [9]>>Style © (12.05.05 16:08) [8]
Я MSDN"у как-то больше доверяю.
← →
Style © (2005-05-13 09:44) [10]>>Я MSDN"у как-то больше доверяю.
у меня его не было под рукой, и в инет доступ был ограничен :(
в любом случае свою задачу я выполнил ;0)
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.099 c