MouseGetCursor() liefert in einer Citrix Umgebung immer 0 (Unknown)

  • Hallo zusammen,

    ich schreibe eine Programm, dass einige Aufgaben für eine Anwendung automatisieren soll.
    Die Anwendung läuft auf einer XenApp Farm und ließt Daten aus einer Datenbank ein.
    Solange sie beschäftigt ist, ändert sich der Mauszeiger. Dies wollte ich über MouseGetCursor() aufgreifen und dann mit meinem Tool weitermachen, wenn sidh der Mauszeiger wieder zu einem normalen Zeiger ändert.
    (MouseGetCursor() liefert dann den Wert 2 = Arrow zurück).
    Unglüchlicherweise funktioniert das unter Citrix nicht. Der Rückgabewert des Cursors ist immer 0 = unknown. Ich habe das auch mit anderen Anwendung unter Citrix ausprobiert.

    Ich stehe jetzt ein wenig auf dem Schlauch.
    Fällt jemand von Euch Experten eine Alternative zu Mousegetcursor ein?
    Die UDF _WinAPI_GetCursorInfo() liefert leider keine Informationen zum Curosrtyp.

    Ich bin für jeden Tip dankbar.

    Vielen Dank

    Andreas

  • Hallo zusammen,

    eine Nacht über dem Problem mit den fehlenden Mousecursorwerten geschlafen und ich habe eine Erklärung dafür aber leider keine Lösung :(

    Citrix bzw das ICA Protokoll soll gar keinen "echten" Cursor zurückgeben. Der Mouszeiger repräsentiert nur eine Koordinate auf dem Seamless Window dass den Mousezeiger in der eigentlichen Anwendung repräsentiert und die läuft ja auf dem Citrix Server. Die Anwendung malt nur ein paar Pixel auf den Bildschirm und genau so soll es ja auch sein. Ich kann deshalb auch nicht die verschiedenen Formklassen abrufen (z.b. ControlGetText("[CLASS:MeineAnwendung]", "", "Edit1")). Es wird nur eine Klasse angezeigt nämlich die CLASS:SeamlessWindow. Wenn in der Anwendung eine Messsagebox erscheint, so erscheint die nicht auf dem Client sondern nur auf dem Server, auf dem Client wird lediglich das Ergebnis der Bildschirmänderung in einem großen Fenster dargestellt.

    Das bringt mich jetzt vor ganz andere Probleme:
    Ich könnte vielleicht das AutoIt Programm direkt auf dem Server laufen, das ist aber nicht ganz das Ziel (es ist ein Test- und Messprogramm für eine andere Anwendung und soll die Umgebung so repräsentieren wie die Mitarbeiter sie vorfinden).

    Ein anderer Ansatz wäre eine Überprüfung der Anzeige vielleicht mit PixelSearch, MouseGetPos, PixelGetColor oder so, PixelChecksum hört sich ganz interessant an, allerdings habe ich bisher noch nie mit den Grafikfunktionen von Autoit gearbeitet und _GDIPLUS habe ich mal die Beispiele angeschaut aber das Konzept dahinter nicht wirklich verstanden.

    Habt ihr Erfahrungen und Beispiele damit oder eine ganz andere Idee für das Problem ?

    Vielen Dank
    Andreas