Thema: Delphi Screenshot aus TService

Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#10

AW: Screenshot aus TService

  Alt 16. Feb 2022, 15:45
Du brauchst also zu deinem Dienst ein Programm das in der aktuell User session sitzt und dir die Bilder liefert.
Das war auch mein erster Gedanke, dass der Service eventuell regelmäßig ein kleines, unsichtbares Snapshot-Programm triggern könnte, dass ihm die Daten liefert.

Die Idee mit DesktopDuplicationApi ist auch nett, ich sehe da aber nirgends dass man sich vom Service aus was holen könnte.
Wahrscheinlich ist das Ergebnis im Service dann auch wieder nur schwarz oder weiss, aber eben nicht aus dem User Process.
Hat es damit denn funktioniert ?
Also im Dienst läuft es damit auch nicht. Schon beim FDuplication.GetFrame kommt SystemError 170.

Möglicherweise muss ich mich von dem Anspruch verabschieden, dass gänzlich unter Verzicht einer Application im Usercontext zu realisieren. Ziel war eigentlich die Manipulation der Function über den Taskmanager zu unterbinden.
Allerdings hat die DesktopDuplicationApi noch eine anderen Nachteil. Sie greif nämlich immer nur den primären Bildschirm ab. Bei 2 oder mehr Monitoren fehlt also immer einiges. Und ich habe (zumindes im Wrapper) keine Möglichkeit gefunden, den Bildschirm zu wechseln (allerdings würde ich beide gleichzeitig benötigen).

Hast Du es mal mit OpenWindowStation('winsta0', True, GENERIC_ALL) probiert? Und anstelle von default für den Desktopnamen GetUserObjectInformation(OpenInputDesktop(0, false, GENERIC_ALL), UOI_NAME, @pDesktopname, 256, dwLen) ?
Hm....kurze Frage: Was würde das GetUserObjectInformation bringen?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat