Solved

Question on RasConnectionNotification

Posted on 1998-11-20
9
354 Views
Last Modified: 2009-12-16
I intend to write an application that detects when the user establishes an internet connection (the same thing as ICQ's agent does).
I tried to set a timer and do RasEnumConnections each second or so, but the problem is that RasEnumConnections detects the connection when dialing and not when it's established.
So I took a look at the win32api reference and found the function RasConnectionNotification. It lets you specify an event object and sets this event to signaled when it detects a connection. (I wonder how the ICQ agent did this since that function has not been available until Win98.)

Here's some sample code:

var
  hConnEvent: THandle;

function Foo: Longint;
begin
  hConnEvent := CreateEvent(nil, True, False, nil);
  Result := RasConnectionNotification(hConnEvent,    
    RASCN_Connection);
end;

My problem is as follows: The CreateEvent function doesn't cause any error (error code 0) and returns a handle. But the return value of RasConnectionNotification in the sample code is always 6, what means that the handle is invalid. What am I doing wrong?
0
Comment
Question by:Till
  • 3
  • 3
  • 3
9 Comments
 
LVL 4

Expert Comment

by:dwwang
Comment Utility
Download the http://www.magsys.co.uk/delphi/rascomp.zip,
it's an improved version of TRas, in the sample included you can find what you need and more.

0
 

Author Comment

by:Till
Comment Utility
Sorry Dwang,
but I made such wrapper components myself, and they work quite well. In the code you describe, the file "ras.h" translated is of a quite old version, and it does not even contain the function I needed information about.
0
 
LVL 4

Expert Comment

by:dwwang
Comment Utility
But couldn't you see the code that how to get the currecnt connection and other functionalities?
0
 

Expert Comment

by:msac_m
Comment Utility
Hi Till,

  Today I wrote a program whose aim is the same as yours.
And I used RASEnumConnections, and RasGetConnectStatus
I did not encounter  your problem. After I connected to my ISP server then RasGetConnectStatus fell into the case RASCS_Connected which is true.

Regards.


0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Expert Comment

by:msac_m
Comment Utility
Hi all again,

  RASEnumConnections as you said , detects the connection immediately this is true. I think the missing part of yor code is the
RASGetConnectStatus.
 After you enumerate the Connections you will get how many connections available, this value is returned in the last variable of the enum function. After getting the number you must build a loop which checks the connections states. Whether connected or not.
The most importatnt two state are,
    RASCS_Connected = RASCS_DONE, // ESTABLISHED
     RASCS_Disconnected

Regards,

0
 

Author Comment

by:Till
Comment Utility
Hmm... that was not exactly what I wanted... I think I'll close this question. I know how I can do the stuff with RasEnumConnections, but I think it's a little waste of system resources with that timer. Therefore I tried to get along with that other new function but it always returns "invalid handle".
0
 

Expert Comment

by:msac_m
Comment Utility

Hi Till,

   When I read your question, I saw that you was mentioning that RasEnumConnections detects the connection immediately. In my answer I wanted to point out that this is not the case, In fact after the connection established it says that  RASCS_Connected

Regards,

0
 

Author Comment

by:Till
Comment Utility
Yes, of course... but that was only an introduction to my actual question, regarding the invalid handle passed.
0
 
LVL 4

Accepted Solution

by:
dwwang earned 130 total points
Comment Utility
Hi, the RasConnectionNotification API call is only available in WinNT, are you sure you are not using it in Win95/98?

If you are using Win95/98, you can only use RasEnumConnections.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now