ich habe ein Problem mit einem in der SAP GUI eingebettenen Programm (eine COM-Applikation die auch OpenGL-Calls enthält).
Und zwar kann das gesamte SAP-Fenster welches das eingebettete Programm enthält, nachdem es minimiert wurde nicht wiederhergestellt oder maximiert werden bzw. hierzu sind einige Tricks notwendig, die wir unseren Anwendern im Haus nicht anbieten können/wollen.
Das Problem scheint zu sein, dass SAP zwar entsprechende Events generiert wenn die Größe des SAP GUI-Fenster geändert wird (Fenster wird durch Anwender größer oder kleiner gezogen), aber es keine entsprechenden Events für das Minimieren bzw. das anschließende Wiederherstellen oder Maximieren des Fensters gibt. Dies in Kombination wie die eingebettete Anwendung funktioniert scheint das Problem zu verursachen.
Gibt es eine Möglichkeit sich von der SAP-GUI einen entsprechenden Event für MInimieren/Maximieren/Wiederherstellen generieren zu lassen bzw. so einen Event irgendwo abzufangen?
Warum der SAPgui bestimmte Dinge nicht so macht wie andere Applikationen hab ich inzwischen aufgegeben zu hinterfragen.
Da du dich aber mit COM eigentlich im Windows-Umfeld bewegst gibts da schon ein paar Möglichkeiten die du machen könntests. Am einfachsten wäre es sich mit einem Hook in die Messagequeue des (Top-Level) Fensters zu hängen in dem deine Applikation läuft um so die Originalmessages, die an den SAPgui geschickt werden, selbst abzugreifen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
vielen Dank für die Antwort.
Leider ist die Anwendung die eingebettet ist nicht von uns und ich befürchte ich muss da noch viel Überzeugungsarbeit leisten, damit das für uns umprogrammiert wird.
Theoretisch wäre das vielleicht auch von unserer Seite möglich, also Events die an SAP gehen aus der Messagequeue abfischen und dann irgendwie in die Messagequeue des eingebetteten Programms, aber auch rechtlich wäre das sehr problematisch (Medizinprodukt).
ui...
Was aber noch ginge ist, einen Wrapper um die bestehende OCX herumzubauen. Das hab ich z.B: mit dem SAPscript Editor so gemacht um die F1 und F4 Events abgreifen und nutzbar machen zu können.
Dazu musst du zuerst mal alle Methoden/Events usw. die im Original-OCX definiert sind auslesen und damit dieselbe Schnittstelle für das Wrapper-OCX nachbauen. Innerhalb dieses Wrappers instantiierst du dann die Original-OCX und machst nichts weiter als die Befehle 1:1 durchzureichen. Das Ganze natürlich aufgefettet um die Messages die du vom Top-Level Fenster abgreifst.
Im SAP selbst musst dann im zugehörigen GUI-Control die CLASSID vom Original-OCX mit der von deinem Wrapper austauschen. (Am besten gleich das ganze Control kopieren, weil du dann wahrscheinlich gleich noch mehr Goodies zu deiner OCX "dazuprogrammieren" willst 😉 )
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.