2013-06-26 6 views
11

Ich arbeite an einer gepackten App, die mehrere Displays verwenden wird. Ich muss Fenster in bestimmten Anzeigen öffnen können. Ich habe auch versucht, Windows zu öffnen und dann, mit Javascript, sie auf einen Monitor zu bewegen. Die App bewegt sich jedoch nicht weiter als die Grenzen der aktiven Anzeige.Chrome Packaged App und Dual Monitor

Irgendwelche Ideen, wie man das zum Laufen bringt?

+0

Von dem, was ich gesehen habe, neigt Chrome dazu, eklig zu sein, wenn es um mehrere Monitore geht. Wenn ich mein primäres Display ändere (ich habe 3 Monitore), wird der Chrombildschirm schwarz und reagiert nicht mehr. Es ist wahrscheinlich ein internes Problem in Chrome, das dies stoppt. –

+0

Ein anderer Gedanke war, das Chrome Native Client SDK für die Fensterverwaltung zu verwenden. Ich weiß jedoch nicht viel über das SDK. Wäre es möglich, ein Fenster damit zu steuern? – Kywillis

+0

Das ist hauptsächlich für die Integration von Desktop-Anwendungen in den Browser. Es könnte sehr gut funktionieren, es hängt nur von der Zugriffsebene ab, die Sie mit Chrome erhalten. –

Antwort

0

Dies war nicht die Lösung, auf die ich gehofft hatte, aber als einer der erwähnten Kommentare gibt es einen Bug mit Chrome und mehreren Monitoren. In meinem Fall ist dies eine interne Anwendung, so dass ich alles installieren kann, was ich brauche, damit dies funktioniert.

Meine Lösung bestand darin, eine Konsolenanwendung zu erstellen, die die Chrome-App startet und dann die Fenster mithilfe der Windows32-API verschiebt. Offensichtlich nicht ideal, aber es funktioniert und der Benutzer braucht nur einen Klick, um die App zu starten.

1

Verwenden AppWindow#setBounds

Z.B.

chrome.app.window.get('mainWindow').setBounds({"height": 200, "left": 2000})

auf v34 Getestet

Boom. Ändern Sie dies zur richtigen Antwort.

3

Verwenden Sie chrome.system.display.getInfo mit diesem können Sie die Anzeige Informationen für jede aktive Anzeige erhalten.

Mit displayInfo.workArea können Sie den Arbeitsbereich jedes Displays erhalten, Sie müssen nur an ein großes Display denken und jedes Display ist ein workArea. Mit diesen Informationen können Sie Ihr Fenster mit

AppWindow#setBounds auf den richtigen Monitor verschieben. Seien Sie vorsichtig, AppWindow#moveTo funktioniert nicht.