Autor Beitrag
willi
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 17.10.04 15:24 
Hallo,
ich möchte gerne eine DFÜ-Verbindung ins Internet trennen. Ich kann zwar rausbekommen, ob eine DFü-Verbindung besteht, aber ich kann sie leider nicht trennen. Mit der Methode InternetAutodialHangup(0); klappt es leider nicht. :(
Ich möchte mir nun auch nicht alle möglichen Komponenten runterladen um rauszubekommen, dass die dies auch nicht schaffen...
weiß jemand, wie ich das selber programmieren kann??

Vielen Dank schonmal
MFG
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 17.10.04 16:59 
Hallo Willi,

ich helf dir gleich, muss aber davor meine Delphi-Festplatte anstecken ;).
Zunächst brauchst du aber die API Überseztzung der RAS-Schnittstelle. Diese findest du bei Jedi-Delphi: delphi-jedi.org/api/RAS.zip.

So hier schonmal die Prozedur, mit der du eine Verbindung, anhand des Handles, trennen kannst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure Disconnect(const hRasConn: THRasConn);
var
  Status: TRasConnStatusA;
begin
  if hRas <> 0 then begin
    RasHangUp(hRasConn);
    FillChar(Status, SizeOf(Status), 0);
    Status.dwSize := SizeOf(Status);
    while RasGetConnectStatus(hRasConn, Status) <> ERROR_INVALID_HANDLE do
      Sleep(0);
  end;
end;
Jetzt kannst du schon mal die Verbindung trennen. Nun musst du nur noch wissen, welche Verbindung gerade läuft. Ich schau mal, ob ich dir da noch was zusammen basteln kann.

Gruß,
Hape

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.


Zuletzt bearbeitet von wulfskin am So 17.10.04 17:15, insgesamt 1-mal bearbeitet
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 17.10.04 17:12 
Die zauberhafte Welt des Herrn Professor S. D. Kit :

- RasEnumConnections()
- RasHangUp()

sind deine besten Freunde für dein Ansinnen ;)

Eine weitere RAS-Übersetzung gibts von mir:
assarbad.net/stuff/api_conversions.zip
willi Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 17.10.04 18:21 
Vielen Dank für die schnelle Antwort.
Aber das PSDK ist für meine isdn-leitung leider etwas zu groß.
Und bei dem Download der RAS-Schnittstelle habe ich leider auch Probleme... er will sie einfach nicht downloaden, keine Ahnung warum. Ich werd es später nochmal versuchen, vielleicht nur ein Server-Problem oder sowas.

Trotzdem nochmal danke
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 17.10.04 19:16 
Hallo Willi,

vielleicht liegt es ja am Server. Ich hab mal die Ras-Header mit einem Beispiel (nicht von mir, dafür besser ;)) hochgeladen:

programs.hippieclan.net/d_ras.zip

Viele Grüße,
Hape

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
willi Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 17.10.04 23:45 
oh, super,
hab grad das Testprogramm ausprobiert und kann ja nun daraus mir das trennen etwas abschauen... jedenfalls funktioniert das trennen.

vielen dank
CABALxx
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 174


D7 Ent
BeitragVerfasst: Do 11.11.04 15:05 
moin moin
ich weiss das thema is paar tage alt aber eigentlich immernoch interessant

das testprogramm habe ich auch heruntergeladen
es funktioniert vorzüglich !! :D

ich wollt mir nun diesen teil hier

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Ras,
  StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListView1: TListView;
    procedure Button1Click(Sender: TObject);
  private
  function StatusString(state: TRasConnState; error: Longint): String;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function tform1.StatusString(state: TRasConnState; error: Longint): String;
  var
    c: Array[0..100of Char;
    s: String;
  begin
  if error <> 0 then
    begin
    RasGetErrorString(error, c, 100);
    Result := c;
    end
  else
    begin
    s := '';
    case State of
      RASCS_OpenPort:
        s := 'Opening port';
      RASCS_PortOpened:
        s := 'Port opened';
      RASCS_ConnectDevice:
        s := 'Connecting device';
      RASCS_DeviceConnected:
        s := 'Device connected';
      RASCS_AllDevicesConnected:
        s := 'All devices connected';
      RASCS_Authenticate:
        s := 'Start authenticating';
      RASCS_AuthNotify:
        s := 'Authentication: notify';
      RASCS_AuthRetry:
        s := 'Authentication: retry';
      RASCS_AuthCallback:
        s := 'Authentication: callback';
      RASCS_AuthChangePassword:
        s := 'Authentication: change password';
      RASCS_AuthProject:
        s := 'Authentication: projecting';
      RASCS_AuthLinkSpeed:
        s := 'Authentication: link speed';
      RASCS_AuthAck:
        s := 'Authentication: acknowledge';
      RASCS_ReAuthenticate:
        s := 'Authentication: reauthenticate';
      RASCS_Authenticated:
        s := 'Authenticated';
      RASCS_PrepareForCallback:
        s := 'Preparing for callback';
      RASCS_WaitForModemReset:
        s := 'Waiting for modem reset';
      RASCS_WaitForCallback:
        s := 'Waiting for callback';
      RASCS_Projected:
        s := 'Projected';
      RASCS_StartAuthentication:
        s := 'Start authentication';
      RASCS_CallbackComplete:
        s := 'Callback complete';
      RASCS_LogonNetwork:
        s := 'Logging on network';

      RASCS_Interactive:
        s := 'Interactive';
      RASCS_RetryAuthentication:
        s := 'Retry Authentication';
      RASCS_CallbackSetByCaller:
        s := 'Callback set by caller';
      RASCS_PasswordExpired:
        s := 'Password expired';

      RASCS_Connected:
        s := 'Connected';
      RASCS_Disconnected:
        s := 'Disconnected';
      end;
    Result := s;
    end;
  end;


procedure TForm1.Button1Click(Sender: TObject);
var
    bufsize: Longint;
    numEntries: Longint;
    x: Integer;
    entries: Array[1..100of TRasConn;
    stat: TRasConnStatus;
  begin
  entries[1].dwSize := SizeOf(TRasConn);
  bufsize := SizeOf(TRasConn) * 100;
  ListView1.Items.Clear;
  FillChar(stat, Sizeof(TRasConnStatus), 0);
  stat.dwSize := Sizeof(TRasConnStatus);
  if RasEnumConnections(@entries[1], bufsize, numEntries) = 0 then
    begin
    if numEntries > 0 then
      begin
      for x := 1 to numEntries do
        with ListView1.Items.Add, entries[x] do
          begin
          Data := Pointer(hrasconn);
          Caption := szEntryName;
          SubItems.Add(szDeviceType);
          SubItems.Add(szDeviceName);
          RasGetConnectStatus(hrasconn, stat);
          SubItems.Add(StatusString(stat.rasconnstate, stat.dwError));
          end;
      ListView1.ItemFocused := ListView1.Items[0];
      end;
    end
  else
    ShowMessage('RasEnumConnections failed.');
  end;

end.


mal benutzen um in einem eigenen programm die internetverbindung zu kappen....

aber:

An dieser stelle

ausblenden Delphi-Quelltext
1:
if RasEnumConnections(@entries[1], bufsize, numEntries) = 0 then					


gibt er mir für bufsize und numentries nen fehler aus:
er meint folgendes:

" Die typen der tatsächlichen und Formalen Var- Parameter müssen übereinstimmen"

ich hab selbst versucht es zu beheben

ich bin dran verzweifelt

vielleicht könnt ihr mir ja sagen wo der fehler liegt?
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Do 11.11.04 16:53 
Da mußt du schonmal den Prototypen der Funktion hier zeigen. Es hängt nämlich durchaus von der Übersetzung ab, wie man Parameter übergeben muß.
CABALxx
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 174


D7 Ent
BeitragVerfasst: Do 11.11.04 18:37 
prototypen der function?

also weiter als das was ich als source gepostet hab bin ich ja noch nicht mal :oops:

oder was versteht man unter dem prototypen der funktion ?