Jump to content

How to create a retractable bar using autoit


Recommended Posts

Hi dear
I want create retractable bar using autoit
I tried creating slider, but there's a problem with screen reader for the blind, so is there another retractable tape?
It is advisable to not accept dragging with the keybord only with  mouse
note:
This bar is needed in the process of raising and lowering the volume
I hope that there is a solution to do that
i waiting your responses.
Thanks in advance to all members and administrators

Link to comment
Share on other sites

  • Moderators
1 hour ago, nacerbaaziz said:

This bar is needed in the process of raising and lowering the volume

Something like GUICtrlCreateSlider in the help file?

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

  • Moderators

Sounds like the other way around, something that can be dragged by the mouse but not by keyboard. Screen readers for the blind are very touchy, and will cause issues if you're holding down keys. Unless I am mistaken on what the OP is asking.

Edited by JLogan3o13

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

In fact, I researched a lot and unfortunately I didn't find any solution
the last week I posed the shapes, but not in an independent participation, was Among my responses on another topic
And I was afraid that not paying attention to you
for that I decided to ask about this in a separate post
Hoping to find the result
I'm in urgent need.
please help me if you can.
I apologize to all of you if i has violated the forum rules

Link to comment
Share on other sites

I think you did not violate any rules of the forum ( @JLogan3o13 can confirm ).

I was looking on here, but I've never jumped into AutoHotKey so deep.

Maybe some veterans could help you :)

EDIT: this one could help you. The language is AutoHotKey, and it's already compiled. Just use it :)

Edited by FrancescoDiMuro

Click here to see my signature:

Spoiler

ALWAYS GOOD TO READ:

 

Link to comment
Share on other sites

If it is volume control you want, here are two methods.
1. The first requires you to download a free utility called "nircmd.exe" from  http://www.nirsoft.net/utils/nircmd.html.   I put the downloaded file, "nircmd.exe" in the same directory as the script.
When this example is running, move the cursor to the top edge of the desktop and to the far right hand corner.  This cursor position toggles the appearance and disappearance of the slider-bar window.  To exit press escape key when slider-bar window is visible and active.

2. The second method is running "SndVol.exe" which should already be in your Windows directory.  When this example is running, move the cursor to around the middle of the left hand edge of the desktop.  
While the cursor is over the pop-out window, the window will remain.  Click the close button on title bar of  the pop-out "Volume Mixer" window to exit script.

Hopefully one or both these methods won't interfere with the "screen readers for blind shortcuts".

"nircmd.exe" method:

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

; Needs nircmd.exe from:
; http://www.nirsoft.net/utils/nircmd.html

Example()

Func Example()
    Local $iSliderValueOld, $iSliderValue, $Show = 0
    $hWin = GUICreate("slider", 320, 70, -1, -1, $WS_POPUP)
    GUISetBkColor(0xFF00FF) ; will change background color

    Local $idSlider1 = GUICtrlCreateSlider(10, 10, 300, 50, -1, $TBS_TOOLTIPS)
    GUICtrlSetLimit(-1, 100, 0) ; change min/max value
    ;GUISetState(@SW_HIDE, $hWin)
    GUICtrlSetData($idSlider1, 50)
    GUICtrlSetTip(-1, GUICtrlRead($idSlider1))
    $iSliderValueOld = GUICtrlRead($idSlider1)
    Local $idMsg
    ; Loop until the user exits.
    Do
        $aMousePos = MouseGetPos()
        If ($aMousePos[0] > (@DesktopWidth - 100)) And ($aMousePos[1] < 5) Then
            If $Show Then
                GUISetState(@SW_HIDE, $hWin)
                $Show = 0
            Else
                GUISetState(@SW_SHOW, $hWin)
                $Show = 1
            EndIf
            While (($aMousePos[0] > (@DesktopWidth - 100)) And ($aMousePos[1] < 5))
                $aMousePos = MouseGetPos()
                Sleep(10)
            WEnd
        EndIf
        $idMsg = GUIGetMsg()
        If $idMsg = $idSlider1 Then
            $iSliderValue = GUICtrlRead($idSlider1)
            SoundSetWaveVolume(GUICtrlRead($idSlider1))
            ; "nircmd.exe" from  http://www.nirsoft.net/utils/nircmd.html
            Run("nircmd.exe changesysvolume " & ($iSliderValue - $iSliderValueOld) * 655.35)
            $iSliderValueOld = GUICtrlRead($idSlider1)
            GUICtrlSetTip($idSlider1, GUICtrlRead($idSlider1))
        EndIf

    Until $idMsg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

 

"SndVol.exe" method:

#include <WinAPI.au3>
#include <WindowsConstants.au3>

; Ref: https://www.autoitscript.com/forum/topic/119699-program-specific-volume-control-udf/
Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase

Run(@SystemDir & "\SndVol.exe")

$hWin = WinWaitActive("Volume Mixer")
$aWinPos = WinGetPos($hWin)
WinMove($hWin, "", 10 - $aWinPos[2], $aWinPos[1])

While 1
    If WinExists($hWin) = 0 Then Exit
    $tPoint = _WinAPI_GetMousePos()
    $hWnd = _WinAPI_WindowFromPoint($tPoint)
    ;ConsoleWrite($hWnd & @CRLF)
    $aWinPos = WinGetPos($hWin)
    If $hWin = $hWnd Then
        WinMove($hWin, "", 0, $aWinPos[1], $aWinPos[2], $aWinPos[3], 2)
        While $hWin = _WinAPI_GetAncestor($hWnd, $GA_ROOT) ; or $hWin = $hWnd
            Sleep(100)
            $tPoint = _WinAPI_GetMousePos()
            $hWnd = _WinAPI_WindowFromPoint($tPoint)
        WEnd
        $aWinPos = WinGetPos($hWin)
        WinMove($hWin, "", 10 - $aWinPos[2], $aWinPos[1])
    EndIf
    Sleep(100)
WEnd

 

Edited by Malkey
Added tooltip to slider in "nircmd.exe" method. And added a speed to WinMove().
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

×
×
  • Create New...