Debugging Windows Service Projects (C#)

Many developers find it annoying to debug the built-in Windows Service projects in Visual Studio. You can’t simply create a new project and click the “Run” button in Visual Studio and expect it to run with a debugger attached, like you can with most other project types. Normally you would install the service, start it, and attach a debugger to the process, but this is a hassle and doesn’t help much if you need to debug issues in the OnStart method.

To solve this problem and help with diagnostics, I typically add some boilerplate logic to my Windows Service projects. By passing in command line args to my service .exe, I can either have it launch in a light-weight debug console or make it wait to call the OnStart method until a debugger is attached.

Continue reading “Debugging Windows Service Projects (C#)”

QFG Character Editor setup file and QFG2 characters supported

I’ve had the code written for a while for a setup project and QFG2 support in my QFG Character Editor but I wanted to finish up support for changing the amount of money the character has before publishing it.  Since I haven’t had a chance to make those changes, I figured I should go ahead and just build what I have and share it online.

So here it is, QFG Character Editor v1.5 with support for importing/exporting characters from Quest for Glory 1 and Quest for Glory 2.

Continue reading “QFG Character Editor setup file and QFG2 characters supported”

QFG Character Editor (Web App)

I’ve finished the functionality for my Quest for Glory character editor web application.  I have the source code checked in to my github page, and the app is hosted over at:

This currently only supports QFG1 (aka Hero’s Quest) characters, but I still plan on getting QFG2 characters implemented someday – hopefully soon.  Please let me know if you find any issues.

Please note, I renamed the GitHub repository to BitCollectors.QfgCharacterEditor and I will be renaming the solution and projects soon.

Click here for the code

Click here to run the web app

Update (11.19.2013): there is now an official project page for this application.  To keep up to date on the latest releases, please check out

Resources for UI Automation and simulating user input

An important part of my job is to be able to interface our product with third party UI’s. Typically, I know virtually nothing about the UI before I begin the project, only that I will need to enter data into different fields.

Over the years, I’ve accumulated a list of my “goto tools” to help me assess each application. Behold:

Continue reading “Resources for UI Automation and simulating user input”

UIAutomationLib on GitHub

I created a new repository on GitHub called BitCollectors.UIAutomationLib which contains an XML driven .NET library for automating keystrokes and mouse clicks on just about any UI.  I’ve used this on several applications, including apps running through Terminal Services and Citrix.  It’s quite powerful, but I’m not claiming it’s the best solution for native Win32 apps (although it might be the easiest to use).  If you’re interfacing with a native Win32 app and you don’t mind writing a little code, you might want to look in to using Microsoft’s UI Automation framework.  Their framework lets you get a handle on a control and populate a text box or simulate a button press directly on the control.  My library simulates key strokes and mouse clicks, so it doesn’t really work at the control level.

Continue reading “UIAutomationLib on GitHub”

Changes in registry startup key between Windows XP and Windows 7

Several days ago I had an issue reported where one of my applications was causing a strange folder to open when the user logged in to their computer.  My application is supposed to auto-start when the user logs in to their computer, but it was never starting on these computers – only opening a strange folder.  After doing some testing, I discovered this was happening on Windows XP machines, but not Windows 7 (and presumably Windows Vista).  I did some research and discovered that Windows XP and Windows 7 interprets paths slightly differently from the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run registry key.

Continue reading “Changes in registry startup key between Windows XP and Windows 7”

ProjectConfigSync Project on GitHub

I’ve created a small project which parses .SLN and .CSPROJ files and allows you to compare and merge project settings across multiple configurations.

This has been a very handy tool for me.  We have a Solution here at work that has about 25 projects, and often times we’ll have an ANY CPU platform configured to build for X86 in one project, but configured to build for ANY CPU in another configuration.  This lets me quickly identify where bad misaligned configurations exist in my project files.

I haven’t yet published a setup project, but I have checked in the binaries under the bindebug folder.  Please feel free to post any bugs or feature requests.

The Git repository is located at: