Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.027 c
14-1116828273
Priest
2005-05-23 10:04
2005.07.11
Кто-нибудь качал Update 3 для D2005


1-1118508323
Galiaf
2005-06-11 20:45
2005.07.11
Хотел сделать защиту.


9-1112119855
Bret
2005-03-29 22:10
2005.07.11
DCE


1-1118785641
rosl
2005-06-15 01:47
2005.07.11
нумерация


10-1095160880
Jaxtor
2004-09-14 15:21
2005.07.11
Отображение формы приложения на DCOM сервере