To order this book through Amazon.com, 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.
Preface
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
Cautions
2. Preliminaries
Character Codes
Parameters and Arguments
Dynamic Link Libraries
Some C++ Syntax
Pointers
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
Flags
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
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
Terminology
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
Rectangles
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 Amazon.com, please click here