Task Manager

[TODO] Quote entire text.

Figured I should write this stuff down before I forget it all, and where better for TaskManager than r/techsupport! If there's any appetite for this, I'll expand on it! I don't blog, so here goes…

Some Task Manager lore: I'm the Microsoft (Redmond, '93) developer that wrote TaskMgr at home in my den in about 1994 and then the NT silverback devs let me check it into the main tree even though I was a greenhorn at the time. So that meant I got to bring it into work and polish it up and make it an official part of Windows, where it remains to this day. So I got to define my own day job, actually, which was nice! I don't know if it's still like that, but great culture and people.

This is all based on XP, as I left long ago, but it's still the same core app underneath. In no particular order:

- If Task Manager ever hangs or crashes, start another by pressing ctrl-shift-esc. Winlogon will look for an existing instance and try to revive it for up to 10 seconds. If the old Taskmgr doesn't start making sense by responding with a secret code within that time, another one will be launched. That way, you're never without a Taskmgr as long as there are some resources available.

- Task Manager will load in reduced mode if resources are short, like only loading the Processes page if that's what's needed to get going. It's one of the very few apps that won't just “fail and bail” when things go wrong.

- If Task Manager ever becomes internally corrupted, kill/close it. Restart it while holding down CTRL, ALT, and SHIFT, and Task Manager will reset ALL internal settings to factory fresh if it sees that key combo at startup. Same works for every app I've written, btw, I think!

- If all your titlebars disappear and you just have a graph, double-click dead client space to switch back to normal mode. This no-titlebar mode is a mode I added to follow the NT clock, where you could remove borders as well, but it confused more people than it ever helped I'm sure!

- I initially drew the meters as 7-segment LEDs but that wasn't localizable to all cultures (How do you do a right-to-left reading 7-segment LED for Saudi Arabia?) so they only lasted for one version or so.

- CTRL-SHIFT-ESC will launch Taskmgr without any help from the Shell, so if the Shell/Explorer is dead use this key combo to bring up TM and then reset/restart the shell. Even if your tray is missing and gone, this combo should start it.

- If the shell can't start something or is hung, try Task Manager. It has a mode where it will load without ANY references to the shell32.dll and allow you to start programs like CMD.EXE without the start menu.

- You can find the binary for any executing process in the process table by right clicking and pick “Show File Location”. You can also search it online, but I don't know if they have useful info for much.

- There should be nothing that TaskMgr can't kill - it will even escalate privilege and (if you have it) enable debug privilege to attach to and kill apps that way if needed. If TM can't kill it, you've got a kernel problem.

- A lot of people don't seem to know you can add many additional columns, remove others, drag them around to reorder, etc.

- The reason there's a Window class called “DavesFrameWndProc” is because to get flicker-free resizing I needed group boxes to not try to paint on one another, so subclass them, give them their own wndproc, and enabling WS_CLIPSIBLINGS during WM_CREATE. At least I think so!

- TM is one of the apps I'm most proud of because it is probably the first or at least most visually complicated app to ever be fully resizable in all dimensions without any flicker up till then. I was hardcore about memory and flicker in my day, so it was under 100K for the exe and never flashed or crashed, that was my thing! Having the GDI32 and User32 guys down the hall sure helped.

I also wrote/ported Space Cadet pinball, zip folders, worked on start menu, shell, calc, ole32, product activation, and some other stuff. I was in MS-DOS before that but I doubt anyone is still supporting MS-DOS!

Source