Stream Deck für nicht unterstützte Programme mit AutoIt umsetzbar?

  • Hallo zusammen.
    Ich besitze ein Stream Deck (nicht zu verwechseln mit dem Steam Deck ;) ) und überlege, ob ich dieses im Büro auch produktiv einsetzen kann.

    Wir haben ein paar Programme, deren Funktionen am Schnellsten mit HotKeys aufzurufen sind.
    Diese sind jedoch teilweise so umständlich, dass man sich diese nicht merkt.
    Hierfür bräuchte ich noch keine AutoIt Hilfe.

    Es gibt aber einige Funktionen, die nur möglich sind, wenn eine bestimmte Aktion vorher erfolgte.
    z.B. bei einem CAD System ein Objekt markiert wurde, erst dann gehen bestimmte Manipulationsfuktionen (Verschieben, Trimmen, etc.) In diesem Fall ändert sich auch oben das Menü Ribbon.

    Ich suche also eine Möglichkeit herauszufinden, welches Menü gerade oben aktiv ist und die Knöpfe auf dem Stream Deck entsprechend anzupassen.

    Ist so etwas grundsätzlich überhaupt möglich oder brauche ich in dieser Richtung gar nicht weiter zu forschen?

    Vielen Dank für eure Einschätzung

    Gruß
    Thrawn

  • ich fürchte für eine Einschätzung fehlen (zumindest mir) noch ein paar Informationen.

    Ich habe im Internet die Software Stream Deck von Elgato gefunden.

    Die hat aber nach meinem ersten Eindruck nichts mit CAD Systemen zu tun.


    Ich vermute, dass deshalb auch das Feedback sehr überschaubar bleibt.

    Stell uns doch unter Vorlage von Screenshot's und oder detailierter Beschreibung vor,

    was du womit erreichen möchtest.

    Ich bin mir sicher, dass unter uns welche sind, die dir weiter helfen können. ;)

    MfG Schnuffel


    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

  • Hallo.
    Danke für deine Rückmeldung.

    Du hast Recht, das StreamDeck von Elgato hat nichts mit CAD direkt zu tun.
    Es ist im Prinzip eine Tastatur, bei der man die Tasten frei belegen kann.
    Zudem kann man dort Macros ausführen lassen oder auch ganze Plug Ins.
    Der eigentliche Clou dabei ist, dass diese Tasten mit 96x96px "Bildschirmen" ausgestattet sind, so dass man die Knöpfe mit beliebigen Grafiken belegen und natürlich auch wechseln kann.

    Soviel zur Erklärung des StreamDecks.
    Diese Möglichkeit die Buttons frei zu belegen kann man natürlich für alles mögliche nutzen.
    Ich wollte damit die Hotkeys eines CAD Programms (als Beispiel) dort ablegen. Das ist auch kein Problem.
    Nur sind bei diesem CAD System (wie bei vielen anderen Programmen auch) nicht immer alle Hotkeys scharf geschaltet, sondern abhängig von anderen Dingen/Funktionen.

    Bei diesem CAD System z.B. ändert sich das Menüband, sobald man gewisse Objekte anklickt bzw. Optionen auswählt.
    Dieses will ich gerne "mitschneiden" oder wie auch immer, so dass ich die Buttons auf dem Streamdeck mittels PlugIn entsprechend umschalten/freischalten/etc. kann. Somit hätte man eine Interaktion zwischen Streamdeck und Programm, obwohl für dieses Programm keine native Schnittstelle existiert.


    Daher die eigentliche Frage, ob man sowas mit Hilfe von z.B. AutoIt und C#, etc. "mitschneiden" kann.


    Hoffe es damit erschöpfend erklärt zu haben.

  • Bei diesem CAD System z.B. ändert sich das Menüband, sobald man gewisse Objekte anklickt bzw. Optionen auswählt.
    Dieses will ich gerne "mitschneiden" oder wie auch immer, so dass ich die Buttons auf dem Streamdeck mittels PlugIn entsprechend umschalten/freischalten/etc. kann. Somit hätte man eine Interaktion zwischen Streamdeck und Programm, obwohl für dieses Programm keine native Schnittstelle existiert.

    Somit ist der Hinweis auf StreamDeck in der Fragestellung leider völlig irreführend. Dein Problem ist das CAD-Programm, dessen Messages du gerne verwerten möchtest.

    Also benenne mal, mit welchem CAD-Proggi du arbeitest, evtl. hat ja bereits jemand dafür Lösungen parat (kann mich schwach erinnern, dass hier im Forum schon mehrfach das Thema CAD-Automatisierung ein Thema war).

    Hast du schon probiert mit dem AutoItWindowInfo-Tool Infos zu deinem CAD zu bekommen um mit den Control-Funktionen zu reagieren?

    Wenn das nicht möglich ist, musst du erst mal selbst die Nachrichten, die beim Aktivieren der jeweiligen Menüpunkte gesendet werden herausfinden. Dazu kannst du z.B. Winspector nutzen. (In diesem Thread hatten wir mal nützliche Tools zur Fenster- und Controlbestimmung aufgelistet).

    Wenn also der "normale" Zugriff mittels ControlSend / ControlCommand etc. nicht möglich ist, musst du dich in den Windows-Nachrichtenstrom einklinken und auf die jeweiligen Messages reagieren. Du brauchst diese, wenn ich das richtig verstanden habe, ja nicht manipulieren, sondern musst nur wissen: Aha, MSG_XYZ wurde an Fenster-HWND 0x123456 gesendet, lParam /wParam enthielten den Wert "n" --> jetzt ist das Menü scharf.

    In dieser Richtung musst du also weiter machen.


    Edit:

    Um Fensterinformationen von fremden Fenstern in einem AutoIt-Programm auswerten zu können ist Subclassing erforderlich. Dazu benötigst du eine extra dll (DSSUBCLS.DLL).

    Bsp. und DL-Info für die DLL findest du hier. (Eventuell sind inzwischen auch andere Vorgehensweisen möglich, hatte mir den Link vor Jahren gespeichert.)


    Edit_2:

    Habe gerade gesehen, dass der DL der DSSUBCLS.DLL leider tot ist. Vielleicht hat ja jemand die DLL zur Hand.

  • Hallo zusammen.
    Sorry, dass ich erst jetzt antworte aber ich hab für dieses Projekt leider nur am WE Zeit.

    Habe zwischenzeitlich schon mit CheatEngine experimentiert, um die Zustandsänderungen evtl. mitzuloggen.
    Dabei habe ich herausgefunden, dass die Menüs zum Start vorhanden sind und scheinbar nur ein- und ausgeblendet werden.
    Ein Event rein auf den Buttonname geht also nicht. Ich muss irgendwie an den Zustand ran.

    Werde mir jetzt eure Tipps mal zu Gemüte führen und sehen, ob ich damit evtl. weiter komme.

    Erst einmal Danke für die Rückmeldungen.

    Thrawn