Sign in to follow this  
Followers 0
jonez34

If Statement Replacement

4 posts in this topic

I am trying to write up a GUI that allows registry modification. I have posted what I have so far but I am going to add way more check boxes and a few input boxes so I need to know if there is a way to replace all the If Then Elseif statements that I am going to use to save some typing. I have been looking in the help file about the case command but don't know if that is going to help me. For the code below I am using the $gui_unchecked and $gui_checked options so there are going to be a ton of If statements, is there any other way to do these?

Thanks in advance.

#include <guiconstants.au3>
#NoTrayIcon
GUICreate ("registry")
GUISetState (@SW_SHOW)
$applybutton = GUICtrlCreateButton ("Apply",10,360,60)
$cancelbutton = GUICtrlCreateButton ("Cancel",70,360,60)
$closebutton = GUICtrlCreateButton ("Close",320,360,60)
$rclickdesk = GUICtrlCreateCheckbox ("Disable Right Click On Desktop",10,40)
$rclickstart = GUICtrlCreateCheckbox ("Disable Right Click On Start Bar",10,60)
$removeicons = GUICtrlCreateCheckbox ("Remove All Icons From Taskbar",10,80)




While 1
    $msg = GUIGetMsg ()
    if $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton Or $msg = $closebutton Then
        ExitLoop
    EndIf
    if $msg = $applybutton Then
        If GUICtrlRead ($rclickdesk) = $GUI_CHECKED Then
            RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoViewContextMenu","REG_DWORD","1")
        Elseif GUICtrlRead ($rclickdesk) = $GUI_UNCHECKED Then
             RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoViewContextMenu")
        EndIf
        
    If GUICtrlRead ($rclickstart) = $GUI_CHECKED Then
        RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayContextMenu","REG_DWORD","1")
    ElseIf GUICtrlRead ($rclickstart) = $GUI_UNCHECKED Then
        RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayContextMenu")
    Elseif GUICtrlRead ($removeicons) = $GUI_CHECKED Then
        RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoViewTrayItems","REG_DWORD","1")
    EndIf
    
EndIf

;If GUICtrlRead ($removeicons) = $GUI_CHECKED Then
    ;RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayItemsDisplay","REG_DWORD","1")
;ElseIf GUICtrlRead ($removeicons) = $GUI_UNCHECKED Then
    ;RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayItemsDisplay")
;EndIf

WEnd

Share this post


Link to post
Share on other sites



maybe...

#include <guiconstants.au3>
#NoTrayIcon

GUICreate("registry")
$applybutton = GUICtrlCreateButton("Apply", 10, 360, 60)
$cancelbutton = GUICtrlCreateButton("Cancel", 70, 360, 60)
$closebutton = GUICtrlCreateButton("Close", 320, 360, 60)
$rclickdesk = GUICtrlCreateCheckbox("Disable Right Click On Desktop", 10, 40)
$rclickstart = GUICtrlCreateCheckbox("Disable Right Click On Start Bar", 10, 60)
$removeicons = GUICtrlCreateCheckbox("Remove All Icons From Taskbar", 10, 80)
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton Or $msg = $closebutton Then ExitLoop

    If $msg = $applybutton Then
        If _IsChecked($rclickdesk) Then
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoViewContextMenu", "REG_DWORD", "1")
        Else
            RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoViewContextMenu")
        EndIf

        If _IsChecked($rclickstart) Then
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoTrayContextMenu", "REG_DWORD", "1")
        Else
            RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoTrayContextMenu")
        EndIf
        
        If _IsChecked($removeicons) Then
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoViewTrayItems", "REG_DWORD", "1")
        EndIf
    EndIf

    ;If GUICtrlRead ($removeicons) = $GUI_CHECKED Then
    ;RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayItemsDisplay","REG_DWORD","1")
    ;ElseIf GUICtrlRead ($removeicons) = $GUI_UNCHECKED Then
    ;RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoTrayItemsDisplay")
    ;EndIf

WEnd


Func _IsChecked($control)
    Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

Use two dimensional array containing checkbox's control ID and registry address

Make For Loop for creating checkboxes and also For Loop for reading if it's checked an if so then use RegDelete/RegWrite with value from arry.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

I made it for you :P

#NoTrayIcon
#include <guiconstants.au3>

Global $a_ctrl[3][2]
Global $reg_key = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"

GUICreate ("registry")
$applybutton = GUICtrlCreateButton ("Apply",10,360,60)
$cancelbutton = GUICtrlCreateButton ("Cancel",70,360,60)
$closebutton = GUICtrlCreateButton ("Close",320,360,60)

$a_ctrl[0][0] = GUICtrlCreateCheckbox ("Disable Right Click On Desktop",10,40)
$a_ctrl[0][1] = "NoViewContextMenu"
$a_ctrl[1][0]= GUICtrlCreateCheckbox ("Disable Right Click On Start Bar",10,60)
$a_ctrl[1][1] = "NoTrayContextMenu"
$a_ctrl[2][0] = GUICtrlCreateCheckbox ("Remove All Icons From Taskbar",10,80)
$a_ctrl[2][1] = "NoViewTrayItems"

GUISetState (@SW_SHOW)

While 1
    $msg = GUIGetMsg ()
    if $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton Or $msg = $closebutton Then ExitLoop
    
    if $msg = $applybutton Then
        For $i = 0 To 2
            If _IsChecked($a_ctrl[$i][0]) Then
                RegWrite ($reg_key,$a_ctrl[$i][1],"REG_DWORD","1")
;~              MsgBox(0,$reg_key,$a_ctrl[$i][1] & @CRLF & "ON")
            Else
                RegDelete ($reg_key,$a_ctrl[$i][1])
;~              MsgBox(0,$reg_key,$a_ctrl[$i][1] & @CRLF & "OFF")
            EndIf
        Next
    EndIf
WEnd

Func _IsChecked($control)
    Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc

commented MsgBox's are for visual testing.

Edited by Zedna

Share this post


Link to post
Share on other sites

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
Sign in to follow this  
Followers 0