Win32 API Programming With Visual Basic

Return to Roman Press Home Page
Return to computer books' main page

To order this book through, please click here

This a book is intended for the intermediate-level or higher Visual Basic programmer. The book has two goals:

The first goal is a practical one, since the Win32 API can be of immense use in extending the power of Visual Basic. The second goal is less practical, but is equally important, since Microsoft's documentation seldom takes into account what the reader knows or does not know. Hence, a grounding in the basics of the Windows operating systems will help VB programmers understand Microsoft's documentation.

As I do with all of my books, I have tried to craft careful and precise (in so far as is possible) descriptions of the concepts involved in using the Win32 API from within Visual Basic, as well as the underlying workings of the Windows operating system.

This book will help you increase the power of your VB applications by allowing you to do such relatively simple-sounding things such as:

In addition, you will learn several advanced programming techniques that can be used in your VB applications, such as:

Finally, you will learn some of the secrets of how Windows operates, so that you can:


The prerequisites for this book are simple: an intermediate-level (or higher) knowledge of Visual Basic version 4 or later (the sample programs are written in VB 6) and a desire to stretch VB into the realm of Windows system programming. You may want to do this for a specific purpose-perhaps you are writing a specific application that requires more than VB can handle-or just to learn more about how Windows works without suffering through the very steep learning curve associated with Visual C++-style Windows programming. You do not need to have any background in VC++ (or C++ or C) to read this book, nor do you need to have any previous experience with the Win32 API.

Table of Contents


I. Declaring API Functions in Visual Basic 1

1. Introduction
     What Is the Win32 API?
     The Obstacles to Win32 API Programming Under Visual Basic
     Proceed with Circumspection

2. Preliminaries
     Character Codes
     Parameters and Arguments
     Dynamic Link Libraries
     Some C++ Syntax

3. API Declarations
     The VB Declare Statement
     The VC-to-VB Translation Game Plan
     Passing Parameters to an External Function
     CopyMemory-A VB Hacker's Dream
     Dealing with API Errors

4. Data Types
     What Is a Data Type?
     Fundamental and Derived Data Types
     Visual Basic Data Types
     Basic VC++ Data Types
     Translating Derived Data Types
     Win32 Typedefs
     An Example
     Structures and User-Defined Types
     Symbolic Constants

5. Signed and Unsigned Data Types
     Signed and Unsigned Representations
     Why Two Different Representations?
     Unsigned Representation
     Signed Representation
     Translating Between Signed and Unsigned Representations
     Converting Between Word Lengths

6. Strings
     The BSTR
     C-Style LPSTR and LPWSTR Strings
     String Terminology
     Tools for Exploring Strings
     String Conversion by VB
     Passing Strings to the Win32 API
     Strings and Byte Arrays
     Getting the Address of a Variable of User -Defined Type

7. System Information Functions
     The Computer's Name
     Special Windows Paths
     The Operating System Version
     System Metrics
     System Parameters
     System Colors

8. Exception Handling
     Thwarting the General Protection Fault
     Replacing the Default Exception Handler
     The Replacement Exception Handler
     A Complete Example

II. The Windows Operating System 139

9. Windows Architecture
     Processes and Threads
     Windows Architecture
     Differences Between Windows 9x and Windows NT

10. Objects and Their Handles
     Example: File Mapping

11. Processes
     Process Handles and IDs
     Module Handles
     Identifying a Process
     Process Pseudohandles
     Enumerating Processes
     Is This Application Already Running?

12. Threads
     Thread Handles and Thread IDs
     Thread Priority
     Thread Synchronization
     Waiting Can Be Tricky

13. Windows Memory Architecture
     Types of Memory
     The Address Space of a Process
     Example: Using GetSystemInfo
     Allocating Virtual Memory
     Example: Using GlobalMemoryStatus
     Virtual Memory Management
     Heaps of Memory
     Example: Mapping Virtual Memory

14. Portable Executable Files
     Module Relocation
     The PE File Format
     Example: Getting PE File Information

III. Windows (USER32.DLL Programming ) 261

15. Windows: The Basics
     Window Styles
     Owned Windows
     Z Order
     Enumerating Windows
     Size and Position Functions

16. Windows Messages
     The Message Queues of a Thread
     The Windows Messaging System
     Posting and Sending Messages
     Example: Sending Messages to a Listbox
     Interprocess Marshalling
     Copying Data Between Processes
     The Local Input State

17. Window Classes and the Window Creation Process
     Window Classes
     Predefined Window Classes
     The Window Procedure of a Window Class
     Creating a Window
     Window Styles
     Windows and VB Controls
     Example: Spying on Windows

18. Windows Subclassing
     Subclassing a Window or Window Class
     Example: Subclassing the VB Checkbox Class

19. Windows Hooks
     Global and Thread-Specific Hooks
     Setting the Hook
     Hook Procedures
     Hook Types
     Hook Chains
     Example: A Local Hook
     Example: A Global Hook

20. DLL Injection and Foreign Process Access
     Accessing a Foreign Process: The Hooked Thread Graph
     Allocating Foreign Memory
     Example: Foreign Control Extraction
     Example: Fixing the VB6 Help System

IV. The Windows GDI (GDI32.DLL Programming ) 353

21. Bitmaps
     Bitmap Functions
     Using Bitmaps in Menus

22. Device Contexts I: Overview
     How Windows Handles Window Painting
     Device Contexts

23. Device Contexts II: Types of Device Contexts
     Information Device Contexts
     Memory Device Contexts
     Printer Device Contexts
     Display Device Contexts
     Coordinate Systems

24. Device Contexts III: Coordinate Systems
     GDI Coordinate Systems
     Virtual Space
     Device Space
     Page Space
     Virtual Space to Physical Space
     Setting Up Logical Coordinates in Physical Space
     Mapping Modes
     World Space

25. Fonts
     Font Families
     Font Technologies
     Character Sets
     Logical and Physical Fonts
     Enumerating Fonts

V. Appendixes 435

A. The Clipboard

B. The Windows Shell

C. The Registry and Private Profiles

To order this book through, please click here

Return to Roman Press Home Page
Return to computer books' main page