Category: .NET

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.

Alejandra and I have been quite busy over here at BitCollectors over the last couple of months. We have re-done our website at www.bitcollectors.com, updated our blogs at blog.bitcollectors.com, made several software updates, and even released a couple of new projects. See below for further details on the updates.

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.

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:

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.

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.