terminal/src/host/ft_host
Mike Griese 1fc0997969
Add a context menu entry to "Open Windows Terminal here" (#6100)
## Summary of the Pull Request

![image](https://user-images.githubusercontent.com/18356694/82586680-94447680-9b5d-11ea-9cf1-a85d2b32db10.png)

I went with the simple option - just open the Terminal with the default profile in the selected directory. I'd love to add another entry for "Open Terminal here with Profile...", but that's going to be follow-up work, once we sort out pulling the Terminal Settings into their own dll.

## References
* I'm going to need to file a bunch of follow-ups on this one.
  - We should add another entry to let the user select which profile
  - We should add the icon - I've got to do it in `dllname.dll,1` format, which is annoying.
  - These strings should be localized.
  - Should this only appear on <kbd>Shift</kbd>+right click? Probably! However, I don't know how to do that.
* [A Win7 Explorer Command Sample](https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/shell/appshellintegration/ExplorerCommandVerb) which hasn't aged well
* [cppwinrt tutorial](https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/author-coclasses) on using COM in cppwinrt
* [This is PowerToys' manifest](d2a60c7287/installer/MSIX/appxmanifest.xml (L53-L65)) and then [their implementation](d16ebba9e0/src/modules/powerrename/dll/PowerRenameExt.cpp) which were both helpful
* [This ](https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-extensions#instructions) was the sample I followed for how to actually set up the manifest, with the added magic that [`desktop5` lets you specify "Directory"](https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-desktop5-itemtype)

## PR Checklist
* [x] Closes #1060
* [x] I work here
* [ ] Tests added/passed
* [n/a] Requires documentation to be updated

## Detailed Description of the Pull Request / Additional comments

This adds a COM class that implements `IExplorerCommand`, which is what lets us populate the context menu entry. We expose that type through a new DLL that is simply responsible for the shell extension, so that explorer doesn't need to load the entire Terminal just to populate that entry.

The COM class is tied to the application through some new entries in the manifest. The Clsid values are IMPORTANT - they must match the UUID of the implementation type. However, the `Verb` in the manifest didn't seem important.
2020-05-28 15:42:13 +00:00
..
API_AliasTests.cpp inbox: reflect incoming changes up to uxp aa5182a2 (#1916) 2019-07-10 12:40:51 -07:00
API_AliasTestsHelpers.hpp Change NULL to nullptr since they are pointers (#4960) 2020-03-20 20:35:12 +00:00
API_BufferTests.cpp Change NULL to nullptr since they are pointers (#4960) 2020-03-20 20:35:12 +00:00
API_CursorTests.cpp Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
API_DimensionsTests.cpp Remove global namespaced min/max and replace it with STL min/max (#4173) 2020-01-10 13:27:05 +00:00
API_FileTests.cpp Change NULL to nullptr since they are pointers (#4960) 2020-03-20 20:35:12 +00:00
API_FillOutputTests.cpp Fix FillConsoleOutputCharacterA crash (#4309) 2020-02-10 14:09:08 -08:00
API_FontTests.cpp Replace ExpandEnvironmentStrings double calling with wil helper (#3198) 2019-10-15 14:51:33 -07:00
API_InputTests.cpp Change NULL to nullptr since they are pointers (#4960) 2020-03-20 20:35:12 +00:00
API_ModeTests.cpp inbox: reflect incoming changes up to uxp aa5182a2 (#1916) 2019-07-10 12:40:51 -07:00
API_OutputTests.cpp Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
API_PolicyTests.cpp Reflect inbox changes in 8c63dff 2019-09-03 13:32:31 -07:00
API_RgbColorTests.cpp inbox: reflect incoming changes up to uxp aa5182a2 (#1916) 2019-07-10 12:40:51 -07:00
API_TitleTests.cpp Remove global namespaced min/max and replace it with STL min/max (#4173) 2020-01-10 13:27:05 +00:00
CanaryTests.cpp Replace ExpandEnvironmentStrings double calling with wil helper (#3198) 2019-10-15 14:51:33 -07:00
chafa.txt Merged PR 3215853: Fix spacing/layout for block characters and many retroactively-recategorized emoji (and more!) 2019-05-02 15:29:10 -07:00
CJK_DbcsTests.cpp Fix a bunch of spelling errors across the project (#4295) 2020-02-10 20:40:01 +00:00
Common.cpp Change NULL to nullptr since they are pointers (#4960) 2020-03-20 20:35:12 +00:00
Common.hpp Fix FillConsoleOutputCharacterA crash (#4309) 2020-02-10 14:09:08 -08:00
DefaultResource.rc inbox PR 3285709: Add chafa resource into the DLL built by Windows Razzle (#912) 2019-05-20 17:06:21 -07:00
Host.FeatureTests.vcxproj Add a context menu entry to "Open Windows Terminal here" (#6100) 2020-05-28 15:42:13 +00:00
Host.FeatureTests.vcxproj.filters Revert locking changes (#3488) 2019-11-08 13:44:52 -08:00
Host.Tests.Feature.rc Merged PR 3215853: Fix spacing/layout for block characters and many retroactively-recategorized emoji (and more!) 2019-05-02 15:29:10 -07:00
InitTests.cpp Fix FillConsoleOutputCharacterA crash (#4309) 2020-02-10 14:09:08 -08:00
Message_KeyPressTests.cpp inbox: reflect incoming changes up to uxp aa5182a2 (#1916) 2019-07-10 12:40:51 -07:00
OneCoreDelay.cpp add clang-format conf to the project, format the c++ code (#1141) 2019-06-11 13:27:09 -07:00
OneCoreDelay.hpp add clang-format conf to the project, format the c++ code (#1141) 2019-06-11 13:27:09 -07:00
precomp.cpp Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
precomp.h Remove global namespaced min/max and replace it with STL min/max (#4173) 2020-01-10 13:27:05 +00:00
product.pbxproj Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
resource.h Merged PR 3215853: Fix spacing/layout for block characters and many retroactively-recategorized emoji (and more!) 2019-05-02 15:29:10 -07:00
runtest.bat Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
sources Revert locking changes (#3488) 2019-11-08 13:44:52 -08:00
sources.dep Merged PR 4235821: [Git2Git] Reflect some sources.dep changes from OS 2020-01-31 21:27:33 +00:00
testmd.definition inbox: reflect incoming changes up to uxp aa5182a2 (#1916) 2019-07-10 12:40:51 -07:00