Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az útmutató bemutatja, hogyan hozhat létre natív C++ bővítményt, amely meghívja a Windows App SDK értesítési API-kat az Electron-alkalmazásban. Ez nagyszerű kiindulópont a natív bővítmények megértéséhez, mielőtt összetettebb forgatókönyvekbe kezdene.
Előfeltételek
Az útmutató megkezdése előtt győződjön meg arról, hogy a következőt tette:
- Befejeződött a fejlesztési környezet beállítása
1. lépés: C++ natív bővítmény létrehozása
Hozzunk létre egy natív bővítményt a C++ és a node-addon-api használatával. Ez közvetlen hozzáférést biztosít Windows API-khoz maximális teljesítménnyel.
npx winapp node create-addon
Megjegyzés:
Ez a parancs Python vagy szükséges Visual Studio eszközök telepítésére kérheti, ha még nincs telepítve.
Ezzel létrehoz egy nativeWindowsAddon/ mappát a következőkkel:
-
nativeWindowsAddon.cc- A Windows API-kat meghívó C++ kód -
binding.gyp– Buildkonfiguráció a node-gyp számára
A parancs emellett telepíti a szükséges fejlesztői függőségeket (nan, node-addon-api, ) node-gypés hozzáad egy build-nativeWindowsAddon szkriptet a következőhöz package.json:
{
"scripts": {
"build-nativeWindowsAddon": "node-gyp clean configure build --directory=nativeWindowsAddon"
}
}
A létrehozott sablon tartalmaz egy minta ShowNotification függvényt, amely a Windows SDK értesítési API-kat használja. A bővítmény létrehozásával ellenőrizzük, hogy minden megfelelően van-e beállítva:
# Build the C++ addon
npm run build-nativeWindowsAddon
Megjegyzés:
C#-bővítményt is létrehozhat a következővel npx winapp node create-addon --template cs: . A C#-bővítmények node-api-dotnetet használnak. További lehetőségekért tekintse meg a bővítmények létrehozásának egyéb útmutatóit vagy a teljes parancsdokumentációt .
2. lépés: A létrehozott bővítmény tesztelése
Ellenőrizzük, hogy a létrehozott bővítmény működik-e a fő folyamatból való meghívással. Megnyitás src/index.js:
- Adja hozzá a bővítmény importálását a többi
requireutasításhoz az elején:
const nativeWindowsAddon = require('../nativeWindowsAddon/build/Release/nativeWindowsAddon.node');
- Hívja meg az értesítési függvényt a
createWindow()függvény végén:
const createWindow = () => {
// ... existing window creation code ...
// Test the Windows SDK notification
nativeWindowsAddon.showNotification(
'Hello from Electron!',
'This notification uses the Windows SDK.'
);
};
Mielőtt az értesítési API működni fog, gondoskodnia kell arról, hogy az alkalmazás identitással fusson. Indítás:
npx winapp node add-electron-debug-identity
Megjegyzés:
Ez a parancs már része a(z) postinstall telepítési útmutatóban hozzáadott szkriptnek, ezért automatikusan fut ezután: npm install. Azonban manuálisan kell futtatnia, amikor módosítja a Package.appxmanifest-t, frissíti az alkalmazás erőforrásait, vagy újratelepíti a függőségeket.
Most futtassa az alkalmazást:
npm start
Megjelenik egy értesítés! 🎉 A létrehozott bővítmény azonnal használható.
⚠️ Ismert probléma: Az alkalmazás összeomlik vagy üres ablak (kattintson a kibontásához)
Van egy ismert Windows hiba a ritkán csomagolt Electron-alkalmazásokkal, amely miatt az alkalmazás összeomlik az indításkor, vagy nem rendereli a webes tartalmat. A problémát kijavítottuk Windows, de még nem propagáltuk az összes eszközre.
Kerülő megoldásért tekintse meg a fejlesztési környezet beállítását .
3. lépés: Frissítés Windows App SDK értesítésekre
Most, hogy megerősítettük a bővítmény működését, frissítsük a modern Windows App SDK értesítési API-k (Microsoft.Windows.AppNotifications) használatára, amelyek jobb fejlesztői élményt és további funkciókat biztosítanak. Már beállítottuk a Windows App SDK, amikor futtattuk az init parancsot a beállítási lépésekből.
Nyissa meg nativeWindowsAddon/nativeWindowsAddon.cc és cserélje le a teljes tartalmat erre a kódra:
#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)
Itt a legfontosabb változások a régebbi Windows.UI.Notifications névtérről a modern Microsoft.Windows.AppNotifications API-kra való váltás, valamint az AppNotificationBuilder használata értesítések létrehozására az XML-sztringek manuális létrehozása helyett. Ez egy tisztább, karbantarthatóabb API-t biztosít, amely összhangban van a Windows App SDK mintákkal.
4. lépés: Újraépítés és tesztelés
Most építse újra a bővítményt a frissített kóddal:
npm run build-nativeWindowsAddon
Frissítse az üzenetet, src/index.js hogy tükrözze a változást:
nativeWindowsAddon.showNotification(
'Hello from Electron!',
'This notification is powered by the Windows App SDK!'
);
Futtassa újra az alkalmazást:
npm start
A frissített értesítés a modern Windows App SDK API-k használatával jelenik meg!
Következő lépések
Gratulálok! Sikeresen létrehozott egy natív C++ bővítményt, amely meghívja Windows App SDK API-kat! 🎉
Most készen áll a következőre:
- Csomagold az alkalmazásodat terjesztésre – Terjeszthető MSIX-csomag létrehozása
Vagy fedezze fel a többi útmutatót:
- Phi Silica-bővítmény létrehozása – Megtudhatja, hogyan használhatók Windows AI API-k egy C#-bővítményben
- WinML-bővítmény létrehozása – Megtudhatja, hogyan használhatja a Windows Machine Learning egy C#-bővítményben
- Első lépések áttekintése – Visszatérés a fő útmutatóhoz
További források
- a winapp parancssori felület dokumentációja – Teljes cli-referencia
- Electron-mintaalkalmazás – Teljes munka példa C++ bővítménnyel
- node-addon-api – C++ ↔ JavaScript interop könyvtár
- Windows App SDK Minták – Windows App SDK minták gyűjteménye
Windows developer