Home | Products | Consulting | Writing | Contact


 

Windows Specialists

[Dividing Line Image]


DEDICATED TO WINDOWS

If you need Windows expertise, you've come to the right place!  Our experience developing Windows applications dates back to the late 1980's and Windows/286.  Through the years, we have resisted diversifying into other lucrative areas such as Linux, Mac, Java, drivers, firmware, etc. and have hitched our wagon firmly to Windows.  We've been around a long time, and our breadth of Windows experience is extensive.  Give your project a boost with our our hard-earned skills!

MFC

Since 1995, we're deployed many, many apps written with MFC.  Examples include: Logitech SetPoint, Linksys Control Utility, CDRCue.  David has received his Microsoft MVP award for his contributions to the MFC newsgroup.

Windows Internals

We understand the internal underpinnings of Windows to a high degree and regularly read industry gurus such as Mark Russinovich, Jeffrey Richter, and Paul di Lascia.  From them, we have learned to use Threading, File Mapping, Mutex, Critical Section, Event, WaitForInputIdle(), MsgWaitForMultipleObjects(), NTDLL, DDE, RAS, etc. to give your apps the edge.  David's very first Windows assignment was debugging a crash in a third-party library which had accidentally unlocked a real-mode segment that Windows subsequently discarded!  Early on, we learned that only by truly understanding Windows Internals can your app truly shine.  Coupled with our formal education in Computer Engineering, our Windows skills are based on a firm foundation.  

Windows Hooking

We are highly skilled in modifying behavior of foreign applications, for which source code is unavailable.  We use SetWindowsHookEx(), SetWinEventHook(), and user mode API Hooking to inject our DLLs into foreign processes, subclass foreign windows, get notified of keystrokes and mouse buttons, and modify the behavior of standard Windows API's to enhance these applications. 

For example, RegEditX adds a combobox to the standard RegEdit application.  Other clients use Hooking extensively to implement security features or application virtualization.  Hooking is a very powerful concept, and it is hard to do correctly.  Hooking is also used by malware, but we use the same techniques to enhance applications in ways that benefit the end user.

Internet Explorer

We have created UI's based on MFC's CDHtmlDialog/Javascript that are easily skinned by web developers, and are easily localizable through the IE DOM.  We've also created COM clients that subscribe to IWebBrowserEvents2 to monitor and modify the URL's to which Internet Explorer navigates.  We've written a form-filler application that learns and re-stuffs form fields.  We've written several IE toolbars and MIME filters.  With our knowledge of Windows Hooking, we've built our own IE BHO loader that activates IE plug-ins on-the-fly, without needing Admin rights to alter the registry.

Internet

We use the WinInet, IPHelper, and Winsock API's to create connected apps.  We've written small downloaders (100 KB) capable of downloading and installing any app or its prerequisites, as well as a WebUpdate facility that powers DCSoft applications.

We've used a variety of XML parsers.  FirstObject Markup is our favorite; it's small, fast, easy to use, and embeddable.

Explorer

We've written Tray Icons, Shell Extensions, ShellExecute hooks, WinLogon Notification Packages, and battled Fast User Switching gotchas.

.NET

We have been steadily building our C# and .NET capacity with several projects.  Read about our .NET experience.

Encryption

We've written our own Public Key Encryption library using Crypto++ for DCSoft application licensing, as well as various items like a reusable hashing component with the Windows CryptoAPI.

Lua Scripting

We have successfully embedded the Lua script engine into an Internet client that interacts with popular browsers in unique ways; the actual behavior is customized with Lua scripts.  The Lua engine also sees action in a custom debug logger that uses Lua scripts to filter debug messages prior to dumping them into the log.  Lua makes it easy to expose 'C' functions which are callable from Lua scripts, making it very easy to move functionality from compiled, high performance 'C' code to easily modifiable Lua scripts, accessible by less skilled programmers.

Setup

It's not an overstatement to say we're fanatical about 100% clean Setup and Uninstall.  Our favorite toolkits are Nullsoft and Wise.  Many clients demand InstallShield (creates very large Setups) and MSI (requires various Windows Installer packages, may require reboots), which we will use if requested.

Help Files

For deployed applications complete with Windows Help (.chm) files, some of which include context-sensitive help.

Vista Gadgets

We have implemented Vista Sidebar gadgets that incorporate ActiveX controls to supplement the standard Gadget API.  For increased deployability, the ActiveX control doesn't require Admin privilege to be registered.

Graphics

GDI/GDI+ are old friends.  We've implemented a translucent window framework supporting per-pixel translucency, used Memory DC's more times than we can count, struggled with Z-order issues (Windows does not truly support overlapping child controls), and ultimately developed two skin-based frameworks that draw all client and non-client areas with custom images.  Skins should complement the user's choice of Themes, so we also know the Theme API.


NEXT:
Read David's Resume
Read the DCSoft Creed
Discuss your project with DCSoft

 

Home | Products | Consulting | Writing | Contact

Last modified: March 29, 2010