personal, dotnet 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… :)

dotnet, 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.

blog 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.

General Ramblings comments edit

After a long day of pressure washing my house, Jenn and I took the evening and went to Sylvia’s for dinner and a show.

I had never been to a dinner theatre before, so it was an interesting experience. I’ve been to stage productions of all types - from grade school productions to Broadway (well, Broadway productions that come touring, at least) - so I wasn’t sure what to expect.

Dinner was served about 6:30p. Jenn and I both opted for the pork loin medallions in apple bourbon sauce, given a fixed menu and the other two options not looking to our liking. We started with a drink each, followed by a salad. Neither Jenn nor I are real salad-eaters, and neither of us had eaten much that day, so while the salads were being served, we gorged ourselves on the bread on the table.

When the salads arrived, we each tried to eat them (Jenn did a better job than I did) but we weren’t too successful. Jenn actually started feeling a little ill, almost as though the bread and alcohol in her stomach were combating the health factors of the salad, Adam Sandler style.

Salad: I will make you strong and healthy! Bread and Alcohol: Fuck that, Salad! We’re gonna beat you down!

Dinner arrived and it was okay. I wouldn’t say this is the best restaurant in the entire world or anything, but I was there more for the entertainment than the food.

Speaking of entertainment, I started looking around at the people attending. Now, I don’t mean to get all bourgeois on you, but this was definitely a proletariat crowd hanging out. I understand flip-flops are (for some unknown reason) “in” lately, but with jeans, a button up shirt, and a blazer? Tack-ay! Put some shoes on, for God’s sake. Where’s your mother?

We finished up dinner, and dessert was a poppy seed cake with raspberry frosting. Tasty! Jenn was feeling ill, but in a Homer Simpson moment decided she wasn’t ill enough to not eat dessert. “Oh, man, Trav, I’m not feeling so good… my stomach is rumbling and- OOOO! CAKE!”

After dessert was cleared, the show started (around 8:30p or so). The show we saw was called Monky Business, a musical about some monks trying to save their monastery from being torn down by having a radio telethon. It was really clever and well played. I liked it a lot.

All in all, a good experience. I’d recommend you check it out. I think Jenn and I will try to make it again for the next show (they do four different shows each year).