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!
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
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.
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
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.
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.
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.
We've written Tray Icons, Shell Extensions, ShellExecute
hooks, WinLogon Notification Packages, and battled Fast User Switching gotchas.
We have been steadily building our C# and .NET
capacity with several projects. Read
about our .NET experience.
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.
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
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
For deployed applications complete with Windows Help (.chm) files, some of which
include context-sensitive help.
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.
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.
Read David's Resume
the DCSoft Creed
Discuss your project with DCSoft
March 29, 2010