Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här guiden visar hur du skapar ett inbyggt C++-tillägg som anropar API:erna för Windows App SDK-meddelanden i din Electron-app. Detta är en bra utgångspunkt för att förstå interna tillägg innan du dyker in i mer komplexa scenarier.
Förutsättningar
Kontrollera att du har gjort så här innan du startar den här guiden:
- Installationen av utvecklingsmiljön har slutförts
Steg 1: Skapa ett C++-internt tillägg
Nu ska vi skapa ett internt tillägg med C++ och node-addon-api. Detta ger direkt åtkomst till Windows API:er med maximal prestanda.
npx winapp node create-addon
Note
Det här kommandot kan uppmana dig att installera Python eller nödvändiga Visual Studio verktyg om du inte redan har installerat dem.
Då skapas en nativeWindowsAddon/ mapp med:
-
nativeWindowsAddon.cc– Din C++-kod som anropar Windows-API:er -
binding.gyp– Skapa konfiguration för node-gyp
Kommandot installerar även nödvändiga dev-beroenden (nan, node-addon-api, node-gyp) och lägger till ett build-nativeWindowsAddon-skript till din package.json.
{
"scripts": {
"build-nativeWindowsAddon": "node-gyp clean configure build --directory=nativeWindowsAddon"
}
}
Den genererade mallen innehåller en exempelfunktion ShowNotification som använder api:erna för Windows SDK-meddelanden. Nu ska vi kontrollera att allt har konfigurerats korrekt genom att skapa tillägget:
# Build the C++ addon
npm run build-nativeWindowsAddon
Note
Du kan också skapa ett C#-tillägg med .npx winapp node create-addon --template cs C#-tillägg använder node-api-dotnet. Se de andra guiderna för att skapa tillägg eller den fullständiga kommandodokumentationen för fler alternativ.
Steg 2: Testa det genererade tillägget
Nu ska vi kontrollera att det genererade tillägget fungerar genom att anropa det från huvudprocessen. Öppna src/index.js:
- Lägg till tilläggsimporten med dina andra
requireinstruktioner överst:
const nativeWindowsAddon = require('../nativeWindowsAddon/build/Release/nativeWindowsAddon.node');
- Anropa meddelandefunktionen i slutet av
createWindow()funktionen:
const createWindow = () => {
// ... existing window creation code ...
// Test the Windows SDK notification
nativeWindowsAddon.showNotification(
'Hello from Electron!',
'This notification uses the Windows SDK.'
);
};
Innan aviserings-API:et fungerar måste du se till att appen körs med identitet. Run:
npx winapp node add-electron-debug-identity
Note
Det här kommandot är redan en del av skriptet postinstall som vi lade till i installationsguiden, så det körs automatiskt efter npm install. Du måste dock köra den manuellt när du ändrar Package.appxmanifest, uppdaterar apptillgångar eller installerar om beroenden.
Kör nu appen:
npm start
Du bör se ett meddelande visas! 🎉 Det genererade tillägget fungerar direkt.
⚠️ Känt problem: App kraschar eller tomt fönster (klicka för att expandera)
Det finns en känd Windows bugg med gles paketering av Elektronprogram som gör att appen kraschar vid start eller inte renderar webbinnehåll. Problemet har åtgärdats i Windows men har ännu inte spridits till alla enheter.
Se konfigurationen av utvecklingsmiljön för en lösning.
Steg 3: Uppgradera till Windows App SDK-meddelanden
Nu när vi har bekräftat att tillägget fungerar ska vi uppgradera det till att använda de moderna Windows App SDK meddelande-API:erna (Microsoft.Windows.AppNotifications), som ger en bättre utvecklarupplevelse och fler funktioner. Vi har redan konfigurerat Windows App SDK när vi körde init-kommandot från installationsstegen.
Öppna nativeWindowsAddon/nativeWindowsAddon.cc och ersätt hela innehållet med den här koden:
#include <napi.h>
#include <windows.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Microsoft.Windows.AppNotifications.h>
#include <winrt/Microsoft.Windows.AppNotifications.Builder.h>
using namespace winrt;
using namespace Microsoft::Windows::AppNotifications;
using namespace Microsoft::Windows::AppNotifications::Builder;
// Function to display a Windows App SDK notification
void ShowNotification(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
try {
// Get arguments from JavaScript (title and message)
if (info.Length() < 2 || !info[0].IsString() || !info[1].IsString()) {
Napi::TypeError::New(env, "Expected two string arguments: title and message").ThrowAsJavaScriptException();
return;
}
std::string title = info[0].As<Napi::String>();
std::string message = info[1].As<Napi::String>();
// Convert to wide strings
std::wstring wTitle(title.begin(), title.end());
std::wstring wMessage(message.begin(), message.end());
// Use AppNotificationBuilder for a cleaner API
AppNotificationBuilder builder;
builder.AddText(wTitle);
builder.AddText(wMessage);
AppNotification notification = builder.BuildNotification();
AppNotificationManager::Default().Show(notification);
} catch (const winrt::hresult_error& ex) {
Napi::Error::New(env, winrt::to_string(ex.message())).ThrowAsJavaScriptException();
} catch (const std::exception& ex) {
// Handle exceptions and throw back to JavaScript
Napi::Error::New(env, ex.what()).ThrowAsJavaScriptException();
} catch (...) {
Napi::Error::New(env, "Unknown error occurred").ThrowAsJavaScriptException();
}
}
// Initialize the module
Napi::Object Init(Napi::Env env, Napi::Object exports) {
exports.Set(Napi::String::New(env, "showNotification"), Napi::Function::New(env, ShowNotification));
return exports;
}
NODE_API_MODULE(addon, Init)
De viktigaste ändringarna här växlar från det äldre Windows.UI.Notifications namnområdet till de moderna API:erna Microsoft.Windows.AppNotifications och använder AppNotificationBuilder för att skapa meddelanden i stället för att skapa XML-strängar manuellt. Detta ger ett renare, mer underhållsbart API som är förenligt med Windows App SDK mönster.
Steg 4: Återskapa och testa
Återskapa nu tillägget med den uppdaterade koden:
npm run build-nativeWindowsAddon
Uppdatera meddelandet i src/index.js så att det återspeglar ändringen:
nativeWindowsAddon.showNotification(
'Hello from Electron!',
'This notification is powered by the Windows App SDK!'
);
Kör appen igen:
npm start
Du ser det uppdaterade meddelandet med hjälp av moderna Windows App SDK API:er!
Nästa steg
Grattis! Du har skapat ett internt C++-tillägg som anropar Windows App SDK API:er! 🎉
Nu är du redo att:
- Paketera din app för distribution – Skapa ett MSIX-paket som du kan distribuera
Eller utforska andra guider:
- Skapa en Phi Silica Addon – Lär dig hur du använder Windows AI-API:er i ett C#-tillägg
- Skapa ett WinML-tillägg – Lär dig hur du använder Windows strojové učenie i ett C#-tillägg
- Översikt över komma igång – Gå tillbaka till huvudguiden
Ytterligare resurser
- winapp CLI-dokumentation – Fullständig CLI-referens
- Exempel på Electron-app – Komplett arbetsexempel med C++-tillägg
- node-addon-api – C++ ↔ JavaScript-interop-bibliotek
- Windows App SDK Samples – Samling Windows App SDK exempel
Windows developer