After plodding along for about a year or so, last month turned out to be one of the most productive periods I've had in the past 2 years or so. It felt great to finally be in top productive form again after a long series of stop-start episodes...
Saturday, May 31, 2014
Wednesday, May 14, 2014
Notes on Windows Hacking - Identifying File Browsers and File Dialogs
If you stumbled across this post looking for information about how to identify File Browser windows (i.e. "explorer.exe" instances) and File Dialogs (i.e. Open / Save As dialogs), here is what you need to know:
- GetClassName(hwnd, className, nameBufLen) or className = win32gui.GetClassName(hwnd) in Python with PyWin32 installed gives you a string for identifying the type of window you're dealing with.
- CabinetWClass = The identifier for File Explorer windows
- "Rebar" is the navigation toolbar containing the back/forwards, breadcrumbs, and search box
- "Control Host" the shortcuts pane where favourites, libraries, and the folder hierarchy are shown
- "Shell Folder View" is the pane where all your files and folders are shown
- #32770 = The identifier for Folder Dialogs (such as Open/Save dialogs)
- GetClassName(hwnd, className, nameBufLen) or className = win32gui.GetClassName(hwnd) in Python with PyWin32 installed gives you a string for identifying the type of window you're dealing with.
- CabinetWClass = The identifier for File Explorer windows
- "Rebar" is the navigation toolbar containing the back/forwards, breadcrumbs, and search box
- "Control Host" the shortcuts pane where favourites, libraries, and the folder hierarchy are shown
- "Shell Folder View" is the pane where all your files and folders are shown
- #32770 = The identifier for Folder Dialogs (such as Open/Save dialogs)
Thursday, May 8, 2014
A few short pieces of music...
From time to time, I like to play around with a music score editor, bashing out some "music" if you can call it that ;) Here are some recent efforts that I'm reasonably happy about...
1) I got this idea while mulling over pentatonic scales again this morning for some random reason...
2) Inspired by some noises a dripping pipe in the laundry room made one afternoon. I had originally intended for this to be played using some kind of glass-bottle percussion instrument sound instead...
3) Short song I played around with after reading a blog post about pentatonic scales one day, and feeling inspired to have a play around.
1) I got this idea while mulling over pentatonic scales again this morning for some random reason...
2) Inspired by some noises a dripping pipe in the laundry room made one afternoon. I had originally intended for this to be played using some kind of glass-bottle percussion instrument sound instead...
3) Short song I played around with after reading a blog post about pentatonic scales one day, and feeling inspired to have a play around.
Saturday, May 3, 2014
The Case Against Automatic Updating Software
After various incidents over the past 2 years, I've reached a point where I now consider "automatic updates" for software as being evil1. As a software engineer, I can understand the attraction of this for critical and genuine security risks (the public safety benefits here I do not dispute). I do however take issue with using automatic updates as a "push mechanism for feature changes"2,3,4, especially when these are inexplicably bundled with important security fixes which cannot be obtained otherwise5.
This classic comic summarises the current situation quite succinctly
Thursday, May 1, 2014
Ramblings on the research process...
It's coming up to 1 year since I started my PhD studies, and over 2 years that I've been involved in CS research work. This post is just a random collection of ramblings about various aspects of the research process and/or academia in general.