Set a window Always On Top

This AutoHotkey script is related to this post:

https://community.sdl.com/product-groups/translationproductivity/f/studio/35337/why-is-the-find-and-replace-window-is-not-always-on-top

where the poster asked to set the Find and Replace window on top of the Editor.

The following script will set any window Always On Top. It works with any window, not only the Find and Replace dialog box.

I use the Application key plus the V keys as a hotkey, but you can change it to your convenience.

☛ The Application Key is also called the Menu Key and when pressed it opens a contextual menu: Screenshot of an AutoHotkey script to set the Find and Replace window in Trados Studio always on top using the Application key and V.

AppsKey & v::
        while GetKeyState("AppsKey", "P")
                Sleep, 20
        Winset, Alwaysontop, Toggle, A
return

Add these lines to your script file and when the Find and Replace window (or any window) is open and active, press the hotkey. From now on the window will be on top on any window, not that just the Editor. And it'll be on top until you close the Find and Replace dialog box or until you press again the same hotkey.

  • If you close the Find and Replace dialog box, and re-open it later, you will need to press your hotkey again to set it always on top.
  • If you use another hotkey, you might need to edit the GetKeyState parameter accordingly.

I hope it helps!



Generated Image Alt-Text
[edited by: Trados AI at 4:31 AM (GMT 0) on 5 Mar 2024]
emoji
Parents Reply
  •   

    ok - I tightened up the script a little.  The updated version is here:

    ;------------------------------------------------------------------------------
    ; Ensure "Find and Replace" window is always on top when Trados Studio is active
    ; and not always on top when Trados Studio is not active
    ;------------------------------------------------------------------------------
    
    #Requires AutoHotkey v2.0
    
    global isOnTop := false
    
    $^f:: triggerFindOrReplace("Find")
    $^h:: triggerFindOrReplace("Replace")
    
    triggerFindOrReplace(action) {
        global isOnTop
        findTitle := "Find and Replace"
    
        if (action = "Find") {
            Send '^f'
        } else if (action = "Replace") {
            Send '^h'
        }
    
        If WinWaitActive(findTitle " ahk_exe SDLTradosStudio.exe", "", 2) {
            ; Ensure Always on Top when the window is active in Studio
            if !isOnTop {
                WinSetAlwaysOnTop(1, findTitle " ahk_exe SDLTradosStudio.exe")
                isOnTop := true
            }
        }
    }
    
    ; Check the active window every 100 milliseconds
    SetTimer(CheckActiveWindow, 100)
    
    CheckActiveWindow() {
        global isOnTop
        findTitle := "Find and Replace"
    
        if WinActive("ahk_exe SDLTradosStudio.exe") {
            if WinExist(findTitle " ahk_exe SDLTradosStudio.exe") {
                if !isOnTop {
                    WinSetAlwaysOnTop(1, findTitle " ahk_exe SDLTradosStudio.exe")
                    isOnTop := true
                }
            }
        } else {
            ; If Trados Studio is not active, remove the Always on Top status
            if isOnTop and WinExist(findTitle " ahk_exe SDLTradosStudio.exe") {
                WinSetAlwaysOnTop(0, findTitle " ahk_exe SDLTradosStudio.exe")
                isOnTop := false
            }
        }
    }

    Replace the one you had with this in the same way as before.  The new script refines and simplifies the handling of "Find and Replace" window behaviour in relation to Trados Studio.  It removes the reliance on the #HotIf directive, directly integrates checks for whether the relevant window is active, and uses a more consistent approach to setting the "Always on Top" status.  This makes the script more robust and less dependent on the exact timing or state changes within the application.

    Paul Filkin | RWS Group

    ________________________
    Design your own training!

    You've done the courses and still need to go a little further, or still not clear? 
    Tell us what you need in our Community Solutions Hub

    emoji
Children