Compilierung der Taskbar-Zugriffe auf Windows 7 unter Windows Vista



  • Hallo liebe Community,

    ich versuche, mein Programm zu der Taskbar von Windows 7 kompatibel zu machen. Entwickeln bzw. compilieren geschieht unter Windows Vista, da das Programm auch weiterhin dazu kompatibel sein soll.
    Dabei habe ich mich an diesem Artikel gehalten ( http://msdn.microsoft.com/en-us/magazine/dd942846.aspx )
    Um nun die App-ID zu setzen, verwende ich folgendes:

    PROPVARIANT appID;
    IPropertyStore* propertiesStore;
    ...
    VERIFY(propertiesStore->SetValue(PKEY_AppUserModel_ID, appID));
    

    Leider kennt Windows Vista die Variable "PKEY_AppUserModel_ID" vom Typ PROPERTYKEY nicht.

    Ich habe auch die Windows-7-SDK installiert und die "propkey.h" includiert, allerdings bekam dort nur einen Linker-Error:

    error LNK2001: Nicht aufgelöstes externes Symbol "_PKEY_AppUserModel_ID".
    

    Auch ein Versuch mit

    #ifndef PKEY_AppUserModel_ID
    DEFINE_PROPERTYKEY(PKEY_AppUserModel_ID, 0x9F4C2855, 0x9F79, 0x4B39, 0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3, 5);
    #endif
    

    führte zur gleichen Fehlermeldung.

    Gibt es irgendwie eine Möglichkeit, diese Property unter Windows Vista irgendwie zu definieren bzw. es übersetzbar zu machen?

    Vielen Dank.

    Gruß,

    Tobias



  • Ich kenn die Funktion ja nicht, aber als genereller Tip. Wenn diese Funktion erst ab Windows 7 verfügbar ist und dein Programm soll aber abwärts kompatibel sein, dann machst du einfach zur Laufzeit des Programms einen Betriebssystem Versionscheck. Wenn die Version kleiner Windows 7 ist, programmierst du eben irgendeine Lösung dafür, wenn du Windows 7 vorfindest dann holst du dir die Funktion per LoadLibrary(...) und per GetProcAddress(..);



  • Hallo,

    vielen Dank für den Tipp. Ja, ich habe es so ähnlich gemacht. Es gibt allerdings noch eine einfachere Variante, die ich bei MSDN sonst in keinem Tutorial gefunden habe ( http://msdn.microsoft.com/en-us/library/dd378422(VS.85).aspx ). Mit dieser Funktion kann man über "LoadLibrary" etc. das einfach setzen, wenn Windows 7 vorhanden ist.

    Gruß,

    Tobias


Anmelden zum Antworten