maqleod Posted June 13, 2007 Share Posted June 13, 2007 (edited) I wrote this function for use in a script I'm writing, but I figured it might be useful for others, so here it is: ; ;_DockToScreenSide ;written by Jared Epstein #include <GUIConstants.au3> $parent = GUICreate("test",195,175,-1,-1,-1,-1) GUISetState() Do $msg = GUIGetMsg() _DockToScreenSide("test") Until $msg = $GUI_EVENT_CLOSE GUIDelete() Func _DockToScreenSide($hWindow) $hPos = WinGetPos($hWindow,"") if $hPos[0] + $hPos[2] > @DesktopWidth then WinMove($hWindow,"",@DesktopWidth - $hPos[2],$hPos[1]) endif if $hPos[1] + $hPos[3] > @DesktopHeight then WinMove($hWindow,"",$hPos[0],@DesktopHeight - $hPos[3]) endif if $hPos[0] < 1 then WinMove($hWindow,"",1,$hPos[1]) endif if $hPos[1] < 1 then WinMove($hWindow,"",$hPos[0],1) endif EndFunc Edited June 13, 2007 by maqleod [u]You can download my projects at:[/u] Pulsar Software Link to comment Share on other sites More sharing options...
James Posted June 13, 2007 Share Posted June 13, 2007 I tidied it up a bit: ;_DockToScreenSide ;written by Jared Epstein #include <GUIConstants.au3> $parent = GUICreate("test", 195, 175, -1, -1, -1, -1) GUISetState() Do $msg = GUIGetMsg() _DockToScreenSide($parent) Until $msg = $GUI_EVENT_CLOSE GUIDelete() Func _DockToScreenSide($hWindow) $hPos = WinGetPos($hWindow, "") If $hPos[0] + $hPos[2] > @DesktopWidth Then WinMove($hWindow, "", @DesktopWidth - $hPos[2], $hPos[1]) EndIf If $hPos[1] + $hPos[3] > @DesktopHeight Then WinMove($hWindow, "", $hPos[0], @DesktopHeight - $hPos[3]) EndIf If $hPos[0] < 1 Then WinMove($hWindow, "", 1, $hPos[1]) EndIf If $hPos[1] < 1 Then WinMove($hWindow, "", $hPos[0], 1) EndIf EndFunc ;==>_DockToScreenSide It doesn't work though. As in, nothing happens James Blog - Seriously epic web hosting - Twitter - GitHub - Cachet HQ Link to comment Share on other sites More sharing options...
MrCreatoR Posted June 13, 2007 Share Posted June 13, 2007 Here is my post with similar UDF a while ago - _WinAttach()! Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
maqleod Posted June 13, 2007 Author Share Posted June 13, 2007 I tidied it up a bit: ;_DockToScreenSide ;written by Jared Epstein #include <GUIConstants.au3> $parent = GUICreate("test", 195, 175, -1, -1, -1, -1) GUISetState() Do $msg = GUIGetMsg() _DockToScreenSide($parent) Until $msg = $GUI_EVENT_CLOSE GUIDelete() Func _DockToScreenSide($hWindow) $hPos = WinGetPos($hWindow, "") If $hPos[0] + $hPos[2] > @DesktopWidth Then WinMove($hWindow, "", @DesktopWidth - $hPos[2], $hPos[1]) EndIf If $hPos[1] + $hPos[3] > @DesktopHeight Then WinMove($hWindow, "", $hPos[0], @DesktopHeight - $hPos[3]) EndIf If $hPos[0] < 1 Then WinMove($hWindow, "", 1, $hPos[1]) EndIf If $hPos[1] < 1 Then WinMove($hWindow, "", $hPos[0], 1) EndIf EndFunc ;==>_DockToScreenSide It doesn't work though. As in, nothing happens James it doesn't work because you are using the window handle in the function instead of the window title. [u]You can download my projects at:[/u] Pulsar Software Link to comment Share on other sites More sharing options...
James Posted June 14, 2007 Share Posted June 14, 2007 That shouldn't matter. I also tried it, with the actual Window Title, with no luck Blog - Seriously epic web hosting - Twitter - GitHub - Cachet HQ Link to comment Share on other sites More sharing options...
maqleod Posted June 14, 2007 Author Share Posted June 14, 2007 That shouldn't matter. I also tried it, with the actual Window Title, with no luck I suppose it shouldn't, either way, it works on my system, I don't know why it wouldn't for others.it only works when you let go of the mouse while any portion of the window is off screen. [u]You can download my projects at:[/u] Pulsar Software Link to comment Share on other sites More sharing options...
James Posted June 14, 2007 Share Posted June 14, 2007 Tried that. No luck still. Its not my day. Blog - Seriously epic web hosting - Twitter - GitHub - Cachet HQ Link to comment Share on other sites More sharing options...
Valuater Posted June 14, 2007 Share Posted June 14, 2007 ... #include <GUIConstants.au3> Dim $OldPos $parent = GUICreate("test", 195, 175, -1, -1, -1, -1) GUISetState() Do $msg = GUIGetMsg() _DockToScreenSide($parent) Until $msg = $GUI_EVENT_CLOSE Func _DockToScreenSide($hWindow) Local $hPos = WinGetPos($hWindow, "") If $hPos = $OldPos Then Return If $hPos[0] + $hPos[2]/2 < @DesktopWidth/2 Then WinMove($hWindow, "", 1, $hPos[1]) Else WinMove($hWindow, "", @DesktopWidth - $hPos[2], $hPos[1]) EndIf $OldPos = $hPos EndFunc ;==>_DockToScreenSide 8) Link to comment Share on other sites More sharing options...
Alek Posted June 14, 2007 Share Posted June 14, 2007 another one Func docktoside($s_window) $pos = WinGetPos($s_window) if $pos[0] < 20 and $pos[1] < 20 and ($pos[1] <> $oldposy or $pos[0] <> $oldposx)Then WinMove($s_window,"",0,0) $oldposx = 0 $oldposy = 0 ElseIf $pos[0] > @DesktopWidth-$pos[2]-20 and $pos[1] < 20 and ($pos[1] <> $oldposy or $pos[0] <> $oldposx) Then WinMove($s_window,"",@DesktopWidth-$pos[2],0) $oldposy = 0 $oldposx = @DesktopWidth-$pos[2] Elseif $pos[0] < 20 and ($pos[1] <> $oldposy or $pos[0] <> $oldposx)Then WinMove($s_window,"",0,$pos[1]) $oldposy = $pos[1] $oldposx = 0 ElseIf $pos[0] > @DesktopWidth-$pos[2]-20 and ($pos[1] <> $oldposy or $pos[0] <> $oldposx)Then WinMove($s_window,"",@DesktopWidth-$pos[2],$pos[1]) $oldposy = $pos[1] $oldposx = @DesktopWidth-$pos[2] Elseif $pos[1] < 20 and ($pos[1] <> $oldposy or $pos[0] <> $oldposx) Then WinMove($s_window,"",$pos[0],0) $oldposx = $pos[0] $oldpost = 0 EndIf EndFunc [font="Impact"]Never fear, I is here.[/font] Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now