API Call Sample

To get samples and instructions for installing them, see the following:

  • Click Samples on the Visual Studio Help menu.

    For more information, see Locating Sample Files.

  • The most recent versions and the complete list of samples are available on the Visual Studio 2008 Samples Web site.

  • You can also locate samples on your computer's hard disk. By default, samples and a Readme file are copied to a folder under \Program Files\Visual Studio 9\Samples\. For Visual Studio Express Editions, all samples are located on the Internet.

To run this sample

  • Press F5.

Demonstrates

The class Win32API is defined in a separate file, Win32API.vb. Each API declaration, using the Declare Statement, is available as a Shared member of the Win32API class. Shared members can be called directly using the class name. It is not necessary to create an instance of the class to use them.

The main form contains a tab control with four tab pages. Each tab page demonstrates an action using Win32 API calls:

  • Active Processes   Fills a list view with all running Windows processes. The emphasis is on how to use a Win32 callback function, EnumWindows, by using a delegate.

  • Active Windows   Fills a ListBox control with all active windows, by filtering the results of the callback function, EnumWindows, using the Win32 API. In this example EnumWindows is defined using the DllImportAttribute class instead of the Declare Statement to contrast the difference between using the two methods.

  • Show Window   Allows the user to type a window caption and/or class name and bring the window to the foreground. This example emphasizes overloading multiple types of parameters to one Win32 API function to allow passing different types of variables to the function.

  • API Calls   Shows how to use the following Win32 API calls: GetDiskFreeSpace, GetDiskFreeSpaceEx, GetDriveType, CreateDirectory, SwapMouseButton, IsPwrHibernateAllowed, SetSuspendState, and Beep. These are examples of calls that return information that is not obtainable from the managed-class equivalents.