Autor |
Beitrag |
willi
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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: 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
|
Verfasst: 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 174
D7 Ent
|
Verfasst: 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 !!
ich wollt mir nun diesen teil hier
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; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function tform1.StatusString(state: TRasConnState; error: Longint): String; var c: Array[0..100] of 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..100] of 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
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
|
Verfasst: 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
      
Beiträge: 174
D7 Ent
|
Verfasst: 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
oder was versteht man unter dem prototypen der funktion ?
|
|
|