![]() |
Bildschirm erkennen bei duplizierten Bildschrim
Hallo !
Ich habe 2 USB Touch Monitore. Diese sind unter Windows Anzeige dupliziert. Also beide zeigen den selben Desktop an. (Vorgabe eines Kundenprojektes) Gibt es eine Möglichkeit die Touch Eingabe trotzdem zu unterscheiden ? Delphi gibt mir bei dieser Einstellung nur einen Monitorcount = 1 zurück :( Grüsse Rainer |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Zitat:
Über normale WinAPI hast du nur einen Bildschirm. Du müsstest hoffen ob es auf "unterer OS"-Ebene andere Infos gibt. Aber je "tiefer" du runter gehst, desto aufwändiger wird es und je inoffizieller diese API ist, desto öfter könnten Windows-Updates eine Implementierung kaputt machen. |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Die Monitore Anzeigegeräte sind zwar getrennt,
aber ja, auf unserer Ebene ist es nur ein "Monitor" (gemeinsamer Ausgabebereich), dennoch sind die Eingabegeräte unterschiedlich. Das ist wie als wenn man zwei Mäuse angesteckt hat. (es kann mehrere Geräte geben, die dann irgendwann auf einem Zeiger zusammengeführt werden) Auf den höheren API-Ebenen (die Messages, welche wir empfangen) hast zwar eine passenden Infos mehr, von wem was gekommt, aber auch in den dokumentierten APIs gibt es bestimmt Ebenen/APIs, wo diese Infos noch existieren, also wo man sieht von welcher Quelle (Treiber-Instanz <- Input-Device) es kam. Ich würde mal empfehlen in Richtung DirectInput Ausschau zu halten. Ein Anfang zum Suchen: ![]() ![]() ![]() ![]() |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Hast du auch gefragt wie viel Geld dem Kunden das wert ist,
bevor du hier weiter einsteigst?. Das kann schon ziemlich aufwändig werden. |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Kann man das Bild von Monitor 1 nicht softwareseitig auf Monitor 2 zeichnen?
|
AW: Bildschirm erkennen bei duplizierten Bildschrim
Bei einer Duplizierten Anzeige, hast du natürlich Monitor Count = 1, da die Anzeige nur gespiegelt wird.
Du müsstest hier einen relativ aufwändigen weg gehen: 1. Anzeige als Erweitert einstellen. (Müsste Monitorcount =2 zur Folge haben) 2. Wenn das Programm startet und Monitorcount >1, a) Eine Zweite Instanz des Programms auf dem 2. Monitor darstellen. (Ggf. mit einer Art "WorkID" arbeiten, um die Eingaben strikt zu trennen). b) Eine Zweite Eingabemaske des Programms auf dem 2. Monitor darstellen. (Ggf. mit einer Art "WorkID" arbeiten, um die Eingaben strikt zu trennen). 3. Dadurch unterscheidest du die Eingaben. Probleme wirst du haben, wenn: Auf beiden Monitoren gleichzeitig Eingaben getätigt werden (beide drücken gleichzeitig auf den Touch zur selben Zeit), das musst du aber testen ob dadurch Konflikte entstehen. |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Wenn nicht zeitgleich an beiden Monitoren/Eingabegeräten gearbeitet wird, dann wird es einfacher.
Das Fenster doppelt (je Monitor) und nur bei der Tastatur muß man aufpassen, dass nicht grade das andere Fenster den Fokus hat (vorher einmal ins Fenster klicken oder eine Erkennung der Quelle und automatische Fokusierung des richtigen Fensters). Wie schon gesagt. Entweder mußt du auf tieferen Ebenen auf Eingaben reagieren, also dort wo du die Quelle der Inputs unterscheiden kannst, damit jedes Fenster auf eine andere Touch/Maus/Tastatur reagieren kann. Oder man nehme einen billigsten MiniPC, auf dem ein RDP-Client läuft und sich in eine zweite Session auf dem PC einloggt. Das Programm also zwei Mal gestartet, je in einer eigenen Session auf einem der Monitore. Oder (hier macht die Trennung der Eingabegeräte/Anzeigen ein anderes System und nicht du selber) ![]() Im Linux isses einfacher. Dort kann man wohl eine X-Session mehrfach starten, auf nur einem der Monitor anzeigen lassen, und jeder Sizung eine andere Maus/Tastatur/Touchgerät zuweisen. |
AW: Bildschirm erkennen bei duplizierten Bildschrim
Wie himitsu und co. bereits geschrieben haben, musst du immer eindeutig identifizieren von welchem Eingabegerät die Eingabe kommt und zu welchem "Arbeitsplatz" dieses gehört um die Eingabe entsprechend zu "routen". Ich denke das hört sich noch einfacher an als es in Wirklichkeit dann ist.
Alternativ, falls dir das zu aufwendig ist, gibt es bereits eine Software die so etwas wohl kann: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz