Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zugriff auf Anwendung in Terminalserver-Fenster

Zugriff auf Anwendung in Terminalserver-Fenster
08.12.2016 16:20:43
Jürgen
Hallo,
seit einigen Jahren nutze ich eine Lösung, in der ich per VBA Daten aus einer anderen Anwendung (3270-Emulation Personal Communications) ziehe.
Nun ändert sich die Installation bzw. Bereitstellung des Programm. Während es bislang auf dem PC installiert war, wird es zukünftig über eine TerminalServer-Lösung bereitgestellt. Damit scheitert der bisherige Code bei der Erstellung der benötigten Objekte, ein
Set autECLSession = CreateObject("PersonalCommunications")
funktioniert nicht mehr, weil es auf dem PC eben kein Personal Communications mehr gibt.
Ich suche daher nun nach einer Möglichkeit, auf die TerminalServer-Sitzung und die darin laufende Anwendung zuzugreifen - hat jemand einen Tipp für mich?
Vielen Dank im Voraus!
Gruß, Jürgen

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
09.12.2016 09:00:05
Norman
Hi Jürgen,
das habe ich auch schon mit Citrix probiert. Meine Erfahrung: Geht nicht - Die Citrix ist eine geschlossene virtuelle Umgebung ohne Schnittstelle "in diese Welt" hinein. Und das tatsächlich mit Bedacht, denn es ist ja auch eine Frage der Sicherheit. Du hättest die Chance Screengrabbing zu machen, das ist aber vermutlich nicht das, was Du willst.
Mir fällt nur die Lösung ein, dass Du die Objekte in der TS installierst. Wenn die TS von einem Rechenzentrum angeboten wird hast Du im Normalfall aber auch nur wenig Chancen, da die RZ-Betreiber dies aus Integritätsgründen nicht zulassen.
Was Du aber probieren kannst: Identifizier die notwendige DLL für "PersonalCommunications". Kopiere die DLL in den Ordner, in dem die Excel-Datei liegt. Binde die DLL über Regsvr32 ein (falls die Citrix-Umgebung das zulässt).
Falls das nicht geht mach es so: Neues Modul und da einen Aufruf wie folgt rein...
Ich habe "PersonalCommunications" mal als DLL-Name angenommen (ist mit Sicherheit falsch) und einfach eine Funktion "PersonalCommunicationsFunc" deklariert (ist mit Sicherheit auch falsch, soll aber zeigen, wie man dann eine Funktion aus der DLL aufrufen kann).
Declare PtrSafe

Sub LibPersonalCommunicationsFunc Lib "PersonalCommunications.dll" (ByVal a As String, ByVal  _
Level As Integer)

Sub PersonalCommunicationsFunc()
Dim lb As Long, pa As Long
lb = LoadLibrary(thisworkbook.path & "\SWPacker.dll")
If lb  0 Then
LibPersonalCommunicationsFunc "ABCTEST", 50
FreeLibrary lb
End If
End Sub
Hoffe, das hilft.
Viele Grüße
Norman
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
09.12.2016 12:12:35
Jürgen
Hallo Norman,
schon einmal herzlichen Dank für Deine Antwort! Der Weg, die .dll lokal abzulegen und darauf zuzugreifen wird für meinen Fall keine Lösung darstellen, da neben der Anwendung auch eine Verbindung zu einem Host erforderlich ist, die in der Citrix-Session definiert ist und lokal nicht.
Aber es geht mir tatsächlich um Screengrabbing, d.h. darum aus der 3270-Emulation (also einer zeichenorientierten Darstellung) den Inhalt als Zeichen zu entnehmen und in Excel einzufügen. Die vorhandene Lösung ist dabei in der Lage, den Blättern-Befehl abzusetzen, so dass Seite für Seite ausgelesen und nach Excel übertragen werden kann.
Es klang so, als hättest Du eine Idee für das Screengrabbing - würde dies nur Screenshots abgreifen oder auch Inhalte?
Herzlichen Gruß
Jürgen
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
09.12.2016 22:53:42
firmus
Hallo Jürgen,
grundsätzlich ist entscheidend welcher Terminalserver benutzt wird.
In der Doku dieses Produktes ist dann die Info zu finden wie die Daten grapped werden können.
Meist haben die alten 3270-Emulatoren eine properietäre Sprache, die das Auslesen ermöglicht.
ABER, bist Du sicher, dass Du noch einen 3270-Datenstrom an den PC bekommst?
Oder ist es vielleicht ein in html gewandelter Datenstrom. In diesem Fall ist ein komplett
anderer Ansatz als 3270-grapping zu wählen. Meist klappt das aber auch noch.
Hast Du am PC einen Client des TS, der die Daten erhält? In diesem Fall wirst Du vermutlich
ein API benutzen müssen, um an die Daten zu kommen. Hier ist auch wichtig mit welchen Sprachen
(c,c++,Java,...) solch ein API angesprochen werden kann. Auch dies sollte die TS-doku zeigen.
Schwierig wird es wenn die am PC ankommenden Daten in Frames in einen Browser geliefert werden,
da wird das Datenabgreifen - aus meiner Sicht - schon zum Kunstwerk.
Gruß
Firmus
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
12.12.2016 01:00:45
Norman
Hi Jürgen,
ich glaube ich habe das noch nicht ganz rüber gebracht oder noch nicht alles kapiert - es gibt zwei Möglichkeiten bei Dir, Du müsstest kurz schreiben welche zutrifft:
1) Du hast eine Terminal-Server-Session, auf dem Du arbeiten kannst. Dort hast Du die 3270, Excel, Word etc, also eine ganz normale Windows-Oberfläche, nur eben über TS, so wie bei einem Remote Desktop. Falls ja: Gut. Dann kannst Du die DLL in den Datenraum der TS legen und auch mit Excel arbeiten.
2) Du hast eine TS, die nur Deine 3270 anzeigt, sonst nix, kein Start, kein Excel. Falls ja: Schlecht. Ich glaube, dann klappts nicht oder nur mit viel Aufwand, weil Du dann noch nicht mal mehr auf die 3270 kommst, sondern nur die grafischen Daten der TS hast. Und wie das geht? Uiuiui, ich würde sagen, Screenshot machen, OCR drüber laufen lassen, Text exportieren bla bla bla. Hört sich für mich nicht gut an.
Bin gespannt, was Du für eine Umgebung hast.
Gruß
Norman
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
12.12.2016 11:24:38
Jürgen
Hallo Norman,
danke für die Nachfrage. Leider ist Variante 2 zutreffend, d. h. nur die Anwendung (Personal Communications) wird über Citrix bereitgestellt. Bislang konnte ich über das Objektmodell der Anwendung die Informationen ziehen (wobei auch Statusinformationen, z. B. ob der Bildschirm schon vollständig geladen ist, eine Rolle spielen). Mit meinem jetzigen Wissen erreiche ich das Objektmodell nun nicht mehr. Händisch per Maus markieren, kopieren und einfügen nach Office funktioniert weiterhin - das ist bei langen, sich über viele Seiten erstreckenden Listen jedoch recht mühsam.
Ich hatte gehofft, das Citrix-Fenster als Objekt greifen zu können und darüber wieder auf die Anwendung und ihre Objekte zu gelangen, das ist mir jedoch noch nicht gelungen.
Gruß, Jürgen
Anzeige
AW: Zugriff auf Anwendung in Terminalserver-Fenster
12.12.2016 11:33:41
Jürgen
auf "noch offen" setzen vergessen...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige