Jump to content
Sign in to follow this  
MKANET

Newbie needs help to hide/unhide GUI of a program

Recommended Posts

MKANET

Unfortunately, I didn't word my previous thread appropriately. The moderator was kind enough to allow me to start a new thread using the correct terminology...

Mcaffee at my work doesn't allow me to use cmdow.exe; even for legitimate reasons. Unfortunately, they won't make an exception just for me due to the size of the organization. Luckily, autoit scripts work fine; which is why I'm interested in learning autoit. I've been using batch files + commandline tools for years at my work; however, autoit can do so much more!!

Below is my best attempt and making a simple utility to hide/unhide the "GUI" a program. However, I need help with the syntax. I'm still getting used to using if statements in autoit.

Usage: mahider.exe /unhide calc.exe

or

mahider.exe /hide calc.exe

Thanks so much in advance!

-MKANET

------------------------------------------------------------------

AutoItSetOption("WinTitleMatchMode", 1)

if $CmdLine[0] > 0

Then

if $CmdLine[1] == "/hide"

Then

WinSetState($CmdLine[2], "", @SW_HIDE)

ElseIf $CmdLine[1] == "/unhide" Then

WinSetState($CmdLine[2], "", @SW_SHOW)

Else

EndIf

EndIf

------------------------------------------------------------------

Share this post


Link to post
Share on other sites
Melba23

All,

I am happy for this thread to continue - as long as it stays on the subject of hiding/showing GUIs. I do not want to see any move towards the hiding of processes. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
MKANET

I modified the code a little bit so the if and then are both on the same line. It's not giving an error anymore; however, its not working either ;)

AutoItSetOption("WinTitleMatchMode", 1)

if $CmdLine[0] > 0 Then

if $CmdLine[1] == "/hide" Then

WinSetState($CmdLine[2], "", @SW_HIDE)

ElseIf $CmdLine[1] == "/unhide" Then

WinSetState($CmdLine[2], "", @SW_SHOW)

Else

EndIf

EndIf

Share this post


Link to post
Share on other sites
Zedna

It seems your script is OK

just call it like this:

mahider.exe /unhide Calculator

Don't use calc.exe because it finds target window by title text and not by EXE name.

Edited by Zedna

Share this post


Link to post
Share on other sites
MKANET

Sorry for all the trouble, but for some reason, it's STILL just doing nothing after I type "mahider.exe /hide Calculator". I even tried using just the script:

mahider.au3 /hide Calculator

Im not getting errors... I just see a quick flash showing the autoit icon in my taskbar. Calculator is still there.

EDIT: Is it because I'm using a 64bit OS? I'm using 32bit autoit.

Edited by MKANET

Share this post


Link to post
Share on other sites
BrewManNH

Make sure that the title of the window you're passing to the script is the actual title of the window you want to close. Because when I test that on Windows 7, it works fine.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
MKANET

Edit: I got it working!! Even in my RDP session.

However How can I get the code to actually use the process name instead of the title name? Some of the processes have extremely long titles.

Thanks for all your help guys!

Edited by MKANET

Share this post


Link to post
Share on other sites
BrewManNH

As long as the titles are distinct enough from each other you could use a partial match to the title of the window instead of matching it only from the beginning. Using this AutoItSetOption("WinTitleMatchMode", with option 2 for instance, you would only have to match a part of the window title rather than starting from the beginning of the title.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
MKANET

Thanks. One more thing...

I want to add one more important command line argument to mahider.au3....

/activate

I've been trying and trying, I just can't get my head around how to add both unhide/hide AND activate commands together or have them in opposite order (see examples below). This will help me to make other tools with multiple arguments in the future!

such as:

mahide /hide Calculator

mahide /unhide /activate Calculator

mahide /activate /unhide Calculator

Below is a very simple code which will only allow one command at a time:

AutoItSetOption("WinTitleMatchMode", 1)
if $CmdLine[0] > 0 Then
if $CmdLine[1] == "/hide" Then
WinSetState($CmdLine[2], "", @SW_HIDE)
ElseIf $CmdLine[1] == "/unhide" Then
WinSetState($CmdLine[2], "", @SW_SHOW)
ElseIf $CmdLine[1] == "/activate" Then
WinActivate($CmdLine[2])
Else
EndIf
EndIf

Share this post


Link to post
Share on other sites
Zedna

Some concept:

AutoItSetOption("WinTitleMatchMode", 1)

Global $hide = False
Global $unhide = False
Global $activate = False
Global $title = ''

If $CmdLine[0] > 0 Then
    For $i = 1 To $CmdLine[0]
        If $CmdLine[$i] = "/hide" Then
            $hide = True
        ElseIf $CmdLine[$i] = "/unhide" Then
            $unhide = True
        ElseIf $CmdLine[$i] = "/activate" Then
            $activate = True
        Else
            $title = $CmdLine[$i]
        EndIf
    Next

    If $hide Then
        WinSetState($title, "", @SW_HIDE)
    ElseIf $unhide Then
        WinSetState($title, "", @SW_SHOW)
    EndIf

    If $activate Then WinActivate($title)
EndIf

Share this post


Link to post
Share on other sites
BrewManNH

It's not mentioned in WinSetState, but @SW_SHOWNORMAL is one of the options for GUISetState, it might work.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
MKANET

Thank you very much for all your help and suggestions. I can apply the concepts and syntax with other scripts I write as well.

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  

×