Jump to content

[SOLVED ] Win7 / Aero "Basic", headache

Recommended Posts

So I'm coding in win 10, ..every thing looks nice but then I think, what about XP, ...ugly, but I make it pretty again, no problem. Lets check in Win 7 and here is my conundrum.

Win 10, DRM is on, XP is off ( well, non-existant ), so far so good. I decide to make it the "switch" to enable or disable the checkbox in the context menu.

Win 7 ... I try to apply the same logic and:

DRM on:

DRM off:

now, "Windows 7 Basic": DRM is off

Question: how should I determine if to hide the check-mark or not?, Is there a way to know that this theme is ? or better yet, how can I know that the theme is classic ?

PS: I know that the code is not here but I think that my trend of thought would make it irrelevant anyway.

Edited by argumentum
Link to post
Share on other sites

got it !

#include <APIThemeConstants.au3>
#include <WinAPITheme.au3>
Func IsItAero()
    Local $s, $aData = _WinAPI_GetCurrentThemeName()
    If IsArray($aData) Then
        If _WinAPI_GetThemeDocumentationProperty($aData[0], $SZ_THDOCPROP_CANONICALNAME) = "Aero" Then
            Return True
            Return False
    Return False
EndFunc   ;==>IsItAero


Link to post
Share on other sites


The better approach is to

TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "Tray_ShowContextMenu")
Func Tray_ShowContextMenu()
    Local Enum $e_idEntry = 1001
    Local $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_AddMenuItem($hMenu, 'My entry', $e_idEntry)
    ... ...

..this way, the context menu is created on the fly and always on par with the current theme :D

Link to post
Share on other sites
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ioa747
      ; https://www.autoitscript.com/forum/topic/209550-tray-example/ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7 #include <StringConstants.au3> #include <TrayConstants.au3> Opt("TrayMenuMode", 3) ; These are options 1 and 2 for TrayMenuMode. Opt("TrayOnEventMode", 1) ; Enable TrayOnEventMode. Local $bPaused = False TraySetIcon(StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", $STR_NOCASESENSEBASIC, -1) - 1) & "\Icons\MyAutoIt3_Blue.ico") #Region === Tray_Menu === TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TogglePause") Local $idPaused = TrayCreateItem("Pause", -1, -1, $TRAY_ITEM_RADIO) TrayItemSetOnEvent(-1, "TogglePause") TrayItemSetState(-1, $TRAY_UNCHECKED) TrayCreateItem("") ; Create a separator line. Local $idExit = TrayCreateItem("Exit") TrayItemSetOnEvent(-1, "GoToExit") #EndRegion === Tray_Menu === ToolTip(@ScriptName & @CRLF & " ", @DesktopWidth / 2, @DesktopHeight / 5, "Started", 1) Sleep(3000) ToolTip("") While 1 _GetTrayStatus() Sleep(10) WEnd GoToExit() ;---------------------------------------------------------------------------------------- Func GoToExit() ; exit Exit EndFunc ;==>GoToExit ;---------------------------------------------------------------------------------------- Func _GetTrayStatus() While 1 ;~ ConsoleWrite("-loop" & @CRLF) If $bPaused = False Then ExitLoop Else ; calm down and stay Sleep(500) EndIf WEnd EndFunc ;==>_GetTrayStatus ;---------------------------------------------------------------------------------------- Func TogglePause() If $bPaused = False Then $bPaused = True TrayItemSetState($idPaused, $TRAY_CHECKED) ; $TRAY_UNCHECKED, $TRAY_CHECKED TraySetIcon(StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", $STR_NOCASESENSEBASIC, -1) - 1) & "\Icons\MyAutoIt3_Red.ico") Else $bPaused = False TrayItemSetState($idPaused, $TRAY_UNCHECKED) ; $TRAY_UNCHECKED, $TRAY_CHECKED TraySetIcon(StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", $STR_NOCASESENSEBASIC, -1) - 1) & "\Icons\MyAutoIt3_Blue.ico") EndIf EndFunc ;==>TogglePause ;----------------------------------------------------------------------------------------  
    • By MONaH-Rasta
      Opt('TrayAutoPause', 0) $iTray1 = TrayCreateItem('Tray 1') TrayItemSetState(-1, 1) TrayCreateItem('') $iTrayMenu1 = TrayCreateMenu('Tray Menu 1') $iTray2 = TrayCreateItem('Tray 2', $iTrayMenu1, -1, 1) TrayItemSetState(-1, 1) $iTray3 = TrayCreateItem('Tray 3', $iTrayMenu1, -1, 1) $iTray4 = TrayCreateItem('Tray 4', $iTrayMenu1, -1, 1) TrayCreateItem('') $iTrayMenu2= TrayCreateMenu('Tray Menu 2') $iTray5 = TrayCreateItem('Tray 5', $iTrayMenu2, -1, 1) TrayItemSetState(-1, 1) $iTray6 = TrayCreateItem('Tray 6', $iTrayMenu2, -1, 1) $iTray7 = TrayCreateItem('Tray 7', $iTrayMenu2, -1, 1) TrayCreateItem('') $iTray8 = TrayCreateItem('Tray 8') $iTray9 = TrayCreateItem('Tray 9') $iTray10 = TrayCreateItem('Tray 10') TrayItemSetState(-1, 1) While True Sleep(1000*5) WEnd When I click on Tray 3 / Tray 4 / Tray 6 / Tray 7 nothing happens. Only Tray 2 and Tray 5 stay checked.
      I have tried setting 
      Opt("TrayMenuMode", 8) In this case radio menuitems act like normal menuitems only looks different.
      I'm using AutoIt v3.3.14.5.
      Tested on Windows 10 LTSC 2019 (1809) x64 version: 10.0.17763 build 17763.475 and Windows Server 2008 R2.
      Tried run script x64 and x86 same result.
      Is this kind a bug or something?
    • By ur
      I need to read the status of OneDrive icon running in the taskbar and update the status in a log file.
      2nd part I can complete
      But the first part, how to read the status of tray menu icon.

      I need the text above from the tray icon.
      I looked into , but not that helpful.
    • By WoodGrain
      Hi All,
      I'm using UseTraySetIcon("shell32.dll", xx) to set my tray icon to a specific icon while running, is there a way I can specify this icon when I compile my script into an exe so my exe icon is the same?
    • By 9252Survive
      Hello Guys, 
      Is there a way to have Auto it Exe messages/line number when you hover over the tray icon just at it shows when you run Au3.?
      For an example, if I the script has paused due to WinWait or Sleep I could hover over the icon and it shows the line where it's at. Is there a way to achieve the same with the compiled exe? 
      Many thanks for the help! 
  • Create New...