Synopses & Reviews
This book will help you solve more than 300 of the most common and not-so-common tasks that working Visual Basic 2005 programmers face every day. If you're a seasoned .NET developer, beginning Visual Basic programmer, or a developer seeking a simple and clear migration path from VB6 to Visual Basic 2005, the Visual Basic 2005 Cookbook delivers a practical collection of problem-solving recipes for a broad range of Visual Basic programming tasks.
The concise solutions and examples in the Visual Basic 2005 Cookbook range from simple tasks to the more complex, organized by the types of problems you need to solve. Nearly every recipe contains a complete, documented code sample showing you how to solve the specific problem, as well as a discussion of how the underlying technology works and that outlines alternatives, limitations, and other considerations. As with all O'Reilly Cookbooks, each recipe helps you quickly understand a problem, learn how to solve it, and anticipate potential tradeoffs or ramifications.
Useful features of the book include:
- Over 300 recipes written in the familiar O'Reilly Problem-Solution-Discussion format
- Hundreds of code snippets, examples, and complete solutions available for download
- VB6 updates to alert VB6 programmers to code-breaking changes in Visual Basic 2005
- Recipes that target Visual Basic 2005 features not included in previous releases
- Code examples covering everyday data manipulation techniques and language fundamentals
- Advanced projects focusing on multimedia and mathematical transformations using linear algebraic methods
- Specialized topics covering files and file systems, printing, and databases
In addition, you'll find chapters on cryptography and compression, graphics, and special programming techniques. Whether you're a beginner or an expert, the Visual Basic 2005 Cookbook is sure to save you time, serving up the code you need, when you need it.
For seasoned .NET developers, as well as those seeking a simple and clear migration path from Visual Basic 6.0 to Visual Basic 2005, this Cookbook delivers the definitive collection of problem-solving recipes for a broad range of Visual Basic programming tasks--over 150 of the most common and not-so-common tasks that working VB 2005 programmers face every day.
The concise solutions and examples in the Visual Basic 2005 Cookbook range from simple tasks to the more complex, organized with respect to the types of problems you need to solve. Nearly every recipe contains a complete, documented code sample showing you how to solve the specific problem, as well as a discussion of how the underlying technology works and outlines alternatives, limitations, and other considerations where appropriate. As with all O'Reilly Cookbooks, each recipe is organized to help you quickly understand a problem learn how to solve it, and anticipate potential tradeoffs or ramifications. No matter what you're programming level may be, this book offers an eye-opening Aha! experience for anyone using Visual Basic 2005.
For seasoned .NET developers, as well as those seeking a simple and clear migration path from Visual Basic 6.0 to Visual Basic 2005, this cookbook delivers the definitive collection of problem-solving recipes for a broad range of Visual Basic programming tasks.
About the Author
Tim Patrick is a software architect and developer of custom software solutions targeting Microsoft Windows and Web-based users. Tim has over 20 years of experience in software development and software architecture, and is a Microsoft Certified Solution Developer (MCSD). He wrote The Visual Basic DEFANGED_STYLEGuide and its successor, The Visual Basic .NET Style Guide, and recently co-authored O'Reilly's Visual Basic 2005 in a Nutshell.
John Clark Craig's programming experiences and interests go back quite a ways. In 1974 he was programming a DEC PDP8E attached to a teletype and running a paper tape loaded version of FOCAL, a simple programming language similar to BASIC. Over the years, John programmed in just about every version of the BASIC language available, and authored several books on the subject along the way. During John's career as a full-time Software Engineer, he has worked on several fascinating energy and environmental projects. Currently, he's enjoying his software guru position working with a small team of bright R&D engineers as they create the next generation of high-tech self-erecting towers for the world's largest wind turbines.
Table of Contents
Dedication; Preface; Who This Book Is For; How This Book Is Organized; What You Need to Use This Book; Conventions Used in This Book; Using Code Examples; Comments and Questions; Safari® Enabled; Acknowledgments; From Tim Patrick; From John Clark Craig; Chapter 1: Visual Basic Programming; 1.1 Introduction; 1.1 Creating a Windows Forms Application; 1.2 Creating a Console Application; 1.3 Creating an ASP.NET Web Forms Application; Chapter 2: The Development Environment; 2.1 Introduction; 2.1 Discovering and Using a Code Snippet; 2.2 Creating a New Snippet; 2.3 Sharing Snippets; 2.4 Adding Snippet Files to Visual Studio; 2.5 Getting an Application's Version Number; 2.6 Letting Visual Studio Automatically Update an Application's Version Number; 2.7 Setting the Startup Form for an Application; 2.8 Setting the Startup to a Sub Main Procedure; 2.9 Getting an Application's Command Line; 2.10 Testing an Application's Command Line; 2.11 Obfuscating an Application; 2.12 Determining if an Application Is Running in the Visual Studio Environment; 2.13 Accessing Environment Variables; 2.14 Accessing the Registry; 2.15 Getting System Information; 2.16 Getting the User's Name; Chapter 3: Application Organization; 3.1 Introduction; 3.1 Creating a Code Module; 3.2 Creating a Class; 3.3 Creating a Structure; 3.4 Creating Other Item Types; 3.5 Creating Object Instances; 3.6 Initializing a Class Instance with Data; 3.7 Releasing an Instance's Resources; 3.8 Using Namespaces; 3.9 Splitting a Class Across Multiple Files; 3.10 Creating a Form Based on Another Form; 3.11 Passing and Returning Structures and Other Objects; 3.12 Creating and Using an Enumeration; 3.13 Converting Between Numeric and String Enumeration Values; 3.14 Creating a Method That Accepts Different Sets of Arguments; 3.15 Using Standard Operators for Nonstandard Purposes; 3.16 Enforcing Strong Data Typing in an Otherwise Weakly Typed Collection; Chapter 4: Forms, Controls, and Other Useful Objects; 4.1 Introduction; 4.1 Creating and Adding Controls at Runtime; 4.2 Iterating Through All Controls on a Form; 4.3 Sharing Event-Handler Logic Among Many Controls; 4.4 Working with Timers; 4.5 Determining If a Control Can Take the Focus; 4.6 Programmatically Clicking a Button; 4.7 Drawing a Control; 4.8 Making a Form the Top-Most Form; 4.9 Indicating the Accept and Cancel Buttons on a Form; 4.10 Remembering a Form's Position Between Uses; 4.11 Attaching a Control to the Edge of a Form; 4.12 Moving or Resizing Controls as a Form Resizes; 4.13 Limiting the Sizing of a Form; 4.14 Centering a Form; 4.15 Creating and Moving a Borderless Form; 4.16 Creating a Fading Form; 4.17 Creating a Nonrectangular Form; 4.18 Changing Menus at Runtime; 4.19 Creating Shortcut Menus; Chapter 5: Strings; 5.1 Introduction; 5.1 Using a StringBuilder; 5.2 Creating a String of N Identical Characters; 5.3 Creating a String by Repeating a String N Times; 5.4 Obfuscating a String; 5.5 Converting Binary Data to a Hexadecimal String; 5.6 Extracting Substrings from Larger Strings; 5.7 Converting a String's Case; 5.8 Comparing Strings with Case Sensitivity; 5.9 Comparing Strings Without Case Sensitivity; 5.10 Converting Strings to and from Character Arrays; 5.11 Converting Strings to and from Byte Arrays; 5.12 Tallying Characters; 5.13 Counting Words; 5.14 Removing Extra Whitespace; 5.15 Using the Correct End-of-Line Characters; 5.16 Replacing Substrings; 5.17 Inserting a Character or String; 5.18 Inserting a Line; 5.19 Double-Spacing a String; 5.20 Formatting Numbers into Strings; 5.21 Trimming Sets of Characters from a String; 5.22 Identifying and Validating Types of Data in a String; 5.23 Converting Strings Between Encoding Systems; 5.24 Determining a Character's Type; 5.25 Parsing Strings; 5.26 Concatenating Strings; 5.27 Speeding Up String Manipulation; 5.28 Counting Occurrences of a Substring; 5.29 Padding a String for Exact Length and Alignment; 5.30 Converting Tabs to Spaces; 5.31 Reversing a String; 5.32 Shuffling a String; 5.33 Using a Simple String Encryption; 5.34 Converting a String to Morse Code; 5.35 Adding Strings to an Application's Resources; 5.36 Converting Any Data to a String; 5.37 Using Regular Expressions to Extract All Numbers; 5.38 Getting a Count of Regular Expression Matches; 5.39 Getting the Nth Regular Expression Match; 5.40 Compiling Regular Expressions for Speed; 5.41 Using Regular Expressions to Validate Data; 5.42 Using Regular Expressions to Count Characters, Words, or Lines; 5.43 Converting a String to and from Base64; 5.44 Splitting a String; 5.45 Creating a String of Space Characters; Chapter 6: Numbers and Math; 6.1 Introduction; 6.1 Using Compact Operator Notation; 6.2 Choosing Integers of the Right Size and Type for the Job; 6.3 Using Unsigned Integers; 6.4 Swapping Two Integers Without Using a Third; 6.5 Using Single- and Double-Precision Variables; 6.6 Using Decimal Variables for Maximum Precision; 6.7 Converting Between Number Types; 6.8 Rounding Numbers Accurately; 6.9 Declaring Loop Counters Within Loops; 6.10 Converting Between Radians and Degrees; 6.11 Limiting Angles to a Range; 6.12 Creating Double-Precision Point Variables; 6.13 Converting Between Rectangular and Polar Coordinates; 6.14 Creating Three-Dimensional Variables; 6.15 Converting Between Rectangular, Spherical, and Cylindrical Coordinates; 6.16 Working with Complex Numbers; 6.17 Solving Right Triangles; 6.18 Solving Any Triangle; 6.19 Determining if a String Contains a Valid Number; 6.20 Converting Numbers to Integers; 6.21 Calculating π to Thousands of Digits; 6.22 Getting a Number's Prime Factors; 6.23 Using Recursion to Calculate Factorials; 6.24 Manipulating Bits with Bitwise Operators; 6.25 Storing and Retrieving Bits in a BitArray; 6.26 Enhancing the Random Number Generator; 6.27 Generating Random Integers in a Range; 6.28 Generating Random Real Numbers in a Range; 6.29 Generating Normal-Distribution Random Numbers; 6.30 Generating Exponential-Distribution Random Numbers; 6.31 Creating a Matrix; 6.32 Inverting a Matrix; 6.33 Calculating the Determinant of a Matrix; 6.34 Solving Simultaneous Equations; 6.35 Listing of the MatrixHelper Class; Chapter 7: Dates and Times; 7.1 Introduction; 7.1 Getting the System Date and Time; 7.2 Accessing the System's Time Zone; 7.3 Using System Ticks; 7.4 Timing Application Activities; 7.5 Calculating Elapsed Time Using Ticks; 7.6 Calculating Elapsed Time with the Stopwatch; 7.7 Extracting Year, Month, and Day Numbers from a Date Value; 7.8 Extracting Hour, Minute, and Second Numbers from a Date Value; 7.9 Creating a Date or Time Value from Its Parts; 7.10 Formatting Dates and Times; 7.11 Parsing and Validating Dates and Times; 7.12 Adding to Dates and Times; 7.13 Subtracting from Dates and Times; 7.14 Determining the Number of Days Between Two Dates; 7.15 Determining the Day of the Week for a Date; 7.16 Determining the Day of the Year for a Date; 7.17 Determining the Number of Days in a Month; 7.18 Using Controls to Enter or Select a Date; 7.19 Calculating the Phase of the Moon; 7.20 Creating a Calendar; 7.21 Checking for Leap Years; 7.22 Dates and Times in ISO 8601 Formats; Chapter 8: Arrays and Collections; 8.1 Introduction; 8.1 Filling an Array While Declaring It; 8.2 Sorting Array Elements; 8.3 Reversing an Array; 8.4 Inserting into an Array; 8.5 Shuffling an Array; 8.6 Swapping Two Array Values; 8.7 Resizing Arrays Without Losing Existing Values; 8.8 Quickly Copying Part of an Array into Another; 8.9 Writing a Comma-Separated-Values File from a String Array; 8.10 Reading a Comma-Separated-Values File into a String Array; 8.11 Using a Multivalue Array Instead of a Two-Dimensional Array; 8.12 Converting Between Delimited Strings and Arrays; 8.13 Formatting an Array as a Single String; 8.14 Iterating Through Array Elements; 8.15 Passing Arrays to Methods; 8.16 Returning Arrays from Functions; 8.17 Creating a Collection; 8.18 Inserting an Item into a Collection; 8.19 Deleting a Collection Item; 8.20 Iterating Through a Collection; Chapter 9: Graphics; 9.1 Introduction; 9.1 Creating Graphics Objects; 9.2 Drawing on Controls for Special Effects; 9.3 Letting the User Select a Color; 9.4 Working with Coordinate Systems (Pixels, Inches, Centimeters); 9.5 Creating a Bitmap; 9.6 Setting a Background Color; 9.7 Drawing Lines, Ellipses, and Rectangles; 9.8 Drawing Lines One Pixel Wide Regardless of Scaling; 9.9 Forcing a Form or Control to Redraw; 9.10 Using Transparency; 9.11 Scaling with Transforms; 9.12 Using an Outline Path; 9.13 Using Gradients for Smooth Color Changes; 9.14 Drawing Bezier Splines; 9.15 Drawing Cardinal Splines; 9.16 Limiting Display Updates to Specific Regions; 9.17 Drawing Text; 9.18 Rotating Text to Any Angle; 9.19 Mirroring Text on the Canvas; 9.20 Getting the Height and Width of a Graphic String; 9.21 Drawing Text with Outlines and Drop Shadows; 9.22 Calculating a Nice Axis; 9.23 Drawing a Simple Chart; 9.24 Creating Odd-Shaped Forms and Controls; 9.25 Using the RGB, HSB (HSV), and HSL Color Schemes; 9.26 Creating a Rubber-Band Rectangular Selection; 9.27 Animating with Transparency; 9.28 Substitutions for Obsolete Visual Basic 6.0 Features; Chapter 10: Multimedia; 10.1 Introduction; 10.1 Playing an Audio File; 10.2 Displaying Image Files; 10.3 Playing a Video File; 10.4 Making Your Computer Beep; 10.5 Creating an Animation Using Multiple Images; 10.6 Creating an Animation by Generating Multiple Bitmaps; 10.7 Creating an Animation by Drawing at Runtime; 10.8 Creating Animated Sprites; 10.9 Resizing and Compressing JPEG Files; 10.10 Getting JPEG Extended Information; 10.11 Creating Thumbnails; 10.12 Displaying Images While Controlling Stretching and Sizing; 10.13 Scrolling Images; 10.14 Merging Two or More Images; 10.15 Using Resource Images; 10.16 Capturing an Image of the Screen; 10.17 Getting Display Dimensions; 10.18 Speeding Up Image Processing; 10.19 Converting an Image to Grayscale; 10.20 Performing Edge Detection on an Image; 10.21 Full Listing of the LockImage Class; Chapter 11: Printing; 11.1 Introduction; 11.1 Enumerating Printers; 11.2 Sending "Raw" Data to a Printer; 11.3 Get Details About the Default Printer; 11.4 Creating a Print Preview; 11.5 Prompting for Printed Page Settings; 11.6 Drawing Text and Graphics to a Printer; 11.7 Determining the Print Destination; 11.8 Creating Graph Paper; Chapter 12: Files and File Systems; 12.1 Introduction; 12.1 Enumerating Drives; 12.2 Determining if a Directory Exists; 12.3 Creating a New Directory; 12.4 Copying Directories; 12.5 Moving Directories; 12.6 Renaming Directories; 12.7 Parsing File and Directory Paths; 12.8 Searching Iteratively Through Directories and Subdirectories; 12.9 Finding Directories and Files Using Wildcards; 12.10 Determining If a File Exists; 12.11 Getting and Setting File Attributes; 12.12 Accessing Special User and Windows Directories; 12.13 Determining the Space on a Drive; 12.14 Browsing for a Directory; 12.15 Getting File Information; 12.16 Using File-Access Methods; 12.17 Reading and Writing Files as Strings; 12.18 Reading and Writing Binary Files; 12.19 Copying or Moving a File; 12.20 Sending a File to the Recycle Bin; 12.21 Creating a Temporary File; 12.22 Calculating a Checksum for a File; 12.23 Comparing Two Files for Equality; 12.24 Locking a File During Access; 12.25 Reading from a File at a Specific Position; 12.26 Reading and Writing Objects in a File; 12.27 Creating a Comma-Separated-Values File; Chapter 13: Databases; 13.1 Introduction; 13.1 Connecting to a Data Provider; 13.2 Issuing SQL Commands; 13.3 Retrieving Results from a Database Query; 13.4 Using SQL Parameters; 13.5 Using Stored Procedures; 13.6 Using Transactions; 13.7 Storing the Results of a Query in Memory; 13.8 Creating In-Memory Data Tables Manually; 13.9 Writing In-Memory Data Tables to an XML File; 13.10 Reading an XML File into In-Memory Data Tables; Chapter 14: Special Programming Techniques; 14.1 Introduction; 14.1 Preventing Multiple Instances of a Running Application; 14.2 Creating a Simple User Control; 14.3 Describing User Control Properties; 14.4 Starting Other Applications by EXE, Document, or URL; 14.5 Waiting for Applications to Finish; 14.6 List All Running Processes; 14.7 Terminating a Running Process; 14.8 Pausing Execution of a Program; 14.9 Control Applications by Simulating Keystrokes; 14.10 Watching for File and Directory Changes; 14.11 Creating an Icon in the System Tray; 14.12 Accessing the Clipboard; 14.13 Adding Tooltips to Controls; 14.14 Dragging and Dropping Files to a ListBox; 14.15 Dragging and Dropping Between ListBox Controls; 14.16 Disposing of Objects Appropriately; 14.17 Fine-Tuning Garbage Collection; 14.18 Moving the (Mouse) Cursor; 14.19 Intercepting All Key Presses on a Form; 14.20 Accessing the Registry; 14.21 Running Procedures in Threads; 14.22 Reading XML into a TreeView; 14.23 Creating an XML Document; 14.24 Validating an XML Document; 14.25 Using Generic Collections; 14.26 Creating a Screensaver; 14.27 Localizing the Controls on a Form; 14.28 Adding Pop-up Help to Controls; 14.29 Maintaining User-Specific Settings Between Uses of an Application; 14.30 Verifying a Credit Card Number; 14.31 Capturing a Console Application's Output; 14.32 Reading an Assembly's Details; 14.33 Performing Serial I/O; 14.34 Rebooting the System; Chapter 15: Exceptions; 15.1 Introduction; 15.1 Catching an Exception; 15.2 Throwing an Exception; 15.3 Catching Unhandled Exceptions; 15.4 Displaying Exception Information; 15.5 Creating New Exception Types; 15.6 Ignoring Exceptions in a Block of Code; Chapter 16: Cryptography and Compression; 16.1 Introduction; 16.1 Generating a Hash; 16.2 Encrypting and Decrypting a String; 16.3 Encrypting and Decrypting a File; 16.4 Prompting for a Username and Password; 16.5 Handling Passwords Securely; 16.6 Compressing and Decompressing a String; 16.7 Compressing and Decompressing a File; 16.8 Generating Cryptographically Secure Random Numbers; 16.9 Complete Listing of the Crypto.vb Module; 16.10 Complete Listing of the Compress.vb Module; Chapter 17: Web Development; 17.1 Introduction; 17.1 Displaying Web Pages on a Form; 17.2 Accessing Content Within an HTML Document; 17.3 Getting All Links from a Web Page; 17.4 Get the Local Computer's IP Address; 17.5 Resolving a Host Name or IP Address for Another Computer; 17.6 Pinging an IP Address; 17.7 Using FTP to Download Files; 17.8 Calling a Web Service; 17.9 Sending Email Using SMTP; 17.10 Getting POP3 Emails; 17.11 Sending a Message to Another Computer; 17.12 Adding Hyperlinks to a (Desktop) Form; Colophon;