PowerToys/doc/devdocs/modules/launcher/plugins/onenote.md
Union Palenshus 9b7a7f93b7
Adding OneNote plugin for PowerToys Run (#18558)
* Adding OneNote plugin for PowerToys Run

* Updating to 3.0.1 dependency, updating md, spellcheck, ready for PR

* Updating spelling and using localized string

* Adding OneNote link to readme

* Adding OneNote requirement to description

* removing 'open' from description

* Updating interop version, PR feedback
2022-06-15 19:15:58 +02:00

1.0 KiB

OneNote Plugin

The OneNote plugin searches your locally synced OneNote notebooks based on the user query.

Image of OneNote plugin

The code itself is very simple, basically just a call into OneNote interop via the https://github.com/scipbe/ScipBe-Common-Office library.

var pages = OneNoteProvider.FindPages(query.Search);

If the user actions on a result, it'll open it in the OneNote app, and restore and/or focus the app as well if necessary.

if (PInvoke.IsIconic(handle))
{
    PInvoke.ShowWindow(handle, SHOW_WINDOW_CMD.SW_RESTORE);
}

PInvoke.SetForegroundWindow(handle);

The plugin attempts to call the library in the constructor, and if it fails with a COMException then it'll note that OneNote isn't available and not attempt to query it again.

try
{
    _ = OneNoteProvider.PageItems.Any();
    _oneNoteInstalled = true;
}
catch (COMException)
{
    // OneNote isn't installed, plugin won't do anything.
    _oneNoteInstalled = false;
}