Hallo zusammen.
Ich möchte gerne eine kleine Anwendung schreiben, welche auf eingehende Nachrichten einer Chrome Extension wartet.
Laut API Beschreibung [1] verwendet Chrome hier eine auf JSON basierende Kommunikation.
Ziel ist, dass diese Anwendung sich aus Chrome heraus triggern lässt und dann eine einzige Aktion [2] durchführt.
Anschließend kann sich diese Anwendung selbst wieder beenden, da sie nicht mehr gebraucht wird.
Aufgrund von Sicherheitsmechanismen kann diese App nicht direkt aus Chrome gestartet werden. Hier muss ich daher den Umweg über diese Native Messaging API gehen.
Nach meinen Beobachtungen im Task Manager wird die Anwendung auch direkt von der Extension gestartet. Sie muss nicht vorher schon gestartet sein als Dienst im Betriebssystem.
Rein theoretisch müsste ich das JSON nicht mal auswerten. Die App wird ja von der Extension getriggert, und mich interessieren keine Infos, die da übergeben werden könnten.
Auch ein Rückgabewert ist nicht nötig.
Allerdings scheint Chrome etwas zickig zu sein und möchte für dieses API wirklich gerne ein JSON Objekt übergeben.
Und es klappt leider auch nicht, das JSON-Objekt nicht entgegenzunehmen.
Hat jemand eine Idee, wie ich das mit Bordmitteln hinkriegen könnte mit wenig Aufwand?
(Bordmitteln deshalb, da das neu kompilieren von Lazarus unter Win10 Fehlermeldungen bringt)
Vielen Dank.
Grüße,
Marcus
[1] https://developers.chrome.com/extension ... t-protocol
[2] viewtopic.php?f=55&t=12644
Chrome Native Messaging: JSON Nachrichten empfangen?
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Chrome Native Messaging: JSON Nachrichten empfangen?
Einfach bis zum eof den stdin Stream auslesen: viewtopic.php?f=10&t=6306
Re: Chrome Native Messaging: JSON Nachrichten empfangen?
Danke sehr.
Leider habe ich das mit dem stdin nicht hingekriegt.
Allerdings habe ich festgestellt, dass im Beispielcode der Chrome Extension unterschieden wird zwischen Connect() und Send(). Ich habe mir das Send() ausgebaut aus dem JS-Code, da ich diesen Teil sowieso nicht brauche. Nun löst der Connect() das starten der Lazarus-Anwendung aus, und diese führt unattended die gewünschten Aktionen durch. Läuft alles nun wie ich es mir vorgestellt hatte.
Leider habe ich das mit dem stdin nicht hingekriegt.
Allerdings habe ich festgestellt, dass im Beispielcode der Chrome Extension unterschieden wird zwischen Connect() und Send(). Ich habe mir das Send() ausgebaut aus dem JS-Code, da ich diesen Teil sowieso nicht brauche. Nun löst der Connect() das starten der Lazarus-Anwendung aus, und diese führt unattended die gewünschten Aktionen durch. Läuft alles nun wie ich es mir vorgestellt hatte.