Are you just cycling through hWNDs or PIDs looking for one with the correct title? If so, let me give you a couple tips.
The first time you find a match, retain the hWND for the matching window. Then (at your interval) just recheck that hWND to check two things...
(The PID exists)
(The name is unchanged)
This will prevent you from having to endlessly recycle through your list.
Load up your full list of names into memory at startup for the process, and keep them there. Memory is abundant, and more quickly seeked against. Also, use a sorted memory structure to store the data in memory, further increasing your seek speed. Finally, if you want to compress memory usage even further, hash the key down to a smaller structure, and use that for all your seeks/stores.
Also, if you're not, apply some pattern sanity checking against the key you get back from the API before you seek against your list. The more keys you can throw away without any further checking, the better.
Make an application that is a VERY generic wrapper, which will shell a command of their choosing. Then capture the PID off the shell command, and use that to get the hWND info if necessary, and display the key information for that spawned process to the user, so they can get an idea of how to set up the config file for your app.
I have a lot of other notes, but I'm at work, so I must dole them out sparingly.
...I might just have to write this myself to demonstrate what I'm talking about. So easy.
BTW, I really like your LED controller. Can you point me towards the technical reference you used to build your harness/controller off of?