An ATL project to run PING and TRACERT

Download Source Code and Example

The Icmpcom project is a basic ALT template created by the ATL wizard. The control acts as an interface to the ICMP.DLL . This DLL is supplied by MS to allow PING and TRACERTs to be run under a dos window.

The Control can be used by a VB5 app to create a nice list box and series of button and edit boxes to provide a user interface to PING and TRACERT.

ICMP.DLL is impleted via a Thread which is started when the StartPing method is called. The thread continues to run till the operation finishes or is canceled via a StopPing call. Tracert is implemented automatically when a StartPing request is issued and the tracert option in the parmlist is TRUE.

The Methods should be invoked in the following order. SetPingVariables and RunPing can be called as a request is needed. When the app terminates be sure to call StopPing.

StartICMP Must be the first call made to the control. Loads and initializes the DLL returns an error message thru the event sink if failed
SetPingVariables() Just That. It accepts most all of the options accepted by the Dos Ping. It can support all of them if you want to code them up.


We can finally issue a ping request.
StopPing() tries to cancel the operation that is in progress
StopICMP Last call to the control. Unloads the DLL and cleans up Winsock

The Events will call into the container under 3 possible conditions.

  1. When the Ping/Tracert request wants to send back a reply.
  2. When the Ping/Tracert request is completed
  3. When StopICMP is called.


Passes back the data returned from the request. The data is pre formatted and ready to display.


After each PING request is completed


After StopICMP is called

The sample VB and MSVC++ app demonstrates how icmpcom works.

The VC++ container was a little more work than VB. The Event Sinks had to be added by creating a new class in class wizard based from CcmdTarget. The functions (sink events) had to be added to the CPP and H files manually after the class was created. Note the BEGIN_DISPATCH_MAP() section in the cpp file.

Reference materials.

Beginning ATL COM programming Wrox Press
Active/X COM control programming Wrox Press
The ATL samples from Visual C++ 5.0
The WorldOfATL
MFC CodeGuru ATL Section
MSJ June 1998

Last updated: 22 June 1998


  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Lenovo recommends Windows 8 Pro. "I dropped my laptop getting out of the taxi." This probably sounds familiar to most IT professionals. If your employees are traveling, you know their devices are in for a rough go. Whether it's a trip to the conference room or a convention out of town, any time equipment leaves a user's desk it is at risk of being put into harm's way. Stay connected at all times, whether at the office or on the go, with agile, durable, and flexible devices like the Lenovo® …

  • As the mobile enterprise marketplace expands and customer needs grow more diverse, Samsung recognizes that solution partners and developers play an essential role by continually innovating to meet their customers' needs. Samsung works to provide these developers and partners with the latest tools and resources needed to create these solutions. Read this program guide to learn how the Samsung Enterprise Alliance Program provides partners and developers with Samsung enterprise software development kits (SDKs) …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date