XP-Skin an/aus abfrage

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

nicht ernsthaft, obwohl es wahrscheinlich sogar klappt <)

Code: Alles auswählen

Procedure IsThemeXP()
  If GetSystemMetrics_(#SM_CXVSCROLL) > 16
    ProcedureReturn #True
  EndIf
EndProcedure
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Aber nicht bei jedem Theme, aber bei den mitgelieferten von MS sollte das Funzen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

MLK hat geschrieben:nicht ernsthaft, obwohl es wahrscheinlich sogar klappt <)

Code: Alles auswählen

Procedure IsThemeXP()
  If GetSystemMetrics_(#SM_CXVSCROLL) > 16
    ProcedureReturn #True
  EndIf
EndProcedure
Gibt bei mir IMMER #True !
:evil:
BildBildBildBild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: XP-Skin an/aus abfrage

Beitrag von Josh »

Muss mich hier noch mal als Leichenschänder betätigen. Bis jetzt dachte ich, dass ich mit GetWindowTheme_(GadgetID(x)) ein brauchbares Ergebnis bekomme. Leider ist das aus einem für mich nicht nachvollziehbaren Grund nicht immer so, wie sich aus folgendem Beispiel ersehen lässt:

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    StringGadget(0, 8,  10, 306, 20, "Normal StringGadget...")
    Debug GetWindowTheme_(GadgetID(0))

    StringGadget(6, 8, 170, 306, 20, "Password", #PB_String_Password)
    Debug GetWindowTheme_(GadgetID(6))

    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

  EndIf
Jetzt verwende ich folgenden Code, wobei ich hoffe, dass sich da nicht auch wieder irgendein Hacken ergibt:

Code: Alles auswählen

Procedure.i IsAppThemed()

  If FindResource_(0, 1, #RT_MANIFEST)
    If IsThemeActive_()
      ProcedureReturn #True
    EndIf
  EndIf

EndProcedure

Debug IsAppThemed()
Evtl. muss noch eine Abfrage für Win8 eingebaut werden, da dort anscheinend Themes generell aktiviert sind. Habe ich aber noch nicht geprüft.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: XP-Skin an/aus abfrage

Beitrag von ts-soft »

Josh hat geschrieben: Jetzt verwende ich folgenden Code, wobei ich hoffe, dass sich da nicht auch wieder irgendein Hacken ergibt:.
Die Tatsache, das eine Manifest vorhanden ist, sagt nichts über Ihren Inhalt, muß ja nicht
automatisch für XP-Style sein :wink:

Ich wüßte jetzt aber beim besten willen nicht, wofür so eine Abfrage gut sein sollte. Eine
XP-Style Manifest sollte jede Executable haben, ansonsten ist das Programm uralt oder der
Programmierer nimmt auf die Wünsche der Anwender keinerlei Rücksicht.
Abschalten kann jeder den Style, aber hinzufügen ist für den Normaluser nicht möglich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten