Jump to content

Force GUI Window to Never to Gain Focus..?


Recommended Posts

Is there anyway to Force a GUI Window or GUI Process to Never to Gain Focus..??

so if you have a script running in the GUI window and you have some other windows open over the GUI window no matter what happens in the GUI window it wont take away the focus from any other open windows..??

is there any code or function for this type of thing..??

Link to comment
Share on other sites

  • Moderators

cypher175,

No doubt someone cleverer will come up with a way to intercept the FOCUS message, but I have used this short snippet of code to prevent a newly created GUI stealing focus. You might be able to do something similar for your GUI if you can identify the moments in the script when it tries to grab the focus:

$hCurrWnd = _WinAPI_GetForegroundWindow()
GUISetState(@SW_SHOW, $hMy_GUI)
WinActivate($hCurrWnd, "")

Not perfect I know - but it might do until you get a more comprehensive solution.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
Share on other sites

Building on Melba23's idea:

#include <WinApi.au3>
Global Const $WS_EX_NOACTIVATE = 0x08000000

$hCurrWnd = _WinAPI_GetForegroundWindow()
$hMy_GUI = GUICreate("TEST",500,500,-1,-1,-1, $WS_EX_NOACTIVATE)
$btn = GUICtrlCreateButton("OK",100,100)

GUISetState(@SW_SHOW, $hMy_GUI)
WinActivate($hCurrWnd, "")

GuiSetState()
While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $btn
            MsgBox(0,"","Clicked")
    EndSwitch
WEnd
Edited by ResNullius
Link to comment
Share on other sites

You don't need the WinAPI :)

Global Const $WS_EX_NOACTIVATE = 0x08000000

$hMy_GUI = GUICreate("TEST",500,500,-1,-1,-1, $WS_EX_NOACTIVATE)
$btn = GUICtrlCreateButton("OK",100,100)

GUISetState(@SW_SHOWNOACTIVATE, $hMy_GUI)

GuiSetState()
While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $btn
            MsgBox(0,"","Clicked")
    EndSwitch
WEnd

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to comment
Share on other sites

I wrote in the search bar at the AutoIt forum "GUI without focus" and the first results is the answer to this question. I do not understand why there is a search, if no one uses. 95% of the responses to my questions, I find it using search. Maybe it makes sense to write something like "Start Guide for AutoIt Search Engine".

:)

Link to comment
Share on other sites

Link to comment
Share on other sites

  • Moderators

ProgAndy,

Thanks for that - but where did you find it?

Yashied,

I agree with your comments about searching and it is always one of the tips I give to new members. But I must say that using Search succesfully can require a bit of luck - if you do not choose the right search terms it can be very frustrating. :-(

I find the Advanced Search much more useful, particularly if I am searching for something I know is there and have a vague memory of the thread contributors.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
Share on other sites

Here is what trancexxx came up with in a topic I made to ask a similar question

http://www.autoitscript.com/forum/index.php?showtopic=93630

the code in particular is:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


Global $hGui = GUICreate("Click-through topmost GUI", -1, -1, -1, -1, -1, BitOR($WS_EX_TOPMOST, $WS_EX_TRANSPARENT, $WS_EX_LAYERED)) ; you can omit WS_EX_LAYERED
;WinSetTrans($hGui, 0, 170) This was needed in my case
GUISetState()


While 1
    If GUIGetMsg() = -3 Then Exit
WEnd

Some Projects:[list][*]ZIP UDF using no external files[*]iPod Music Transfer [*]iTunes UDF - fully integrate iTunes with au3[*]iTunes info (taskbar player hover)[*]Instant Run - run scripts without saving them before :)[*]Get Tube - YouTube Downloader[*]Lyric Finder 2 - Find Lyrics to any of your song[*]DeskBox - A Desktop Extension Tool[/list]indifference will ruin the world, but in the end... WHO CARES :P---------------http://torels.altervista.org

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...