Welcome to West Wind Client Tools

West Wind Client Tools is a suite of FoxPro classes that provide rich Internet and general purpose functionality to FoxPro applications. The library also includes many useful utility classes for every day FoxPro development tasks.

Internet features include SMTP Email support, full featured HTTP Web access, FTP file transfers and management, low level TCP/IP access, JSON REST Service access and a host of Internet support functions.

General purpose tools include a light weight business object framework, an easy to use SQL client library, a .NET integration library, JSON and XML serializers, a Markdown parser, a powerful FoxPro based text scripting engine, and a number of very rich generic utility libraries for common every day FoxPro tasks.

Internet Features

  • Rich HTTP Web Access from FoxPro
    Need to retrieve Web content in your applications? Retrieve Web page content for screen scraping, talk to REST, XML or other Web Service APIs, submit and drive Web based forms and send JSON, XML or binary data from client to server and back. Send URLEncoded POST data to servers, upload files via HTTP, access secure TLS/SSL content, automatically handle authenticated, utf-8 and gzip encoded content. Best of all it's very easy to use with an easy to use API.

  • Json Serialization
    Reliable and efficient JSON serialization and deserialization for FoxPro object, collections, cursors and plain values to and from JSON. Easy to use through use of easy to navigate FoxPro objects as input and output. Use it for interaction with Web based REST services that require sending and receiving of JSON data, or for local persistence of configuration or state data.

  • Json Service Client - Simplified REST Service Calls
    Easy access the REST services with a single interface that handles making HTTP calls to, checking and handling for errors, and serializing and deserializing JSON content for you. You can use this class as a client directly, or subclass and create your own service classes that abstract REST calls into FoxPro APIs.

  • SMTP Email support
    SMTP Send Mail capability both in blocking synchronous and asynchronous modes. Support for file attachments, CCs and BCCs, special content types (HTML or XML messages for example) and more. All you need is an SMTP mail server to send message through and off you go. The latest version also supports SSL based connections.

  • FTP, SFTP and SFTP - Transfer files
    The newly updated wwFTPClient class provides for uploads and donwloads, directly listing and file and folder management using a simple FoxPro interface. We now support all common FTP protocols including FTP, FTPS (FTP over TLS) and SFTP (FTP over SSH).

  • wwDotNetBridge Class
    Integrate .NET components easily from Visual FoxPro and without explicitly required registration of .NET objects. wwDotnetBridge extends .NET interop to most components available in .NET including async objects, events and generic types that are not traditionally supported in FoxPro COM Interop. wwDotnetBridge removes most of the limitations of .NET COM Interop and allows you to tap into the full power and features of the .NET framework.

  • wwXML Class
    wwXML is a powerful data conversion class that lets you convert Fox cursors and object to and from XML. This class is more flexible than VFP 7's native commands and provides a number of additional features including direct support for .NET datasets and of course the ability to persist and restore objects.

  • Everyday Common Helpers
    UrlEncode, UrlDecode, HtmlEncode, HtmlDecode, generating UTC and Mime dates, Unicode conversions, Date formatting, CollectionToCursor/CursorToCollection, object copying, many file system helpers for copying, moving, deleting files, folders and trees, unique ID generation, string helpers and much much more...

Data Access and Business Objects

  • wwBusinessObject Class
    The wwBusinessObject class is an extremly easy to use, single level business object class. It implements both the business and data tier in a single object to provide ease of use and maximum performance. The base object provides core data access functionality (Load, Save, Query, New etc.) through its base class methods. Query based data access is also supported through native Fox syntax or using the class methods which can route to the appropriate backend. Fox or SQL Server are natively supported. SQL Server is supported with SQL Passthrough commands. Remote Web data is also supported against any FoxPro based Web backend (Web Connection, ASP+COM, FoxISAPI etc.) Web data can run against a SQL backend (with some limitations a Fox backend can be used as well).

  • wwSQL Class
    The wwSQL class provides an light weight object wrapper around the FoxPro SqlPassthrough object. Use easy methods to Execute, ExecuteNonQuery, ExecuteScalar It provides handle abstraction and a simplified interface to executing SQL commands and managing connections. The class provides error handling and error recovery for connections and can automatically re-connect on connection errors. There are high-level helper methods that can update and insert data using objects, automatic Unicode conversion support, support for binary data updates and much more.

General Purpose Classes

  • MarkdownParser Class
    This class lets you easily parse Markdown text into HTML in your application. Markdown is a simple and easy to type text format that can be turned into HTML and is an ideal solution for dealing with HTML text in FoxPro.

  • wwScripting Class
    The wwScripting class lets you create HTML Scripts using FoxPro using a dynamic ASP like (<% %>) dynamic scripting engine. The engine merges HTML templates either from string or disk and turns them into FoxPro code that can be executed to dynamic string output. It's a great tool for generating dynamic HTML content, mail merges, or as a code generation tool. This class is also used by Web Connection to drive the HTML Scripting engine. Scripts can be modified at runtime and changes detected in real time for maximum flexibility without loss of performance. You can even use partials and layout pages to reuse markup easily. Great tool to add dynamic scripting or HTML rendering to your applications.

  • PDF Generation Tools
    Integrate with various PDF generation tools including Microsoft Print to PDF, XFRX, Ghostscript to generate PDF files from FoxPro print output.

  • wwEncryption Class
    You can use this class to create encrypt or hash strings using common encryption protocols. You can creates one-way hashes using MD5, SHA1, SHA256, SHA384, SHA512, HMACMD5, HMACSH1, HMACSHA256, HMAC384, HMAC512 encryption protocols. You can also two-encrypt strings and byte arrays using TripleDES encryption. Perfect for hashing passwords in applications or for two-way encryption of reusable data.

  • wwCollection Classes
    FoxPro includes a collection class but unfortunately that class has horrible performance and is unable to trap to trap for missing elements without generating errors, plus is missing many common collection features. The wwCollection library provides wwCollection, wwNameValueCollection and wwStack classes. Classes are managed through internal arrays and provide 3x the performance of native FoxPro collections for adding and iterating, as well as many useful features not found on the built-in collection class.

  • wwDynamic Class
    Create dynamic 'Expando' style objects similar to the way you can simply add properties to a JavaScript object, or a .NET Expando object by simply adding non-existing properties to object simply by assigning to them. This can be useful for truly dynamic environments where you need to add custom properties at runtime, but it's also useful to build objects quickly in code especially for scenarios like JSON serialization.

Utility Classes

  • wwConfig
    A very useful configuration utility that can persist data from an object into a configuration file (XML, INI or the registry) and can be used in any application as a single access configuration manager object.

  • wwXMLState
    This class can be used to manage dynamic properties inside of a string or memo field. It's XML based and stores multiple values in a single string. Useful for extending database schemas without changing the structure and to store data more efficiently when data is sparse and would waste space as a field.

  • wwEval
    A 'safe execution' class that can be used to run user specified or unknown code. Sort of a poor man's Try/Catch implementation that allows you to run code that potentially could fail safely and receive error information. Execute single commands, expressions and even entire code blocks. Also includes MergeText() functionality to parse script like pages using ASP style (<%= %>) syntax and wwEvalTimer which allows you to generically fire delayed expressions and code blocks.

  • wwCache
    A key value cache class that allows you to easily cache string results in a cursor for later reuse. Very useful especially for Web applications where content or partial content can be easily cached for reuse without regenerating the content. Can store VFP session specific storage or persist across sessions.

  • wwUtils and wwAPI Libraries
    These extensive function libraries contains a variety of general purpose functions from string formatting, to HTML formatting, to debugging, COM configuration, viewing output in various text formats and even several GUI pop up routines. The API library abstracts many often used Windows API functions in simple wrappers.

Useful Tools

Client Tools also includes a number of tools that are useful in the course of development of applications:

  • Structure Exporter - Takes VFP table structures and exports it to text in various ways: CREATE TABLE statements, object declarations, field list, Help Builder field list and several more.

  • Text Wrapper - Useful tool to take a block of text and create string based code writes out this text via code.

Internet Tools

Access common Internet Protocols like HTTP, HTTPS, SMTP, FTP and SFTP with easy to use FoxPro based libraries.

Business Tools

Use our easy to use business object classes to organize your code, or the wwSql class


Convert between commonly used formats like JSON and XML with serializer and deserializers that make short work of exchanging common data formats.


Access .NET easily with wwDotnetBridge, handle app configuration with wwConfig, generate PDF documents from Fox reports with wwPdf, execute FoxPro scripts with wwScripting, parse Markdown with our MarkdownParser class.

FoxPro all the way

Use the tools you already know: Write FoxPro code for your Web application logic and use the Visual FoxPro IDE to edit, run and debug your code. Set breakpoints, break on errors, and use your existing FoxPro business logic code.

The Source is yours

The Client Tools ship with complete source code for all the FoxPro components. There's no blackbox code - you can step through all of the framework and modify it as needed. Fix it, change it, own it - no built-in obsolescence in this framework.

Don't take our Word for it: Try it out

There's so much more to the West Wind Internet & Client Tools and the best way to find out about it all is to try it out for yourself. The library is available in a fully functional shareware version that contains the full framework of features, but doesn't include source code. With it you can build and test your Web applications to check out Web Connection's features and functionality. Get started today!.

Free Download Purchase...

Get it

You can download the shareware version and try West Wind Internet & Client Tools for free. The shareware version is fully functional, but it ships as a pre-compiled app file to load libraries from and shows shareware notifications.

  • Visual FoxPro 9.0
  • .NET Framework 4.5 or later (recommended)

Got questions, suggestions or just want to discuss West Wind Internet & Client Tools development issues? Then come and hang out on our new and redesigned West Wind Message Board to ask questions, discuss development issues or simply brain storm ideas with the authors and other FoxPro developers.

Visit the Message Board