Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизВызов dll Найти похожие ветки
← →
Zonul (2006-07-10 02:59) [0]Портировал данный код с VB.. он определяет, есть ли на данный момент подключение к интернет....
но почему-то работает он только если вызвать на событие onCreate...
Если повесить на кнопку то вызывает ошибку....unit unitInternetConnection;
interface
uses
SysUtils, Windows, Dialogs, Classes, ExtCtrls, Forms, Messages;
const
RAS_MaxDeviceType = 16;
RAS_MaxEntryName = 256;
RAS_MaxDeviceName = 32;
type
LPRasConn = ^TRasConn;
TRasConn = record
dcSenderize : integer;
hRasCon : integer;
szEntryName : Array[0..RAS_MaxEntryName] of byte;
szDeviceType : Array[0..RAS_MaxDeviceType] of byte;
szDeviceName : Array[0..RAS_MaxDeviceName] of byte;
end;
LPRasConnStatus = ^TRasConnStatus;
TRasConnStatus = record
dcSenderize : integer;
rasconnstate : integer;
dwError : integer;
szDeviceType : Array[0..RAS_MaxDeviceType] of byte;
szDeviceName : Array[0..RAS_MaxDeviceName] of byte;
end;
function RasEnumConnections(RasConnArray: LPRasConn; var lpcb: Longint; var pcConnections: Longint): Longint; stdcall;
function RasGetConnectStatus(hConn: longint; var lpStatus: tRasConnStatus): Longint; stdcall;
function IsConnected: boolean;
implementation
function RasEnumConnections; external "rasapi32.dll" name "RasEnumConnectionsA";
function RasGetConnectStatus; external "rasapi32.dll" name "RasGetConnectStatusA";
function IsConnected: boolean;
var
TRasCon:array[0..255] of LPRasConn;
lg: Longint;
lpcon : Longint;
Tstatus : tRasConnStatus ;
begin
TRasCon[0].dcSenderize := 412;
lg:= 256 * TRasCon[0].dcSenderize ;
RasEnumConnections(TRasCon[0], lg, lpcon);
Tstatus.dcSenderize := 160;
RasGetConnectStatus(TRasCon[0].hRasCon, Tstatus);
IsConnected := Tstatus.RasConnState = 8192;
end;
end.
Помогите..... в чем ошибка????
← →
Германн © (2006-07-10 03:19) [1]
> но почему-то работает он только если вызвать на событие
> onCreate...Если повесить на кнопку то вызывает ошибку...
> .
А где собственно примеры OnCreate и OnClick
← →
Zonul (2006-07-10 03:33) [2]Это модуль... А onCreate и onClick в главной форме...
на этих событиях висит только ShowMessage(BoolToStr(isConnected));
в первом работает, во втором нет :|
← →
Zonul (2006-07-10 03:36) [3]кстати если поставить одновременно два ShowMessage(BoolToStr(isConnected)); на onCreate тоже выкидывает ошибку
← →
Шпиён (2006-07-10 03:40) [4]
function IsConnected: boolean;
var
TRasCon:array[0..255] of LPRasConn; //массив указателей
lg: Longint;
lpcon : Longint;
Tstatus : tRasConnStatus;
begin
//Сами записи нигде не создаются
TRasCon[0].dcSenderize := 412;
lg:= 256 * TRasCon[0].dcSenderize ;
RasEnumConnections(TRasCon[0], lg, lpcon);
Tstatus.dcSenderize := 160;
RasGetConnectStatus(TRasCon[0].hRasCon, Tstatus);
IsConnected := Tstatus.RasConnState = 8192;
end;
Не вчитывался, могу ошибаться.. но на первый взгляд - удивляет, как это вообще может работать.
← →
Джо © (2006-07-10 03:43) [5]> Сами записи нигде не создаются
А каким образом они вообще должны создаваться-то в данном случае? :)
← →
Zonul (2006-07-10 03:43) [6]на бэйсике это вылядит так и работает безотказно..
Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 32
Private Type RASCONN95
dcSenderize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASCONNSTATUS95
dcSenderize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dcSenderize = 412
lg = 256 * TRasCon(0).dcSenderize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dcSenderize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function
← →
Zonul (2006-07-10 03:48) [7]2Джо,
> > Сами записи нигде не создаютсяА каким образом они вообще
> должны создаваться-то в данном случае? :)
где ты раздобыл такую цитату ????
Я вроде такое не говорил....
← →
Zonul (2006-07-10 03:50) [8]Все понял :) туплю...
← →
Шпиён (2006-07-10 03:51) [9]http://kladovka.net.ru/delphibase/?action=viewfunc&topic=netconnect&id=10114
← →
Zonul (2006-07-10 04:14) [10]Спасибо... Добрые люди..... фууу... оно заработало :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c