Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1153555789
jack128
2006-07-22 12:09
2006.08.20
Classes.pas из под Delphi5


8-1140424615
barakuda
2006-02-20 11:36
2006.08.20
освобождение памяти после просмотра большого JPEG


15-1153461311
tButton
2006-07-21 09:55
2006.08.20
<select>


15-1153661926
Andy BitOff
2006-07-23 17:38
2006.08.20
Какой алгоритм жмет сильнее?


15-1153845436
TJulia
2006-07-25 20:37
2006.08.20
Вопрос знатокам английского языка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский