Paraesthesia: .NET Development and Some Pictures of My Cat

Programming Projects Piling Up

So I’m coming up with a list of all of the various programming projects
I want to do and I’m finding that there’s really just no shortage. So
far, the top three are:

Add ‘Send To’ to Solvent: I want to add the Windows Explorer
‘Send To’ menu to my add-in,
Solvent.
I have the part that builds the UI for the context menus done, I
just need to get a decent class library to read items from the Send
To folder and send them in. I found something that almost does what
I need, but I need
something a little lower-level (not wrapped in Windows Forms code)
and that compiles warning-free (that DLL needs to be converted to
mixed
mode).

Remove Solution From VSS: It turns out there’s a very manual
process
if you want to remove solutions and projects from Visual SourceSafe.
You have to delete certain files, you have to remove certain
references to the source control from the solution and project
files… ugh. I need a program that, given a solution file, removes
it and all contained projects from VSS (not actually deleting them
from the VSS database, just removing references to VSS from the
local copy).

POP3 Proxy via Web Service: To get around annoying firewall
constraints, I need a two-part solution: first, a web service that
can take incoming POP commands and proxy them to a real POP server,
then return the results; second, a client that acts like a POP
server, receives requests from a POP-based mail program, and ferries
those requests to the web service. That would allow you to use a
POP-based mail program to get your email from, say, work, where they
don’t allow POP through the firewall but have no restrictions on web
access.

I’ve been working on that Solvent issue for a while now. I’ve learned
(and, in many cases, re-learned) way too much about C++ while doing it,
and I’m getting fed up with the way shell stuff is handled in Windows.
One would think that with .NET they’d have introduced some sort of
“Microsoft.Windows.Shell” namespace with some methods you can access
from managed code that does all the low-level crap I’m having to learn.

I’ll get it done, it’ll just take a little longer. I tried doing the
pInvoke route, but I got to a point where I
was trying to marshal pointers to pointers and things fell apart (I know
enough to be dangerous but not enough to fix it). Then I started doing a
mixed-mode DLL (hard for a relative newbie in C++) when I was informed
there’s this thing called “It Just Works” (or
“IJW”)
that should allow me to call the unmanaged shell functions from managed
code without any of that. So that’s my next attempt - see if I can
figure out how to get it done via IJW. If that doesn’t work, I think
I’ll learn how to write a COM object and just suffer the COM interop
overhead (which, thinking about the work the COM object will have to
provide, should be reasonably minimal).

Unless someone out there wants to write it for me? I have an interface
description… :)