VB6 - Ermitteln in welchem Modus die Software läuft (Betriebssystem/Kompatibilitätsmodus)

  • VB6

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    VB6 - Ermitteln in welchem Modus die Software läuft (Betriebssystem/Kompatibilitätsmodus)

    Hall Leute,

    ich habe eine ältere VB6 Anwendung die grundsätzlich auf allen Betriebssystemen bis Windows 10 funktioniert. Lediglich bei Windows 8 64 Bit und Windows 10 64 Bit muss im Windows 7 Kompatibilitätsmodus gestartet werden, da eine Komponente nur so funktioniert.

    Ich möchte dem User beim Start einen Hinweis geben, falls Win10 64 Bit oder Win8 64 Bit vorhanden ist aber der Windows 7 Kompatibilitätsmodus NICHT aktiviert ist. Ein Text-Hinweis ist immer besser als ein nicht abfangbarer Fehler.

    Wie kann man herausfinden in welchem Modus/Betriebssystem die VB6 Anwendung läuft?

    LG Roland

    Verschoben. ~Thunderbolt
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hey @dive26
    Da muss ich nochmal genau nachfragen; Also das VB6 Programm wird gestartet und diese soll eine Meldung bringen in welchem Modus sie gestartet worden ist?

    Das wäre mit etwas Arbeit verbunden, da ich nicht genau weiß, ob es für VB6 schon eine Klasse für so etwas gibt bzw. gab. (Auch bei VB [.NET] wüsste ich ad hoc nicht, ob es hierfür eine Klasse gibt. Mit Environment.OSVersion kommt man hier wohl nicht weit)
    Um zu wissen das ein Programm in dem Komp. Modus laufen soll, muss Windows ja irgendwo die Information speichern und das macht Windows ja meistens in der Registry. Aus dem Grund hab ich das mal mit der Regshot.exe nachvollzogen;

    Ich habe das mal gerade bei meinem Rechner durchgespielt:
    1. TestProgramm.exe auf den Desktop kopiert
    2. Rechtsklick Eigenschaften
    3. Reiter - Kompatibilität ausgewählt
    4. Programm im Kompatibilitätsmodus ausführen für Windows Vista

    Ergebnis:
    Unter HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers wurde eine Zeichenkette eingetragen "C:\Users\Drahuverar\Desktop\TestProgramm.exe" diese hat nun als Daten folgendes abgespeichert: VISTARTM
    Anschließend habe ich mal noch Mit 256 Farben ausführen & In Bildschirmauflösung 640x480 ausführen ausgewählt und habe folgenden Datenwert bekommen VISTARTM 256COLOR 640X480
    Man sieht, dass hier durch simple Leerzeichen/WhiteSpace getrennt wird.

    Also müsste man das einmal durchspielen (also ein Szenario bei dem alle Werte vorhanden wären und die unterschiedlichsten OS Versionen abgefragt werden,...) und beim Starten deiner VB6 Anwendung müsstest du den Registry Eintrag überprüfen...
    Allerdings habe ich hier eine Windows 7 Maschine und bin mir nicht sicher wie der Schlüssel Eintrag unter Windows 10 aussehen würde...

    Ich hoffe ich konnte dir helfen. Ansonsten lass es mich wissen, wenn noch etwas unklar sein sollte. :)

    Grüße,
    Drahuverar
    Option Strict On!
    Vielen Dank Drahuverar, das könnte in der Tat eine Lösung sein. Falls es nichts anderes gibt ;)
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    dive26 schrieb:

    Kompatibilitätsmodus NICHT aktiviert ist.
    Ich kenne das nur so, dass das Betriebssystem beim Start diesen Hinweis gibt. Da dürfte von Deinem Programm noch nix laufen, was eine Meldung ausgeben könnte.
    Wenn Du also was meldest, hat das Betriebssystem das mit Sicherheit schon getan und den Modus umgestellt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @dive26
    Angenehmer wäre es natürlich, wenn es schon was gäbe. ;)

    @RodFromGermany
    Ich habe leider keine Meldung von meinem Windoof bekommen. War aber auch der Meinung, dass zumindest in der Text-Property der Form noch etwas steht wie z.B. "[Läuft im Kompatibilitätsmodus]".
    Option Strict On!
    @Drahuverar Probier mal dies:
    Rechte Maustaste auf das Programm, Eigenschaften => Kompatibilität
    und dann ein wenig mit den Möglichkeiten rumspielen:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Drahuverar schrieb:

    'Windows 95'
    sollte auch der Vergangenheit angehören, das ist nun mal extrem inkompatibel. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!