Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen (https://www.delphipraxis.net/12219-dfue-verbindung-aufbauen-ohne-dfue-eintrag-zu-nutzen.html)

Joe 23. Nov 2003 12:53


DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Alle bisher gefundenen Beiträge konnten mir nicht helfen. Ich möchte eine DFÜ-Verbindung über Delphi aufbauen. Ich möchte dazu keinen DFÜ-Eintrag nutzen, (wenn einfach möglich). Alles bisher gefundene baut nur eine Standardverbindung auf, oder hat auf irgendwelche Seiten verwiesen, auf denen ich micht (wg. englischem Fachchinesisch) nicht zurechtfinde, da ich halt doch noch'n Anfänger bin.

Es würde mir auch schon reichen, wenn ich einen bestehenden DFÜ-Eintrag nutzen könnte, in dem das Passwort nicht verankert ist und ich über Delphi nur das eingeben muss. Zweck soll sein eine DFÜ-Verbindung nur über mein Delphi-Programm zu ermöglichen...

Duffy 23. Nov 2003 14:14

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Hallo Joe,
schau mal unter RAS bei Torry nach. Da sollte was für Dich dabei sein.

bye
Claus

Joe 23. Nov 2003 14:16

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Danke werd ich mal machen. Dank deinem Link weiss ich nun was mit Torry immer gemeint war... Wofür steht denn RAS?

sharkx 23. Nov 2003 14:18

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
RAS = Remote Access Service

Joe 24. Nov 2003 00:34

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Aha danke! Bin gespannt, wann ich hier das erste mal jmd. weiterhelfen kann.

Hab übrigens inzwischen was bei Torry gefunden. Alles sehr interessant und aufregend. Denke ich werde was mit anfangen können.

Danke euch!

andimx 25. Apr 2005 16:12

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Also ich hab das gleiche Problem. Entwickle ein Program für ein Hotel, welches seinen Kunden nur eine bestimmte Internet EInwahl anbieten will.

TurboPower brauch auch einen bestehenden DFÜ-Telefonbuch-Eintrag bevor er weiter machen kann.

Hat jemand Ahnung wie man einen Telefonbuch-Eintrag temporär anlegt?

Gruss,

Andi

Mephistopheles 25. Apr 2005 16:25

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Ja hat jemand :) ... der nämlich!

Mephistopheles 25. Apr 2005 19:23

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe da mal ganz schnell etwas vorbereitet. Im Anhang befindet sich das vollständige Projekt und die Includedateien.
Der Einfachheit halber ist es ein Konsolenprogramm, weil das den Code auf das nötigste beschränkt.

Das ist ab jetzt PUBLIC DOMAIN. Darf also beliebig weiterverwendet werden.

Einschränkungen: Dieser Quelltext funktioniert unverändert maximal unter NT4/2000 und Nachfolgern, jedoch nicht unter Win9x. Für letzteres wären Anpassungen notwendig.
Getestet wurde er mit Delphi 4 Pro unter Windows 2000.

Delphi-Quellcode:
program MiniDialer;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  Windows;

{$INCLUDE Ras.pas}

function ListRASDevices(var NumDevices: DWORD): LPRASDEVINFOA; // Must be freed with GlobalFree()
var
  Buffer, temp: LPRASDEVINFOA;
  NumDev, SizeNeeded: DWORD;
  i: Integer;
begin
  result := nil;
  RasEnumDevices(nil, @SizeNeeded, @NumDev);
  Buffer := LPRASDEVINFOA(GlobalAlloc(GPTR, SizeNeeded));
  if Assigned(Buffer) then
  begin
    Buffer^.dwSize := sizeof(RASDEVINFOA);
    RasEnumDevices(Buffer, @SizeNeeded, @NumDev);
    temp := Buffer;
    // Iterate through devices!
    for i := 0 to NumDev - 1 do
    begin
      Writeln(Format('%d -> %s [%s]', [i + 1, temp^.szDeviceName, temp^.szDeviceType]));
      // Go to next entry in the list
      temp := LPRASDEVINFOA(DWORD(temp) + sizeof(RASDEVINFOA));
    end;
    // Return buffer. It MUST BE FREED using GlobalFree()!
    NumDevices := NumDev;
    result := Buffer;
  end;
end;

function CreatePbkEntry(
  Phonebook,
  EntryName,
  DeviceName,
  DeviceType,
  NumberToDial,
  Username,
  Password: string
  ): Boolean;
var
  dwError: DWORD;
  pbk: PChar;
  EntryParams: RASENTRYA;
  DialParams: RASDIALPARAMSA;
begin
  result := False;
  if (Length(EntryName) > 0) then
  begin
    if (Length(PhoneBook) > 0) then
      pbk := @PhoneBook[1]
    else
      pbk := nil;
    dwError := RasValidateEntryName(pbk, @EntryName[1]);
    if (dwError = ERROR_SUCCESS) then
    begin
      ZeroMemory(@EntryParams, sizeof(EntryParams));
      // Parameters of RAS entry
      EntryParams.dwSize := sizeof(EntryParams);
      EntryParams.dwfOptions := RASEO_ModemLights or RASEO_SwCompression;
      EntryParams.dwFramingProtocol := RASFP_Ppp;
      EntryParams.dwfNetProtocols := RASNP_Ip;
      lstrcpy(@EntryParams.szLocalPhoneNumber[0], @NumberToDial[1]);
      lstrcpy(@EntryParams.szDeviceName[0], @DeviceName[1]);
      lstrcpy(@EntryParams.szDeviceType[0], @DeviceType[1]);
      dwError := RasSetEntryProperties(
        pbk,
        @EntryName[1],
        @EntryParams,
        sizeof(EntryParams),
        nil,
        0);
      // Upon success set the password and username
      if (dwError = ERROR_SUCCESS) then
      begin
        ZeroMemory(@DialParams, sizeof(DialParams));
        // Dial parameters of an entry
        DialParams.dwSize := sizeof(DialParams);
        lstrcpy(@DialParams.szEntryName[0], @EntryName[1]);
        lstrcpy(@DialParams.szUserName[0], @Username[1]);
        lstrcpy(@DialParams.szPassword[0], @Password[1]);
        dwError := RasSetEntryDialParams(pbk, @DialParams, false);
        if (dwError <> ERROR_SUCCESS) then
          Writeln('RasSetEntryDialParams() Fehler: ', dwError); // FIXME: Andere Fehlerbehandlung
      end;
      if (dwError <> ERROR_SUCCESS) then
        Writeln('RasSetEntryProperties() Fehler: ', dwError); // FIXME: Andere Fehlerbehandlung
    end; // FIXME: Fehlerbehandlung
  end; // FIXME: Fehlerbehandlung
end;

var
  devices, temp: LPRASDEVINFOA;
  i, numdev: DWORD;
  Device, DeviceType: string;
begin
  // Initialisiere die Include-Datei, bzw. die enthaltenen APIs
  InitRAS();
  Writeln('Wähle ein Gerät, über welches die Verbindung erfolgen soll:');
  devices := ListRASDevices(numdev);
  Write('Gib die Zahl des Eintrags an: ');
  Readln(i);
  // Find the device chosen
  if (i > 0) and (i <= numdev) then
  begin
    i := i - 1;
    temp := LPRASDEVINFOA(DWORD(devices) + sizeof(RASDEVINFOA) * i);
    SetString(Device, temp^.szDeviceName, lstrlen(@temp^.szDeviceName[0]));
    SetString(DeviceType, temp^.szDeviceType, lstrlen(@temp^.szDeviceType[0]));
    Writeln(Format('Folgendes Gerät gewählt: %s [%s]', [Device, DeviceType]));
    GlobalFree(HGLOBAL(devices)); // Free buffer with RAS devices
  end
  else
  begin
    Writeln('Ungültiges Gerät ausgewählt!');
    GlobalFree(HGLOBAL(devices)); // Free buffer with RAS devices
    ExitProcess(0);
  end;
  CreatePbkEntry('',
    'Testeintrag',
    Device,
    DeviceType,
    '0193670',
    'msn@easysurfer-power.de',
    'msn'
    );

  Writeln('Press ENTER to quit'); Readln;
end.

andimx 26. Apr 2005 07:59

Re: DFÜ-Verbindung aufbauen, ohne DFÜ-Eintrag zu nutzen
 
vielen dank, funktioniert spitze :-))


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz