2012-12-27 10 views

Antwort

4

Ich beantworte meine Frage, als nach einigem Studium fand ich die Antwort von West ein bisschen nicht richtig. Ich habe versucht, Windows-APIs in Pepper (PPAPI) -Plugin aufrufen und es funktioniert gut mit einem Befehlszeilenschalter "--register-pepper-plugins" (nicht die --no-Sandbox wie von West angegeben). Es scheint sicherer zu sein, dieses Befehlszeilenattribut zu verwenden, da es nur ein Plug-In im Chrome-Browser registriert und keine Sandbox entfernt. Ich dachte daran, eine Antwort hinzuzufügen, nachdem ich ein vorhandenes Pfeffer-Plugin gefunden habe, das den Schalter benutzt (das NetFlix Pfeffer-Plugin für Chromos).

Haben Sie weitere Informationen hinzuzufügen. Chrome-API ist verfügbar, die die Multi-Monitor-Informationen zur Verfügung stellt: chrome.systemInfo.display Objekt bietet alle notwendigen Informationen. Die Chrom-Dokumentation wird nicht aktualisiert. Wichtig zu beachten ist, dass die Berechtigung "systemInfo.display" im Manifest hinzugefügt werden muss, um dieses Objekt zu verwenden. In der Funktionalität dieses Objekts werden zwei Fehler gemeldet.
1.Der Monitor-Name ist für alle Monitore identisch "Generic PnP Monitor", die Dokumentation behauptet, den benutzerfreundlichen Namen von Monitoren bereitzustellen.
2.Es gibt ein Ereignis, das bei der Änderung der Auflösung von Monitoren aufgerufen werden sollte, aber das Ereignis wird nie aufgerufen.

Derzeit ist die Implementierung nur für Windows OS. Unterstützung für andere OS sind auf dem Weg. Die Dokumentation besagt, dass die API nur für die Chrome App verfügbar ist, aber ich habe das getestet und die API ist auch in den Chrome-Erweiterungen verfügbar.

+0

Wenn ich Sie richtig verstanden habe, ist '--register-pepper-plugins' nützlich, um native OS-Anrufe zu tätigen. Warum würde diese Markierung bei Chrome OS selbst helfen? Wissen Sie außerdem, ob es möglich ist, einen Pfad zu einer DLL anzugeben, ohne einen Befehlszeilenschalter zu verwenden (z. B. in der .nmf-Datei)? Vielen dank für Deine Hilfe! – AbdullahC

+1

Pepper-Plugins haben inhärent die Berechtigung, die nativen API-Aufrufe zu verwenden. Aber um sie in Chrome zu verwenden, müssen wir sie registrieren, und hier hilft der Befehlszeilenparameter --register-pepper-plugin. Ich habe auch versucht, einen anderen Weg zu finden, um das registrierte Plugin und den DLL-Namen durch nmf zu erhalten . Bisher bin ich auf keine solche Option gestoßen. – MGR

+0

Danke @MGR! Übrigens, was wäre der beste Weg, das NetFlix-Plugin auszuprobieren? Brauche ich Windows oder Linux dafür? Nach Kommentaren im Internet scheint es, dass nur Chrome unter Linux diesen Befehlszeilenschalter benötigt. – AbdullahC

2

Leider ist die kurze Antwort "Nein". Native Client ist so konzipiert, dass es unabhängig vom Betriebssystem und so sicher wie JavaScript ist. Stellen Sie sich nativen Client als nativen Code vor, der dieselben Fähigkeiten und Einschränkungen wie JavaScript besitzt. Ein Native-Client-Modul, das Windows-API-Aufrufe ausführt, würde diese beiden Designprinzipien brechen: Es würde nicht auf einem Mac laufen und wäre ein großes Sicherheitsrisiko (stellen Sie sich vor, eine Webseite zu besuchen, die Dateien löscht deine Festplatte).

Da Sie Chrome erwähnen, könnte es für Sie interessant sein zu wissen, dass Web-Apps - ob sie JavaScript oder Native Client verwenden - additional permissions als verpackte Apps im Chrome Web Store anfordern können. Native OS-Aufrufe sind jedoch aus den oben genannten Gründen immer noch nicht möglich.

NPAPI-Plugins haben diese Einschränkungen nicht, aber die Zukunft von NPAPI, zumindest in Chrome, ist unsicher (siehe den letzten Absatz von http://blog.chromium.org/2012/07/npapi-plug-ins-in-windows-8-metro-mode.html).

Für Entwicklungszwecke ist es möglich, die äußere Sandbox von Chrome mit dem Befehlszeilen-Flag --no-sandbox auszuschalten und dann PPAPI-Plugins auszuführen, die direkte OS-Aufrufe ausführen. Dies ist für Entwickler gedacht und ist keine geeignete Option für Endnutzer.

Wenn Sie ein bisschen mehr über das sagen könnten, was Sie erreichen möchten, gibt es möglicherweise Möglichkeiten, dies mit Native Client/Pepper zu tun.

+0

Vielen Dank für die Details, West. Ich entwickle eine Vollbild-Anwendung in Google Chrome, die mit Multi-Monitor funktionieren soll. Es sollte eine Option für den Benutzer geben, die Anwendung auf andere Monitore zu verschieben.Also, mein Google-Plugin sollte in der Lage sein, die Informationen jedes Monitors zu sammeln, sie anzuzeigen und meine Anwendung auf den vom Benutzer ausgewählten Monitor zu verschieben. Es wäre toll, wenn Multimonitor-Details und das Browser-Fenster auf einen anderen Monitor verschoben werden, ohne Win API zu verwenden. – MGR

+0

Hmm, das ist eine schwierige Frage. In JavaScript oder Pepper ist es nicht möglich, das zu tun, was Sie wollen, da es derzeit keine API gibt, die mehrere Monitore zuverlässig erkennen kann. Das Beste, was Sie an diesem Punkt tun können, ist wahrscheinlich, den Vollbildmodus zu verlassen und sich darauf zu verlassen, dass der Benutzer das Fenster bewegt, bevor er wieder in den Vollbildmodus wechselt - keine großartige Lösung. Oder es gibt NPAPI, aber das ist auch keine sehr attraktive Wahl. –

+0

Danke West. Ich freue mich auf die Entwicklung von Pepper und Native Client bis zu einem Level, wo es solche Dinge auch von mit in der Sandbox unterstützt. – MGR