{"id":16849942,"url":"https://github.com/nattynarwhal/openwindows","last_synced_at":"2025-03-22T05:31:37.069Z","repository":{"id":51134561,"uuid":"274545167","full_name":"NattyNarwhal/OpenWindows","owner":"NattyNarwhal","description":"Shell namespace extension for showing open Explorer windows","archived":false,"fork":false,"pushed_at":"2020-07-01T18:26:23.000Z","size":96,"stargazers_count":56,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T08:48:28.840Z","etag":null,"topics":["com","shell-extension"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NattyNarwhal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-24T01:22:40.000Z","updated_at":"2025-01-19T11:29:30.000Z","dependencies_parsed_at":"2022-09-19T06:50:58.991Z","dependency_job_id":null,"html_url":"https://github.com/NattyNarwhal/OpenWindows","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NattyNarwhal%2FOpenWindows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NattyNarwhal%2FOpenWindows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NattyNarwhal%2FOpenWindows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NattyNarwhal%2FOpenWindows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NattyNarwhal","download_url":"https://codeload.github.com/NattyNarwhal/OpenWindows/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244912800,"owners_count":20530764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["com","shell-extension"],"created_at":"2024-10-13T13:19:09.390Z","updated_at":"2025-03-22T05:31:35.404Z","avatar_url":"https://github.com/NattyNarwhal.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenWindows\n\n*See [Staring into the COM Abyss](https://cmpct.info/~calvin/Articles/COMAbyss/)*\n\nThis is a shell namespace extension that displays a list of opened Windows\nExplorer windows you have open. It's inspired by the OS/2 stock file dialogs\nand how they did the same for Workplace Shell windows. If you're the type of\nperson who has a lot of Explorer windows open, and wish you could get to one\nfrom a save dialog, this is probably the extension for you.\n\nShell namespace extensions are one of the hairiest parts of the already pretty\nbaroque COM shell world due to the thin documentation on them and few debugger\naids availabile. Good examples are even thinner. Hopefully, this provides an\nexample of a shell extension that does something and has the least amount of\nuntangling layers.\n\n## Building\n\nThis is a Visual C++ 2010 project. It'll build for x86 and amd64. It's been\ntested on 2000, ME, XP, Vista, and 10.\n\nThe solution builds with VS 2010 and 2019. VC++6 is supported through its own\nproject file. Other versions of VS after 6 should be fine but will likely\nrequire building a new project file.\n\nIt should run on 98/NT4+ with the IE4+ (preferably 5+) shell used. Windows 95\nshould be possible but API support gets slightly sketchier there.\n\n## Installation\n\nCopy the DLL and TLB somehwere and run `regsvr32 OpenWindows.dll`.\n\nTo uninstall, run `regsvr32 /u OpenWindows.dll`.\n\nThis is going to worm its way into anything with a shell view, so it might\ncause stability issues. Caveat emptor.\n\n## Known issues\n\n* The code isn't as 64-bit clean as it should be, and there are some unchecked\n  string handling functions used (2004 was a more innocent time).\n* The namespace alleges it has a physical manifestation. This is appearantly\n  to appease software that has custom dialogs checking for filesystem presence\n  such as... Microsoft Office. Oops! This is the system temp folder, so a\n  window opened there won't appear. Sorry! (It could be mitigated if we pick\n  an install path...)\n* We could have an installer which would register it and create paths.\n* Modern property handling is very, very basic and intended just to appease\n  the tile view subtitles in Vista+. It should probably use fancier behaviour,\n  but for now it delegates as much as it can except the bare minimum to the\n  \"classic\" way of doing it.\n* The icon sucks, doesn't it?\n* There's probably a better way to do a lot of this, but again, it's a lot of\n  cargo culting. Eventually I did find some wrapper for this... after I was\n  well into the MVP. Mea culpa. (They prob wouldn't fit the needs very well,\n  since I suspect most people interested in NSEs want to materialize entities\n  that don't exist in the filesystem. Pascal's code did and provided a good\n  start.)\n* `Enumerate.cpp` started from a simple example, so it doesn't use ATL much.\n\n## Attributions\n\nSee `LICENSE.txt`.\n\nThis is based off of code by Pascal Hurni. I contacted him for clarifying the\nlicense of the derived code and he has approved of putting it under the MIT\nlicense.\n\nThis uses some Microsoft code as a polyfill for full functionality when built\nwith older SDKs.\n\nSource (a DOpus favourites NSE):\nhttps://www.codeproject.com/Articles/7973/An-almost-complete-Namespace-Extension-Sample\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnattynarwhal%2Fopenwindows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnattynarwhal%2Fopenwindows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnattynarwhal%2Fopenwindows/lists"}