1. 20
  1. 4

    I liked the article, though it didn’t really deliver what I initially hoped for. I hoped for useful tips and tricks for working with COM on everyday usecases, which I (unexpectedly) have to do recently.

    Instead it delivered a nice wrap-up of a very esoteric usecase of COM and windows shell, in an enjoyable short-form article. What I really missed is pictures. For someone not really versed in the Windows shell lingo (as it turned out for me), or in the OS/2 features referenced, they would have been pretty useful. I can only hope that I correctly guessed what the article referred to, and what the author implemented.

    1. 7

      Sure, I can add those. One moment please.

    2. 3

      I’m usually not one to defend Microsoft products, but I’ve used COM quite a bit over the years, and I don’t get the negativity in this article.

      There’s a HUGE amount of Windows internals, other MS applications (like Office), and even third party applications, exposed through COM. There’s a big learning curve, and the docs can be a little overwhelming, but they’re actually quite good once you know where to look and what you’re trying to do.

      I won’t deny that there’s often not a lot of example code around the web, but it’s hard to take the “poor documentation” claim very seriously when the second paragraph links to a page in the documentation explaining how shell namespace extensions work, and off on the left is a TOC sidebar with an API reference, a developer’s guide, and sample code for using and extending the Shell with COM…

      1. 2

        …Except much of that documentation was brought over from Windows 2000 API docs and doesn’t cover newer APIs very well - some of the ones I was struggling with were additions from late XP and Vista era. That and examples tend to be very, very simplistic and don’t cover possible error and edge cases. Otherwise, I would tend to agree MS documentation is fairly good.

        edit: I didn’t really mean to be negative - I think there’s a lot of untapped potential in the COM world. I just think the MS documentation is while normally good, not quite as good w/ COM (explanations and such), and that’s a contributing factor as to why developers never took full advantage of it.

      2. 2

        Yay. Fun memories.

        Back when instant messaging was cool, I had the idea of extending the shell to do all forms of contact management. The idea was that you could create file types that represented people, and folders that represented various organizations, then just add the files and folders to your OS, whether in a folder, on the desktop, etc. The shell would know that this kind of file was a person and then provide you tools to interact with that person. You could right click and send a file, start a voice call, and so forth. The back-end was Oracle.

        Fun times. I wrote up a working POC and started looking for investors. This was before any of the Big Tech companies came to be. At the time I figured if you had a great idea, working code, and was able to deliver tech, that was all you needed.

        I had fun with the shell extension stuff and got everything working I needed to work, but the money/business side of startups was far too difficult for me at the time. Still, I have fond memories of pouring through all the sample MSDN code and banging MFC into what I needed to make it all work.

        1. 2

          Kinda reminds of BeOS’ way of managing contacts, which Vista actually ending up using, in one of those Longhorn relics that shipped.

          1. 1

            I lack the historical context but could you explain why you chose Oracle as a backend? Just curious what other options were around at the time and what made it stand out for you.

            1. 2

              At the time, I was grooving out big time on Object-Oriented everything. I modeled my solution in UML, I was using C++/MFC/Win32 as the programming platform, I generated the tables using codegen, and I wanted a database that had the biggest amount of OO goodness. IIRC, Oracle/PL-SQL had a feature where you could pretty much group definitions, data, and methods into “objects” in the database. It also had much better error-handling code. Plus the best database drivers were made only for the top few database platforms. Oracle was one of the top three easily.

              The problem, of course, was that they were more than willing to screw over anybody they could for licensing fees, but somehow or another I had a platform to develop with. I don’t remember if there was some kind of dev version or I was just hacking up something until I needed a license. Back then, of course, you had to run your own cloud/network services on-site, so I had seven or eight servers in the office: email, database, web, etc.

              The hardest part about the entire project was the C++/COM stuff. More difficult than that, actually, over the long term was server maintenance and updates. It wasn’t tough, just time-consuming and tedious. Configuring and installing a local network was a hoot; maintaining it was a nightmare for one person (who had other things to do)

          2. 2

            The amazing thing about Win32 API is that everything you see is built on standard classes, which any other application can see and interact with.

            You can that that Explorer window and add your own controls into it, move them around, re-parent them into another frame, and so on.

            Back in the day, when Opera 3.62 was all the rage, but did not have tabs, I wrote an add-on for it which added a row of butons, on top of the right side of the title bar, corresponding to open pages, complete with loading status indicators.

            Sadly, Wayback Machine does not archive zip files, but its support page remains: http://web.archive.org/web/*/http://digdug.cx/opman/

            1. 4

              I think Web developers who aren’t also versed in native desktop development don’t know they’re missing a trick here.

              I remember back in the early 2000s being at a Microsoft Tech Ed presentation and asking the speaker what would take the place of Microsoft’s (good) UX guideline docs in the new world of Web, XAML, and Silverlight.

              “We expect the community will drive new standards” was the response (as near as I can remember).

              Now there is almost no consistency of interface across apps, let alone platforms, and every dev team it seems is reinventing the wheel. And no-one seems to respect user settings any more, especially around font size, colours, and other accessibility concerns.

              Perhaps I’m being a bit old-man-shouting-at-cloud here, but it really does feel like UX has regressed massively in many ways since the early 2000s. Performance (especially latency!), consistency, accessibility, programmability, …

              1. 3

                The last time MS seemed committed to HIG consistency was around ~Windows 95. After that, they decided to no longer lead by example and Windows becme the slum of absolutely no UI consistency it is today.

                Keep in mind Microsoft invented Electron and Windows 98 put ads on the desktop. For the old men shouting at clouds, things were just as bad in the good ol’ days.

                1. 1

                  I agree, 95 is a masterpiece of craftsmanship. Everything has a visible accelerator key, every action has been tested for keyboard access, every button feature accounted for in the documentation. Pixel-perfect UI and icons. And all running on top of DOS! Running it in VirtualBox is a real treat, and IE3 is gorgeous. Same goes for Office 97, although I typicall run that under ME, it’s just more stable, ironically.

                  2000 is good too. I ran it on my by then aging Pentium II starting with with RC1, and it never gave me issues.

            2. 1

              “The beautiful of Windows is how extensible it is. The ugly part of Windows is how no one can extend it properly.”

              Great stuff. Look forward to reading it in more depth.