net, windows comments edit

I worked a little while on my Send To project and got the framework for a mixed-mode DLL set up. I have some managed classes (my public interface) in there and it compiles; now I need to start putting in the unmanaged stuff.

I also installed Windows XP SP2 on my home computer last night. I happened to get a disc with it on there from MSDN (subscription through work) so I took it home, threw it in the drive, started the install, and walked away.

A couple hours later I came back, rebooted, logged in, and have thus far really only noticed a couple of minor changes. First, the Security Center thing pops up to tell me that Windows Firewall is enabled, Automatic Updates (to the OS) are enabled, and it can tell that I have Panda antivirus software installed but it can’t tell the version of the updates. Fair enough. Second, the Windows Firewall is a lot more configurable and I like it better than the old Internet Connection Firewall. (It did, however, fail to properly migrate my ICF settings so I had to reconfigure, which wasn’t a big deal, just annoying.) Finally, the pop-up blocker is in full effect in IE.

That’s it. That’s all I really noticed.

I think that’s a good thing. I saw all of these “get ready for SP2!” ads and all of these articles about the drastic changes to the security on the system and whatnot, but when the end user finishes installing this thing, they really won’t notice much.

Now, from a programmer’s perspective, yeah, I have to be more conscious now about the security on the system and whatever for operations my program performs. But from the end user side… no big deal. Just more secure. Perfect.

personal, net comments edit

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:

  1. 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).
  2. 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).
  3. 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… :)

net, windows comments edit

I mentioned earlier that I’m trying to create a library to interface with the Windows “Send To” menu.

I’m not getting too far with it.

Here’s what I want:

Two classes - SendToMenu and SendToMenuItem. They implement the following public members, as noted:

  • SendToMenu
    • GetSendToMenu: Takes in no parameters and returns an array of SendToMenuItem objects representing the items in the Send To menu.
  • SendToMenuItem
    • DisplayName: A property that returns the display name of the Send To item
    • Icon: A property that returns the icon for the Send To item
    • ExecuteSendTo: If you pass in a file name, it mimics you “sending” the file to the item via the Explorer menu.

It shouldn’t be that hard. Right?

It seems I have four choices of how to get this done, none of which are easy.

  • It Just Works, or “IJW”: Supposedly you can intermingle managed and unmanaged C++ and it’s supposed to just work. I’ve messed around with this and it doesn’t just work.
  • Mixed-Mode: You can create a C++ DLL that implements both managed and unmanaged code but you have to do some special finagling to get it to work. I haven’t tried this yet, but I don’t understand it all, either.
  • Platform Invocation, or pInvoke: This allows you to directly import and use unmanaged methods from DLLs right in your managed code. Talking to the Send To menu touches a lot of these things - more than you’d imagine - and getting them all to work nicely together in a managed world is nigh unto impossible. I have hundreds of lines of pInvoke code trying to get this to work. It’s just not happening.
  • Component Object Model, or COM: This is the standard, unmanaged way of getting components out there. .NET knows how to deal with COM, so if I could get a COM object that does what I want, it could pretty easily hook up. Thing is, I don’t know how to write COM, and would rather not take that time for something I’ll only use this once.

So there it sits. I have to decide whether I need to do a mixed-mode DLL or COM. Or I need to find someone who knows how to do one of the other two methods and get them to help out. Or maybe I just farm it out. I’m tired of fighting it, though.

General Ramblings comments edit

I got my teeth cleaned this morning and, as seems to be the general case, I gotta go back in. Apparently I have some sort of cavity starting under where this retainer thing in my mouth is. I looked; I don’t see anything. I start to wonder if they’re just trying to eke money out of me $60 out-of-pocket-expense at a time, but I know that if I don’t get it dealt with it will actually turn into something legitimate that I really don’t want to have anything to do with.

So I have another appointment in a couple weeks to get that taken care of. Preventative measures or whatever.

The HR director just walked by and, without even seeing me, said, “Travis must have moved down here.” Heh. I think people know my decor now.

My new veal pen at work is much farther from the break area (water, pop, microwaves, etc.) than my previous dwelling. Now not only am I never getting up, but I’m thirsty all the time, too. Maybe I should be less lazy about the whole thing and just succumb to thirst and get a drink. Maybe I should pack a bag so I can make the return trip tomorrow, too. Damn.

I bought the Best of Triumph the Insult Comic Dog DVD today, so that should be coming soon. Another one of those fun party discs to put in.

Jenn’s birthday is coming up and I don’t know what to get her. If she doesn’t cough up for her season hockey ticket, she’s getting that (but she doesn’t want that, so let’s hope she musters up some cash). In fact, she doesn’t know what she wants, she only tells me one-off items that she doesn’t want. Since I am not psychic, I will wait for a list. Should a list not arrive, hockey ticket it shall be.

General Ramblings comments edit

I think, after having moved hosts twice and blog packages once, I’ve finally finished fixing all the broken links and images floating around here. As such, if you haven’t had a chance to really catch up on some of the better entries, I can’t more highly recommend that you start at the beginning and check it out. I’ve had a good time reviewing a few of these, but maybe that’s more from the sense of a comedian laughing at his own jokes (which I would do, were I a comedian).

I also noticed while going through the past posts that I used to do a lot more in the way of getting pictures up here, so I think I’l make a concerted effort at thinking about doing that again. Now that I don’t have a commute, I don’t really see Traffic Assholes as much. That said, it might be good to take pictures of other random stuff I’m talking about, just to help you guys out.