ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Other Software > Developer's Corner

AutoHotKey: How to drag & drop _safely_

(1/1)

nosh:
I've written a script to combine two of my favorite programs, AvaFind & Xplorer². The script selects the results (files) from Avafind and drops them to an X² scrap pane. It's running fine but since this is a drag-drop operation I would like to eliminate any risk of dragging the wrong source (and/or) to the wrong target. Both apps are positioned by the script before the drag-drop but if one doesn't load due to some errors or a third app gets focus at the wrong time the results could be potentially disastrous. 8)

And ideas how to eliminate this risk? Just ideas without code sample would be very welcome too.


F11::
; AvaFind small thumb preview in X2 scrap pane
IfWinActive ,ahk_class AUI40WndClass
{   WinActivate ,ahk_class AUI40WndClass
            WinMove 0,0
        ; preview pane running
   IfWinExist, scrap² - Avafind Preview.cida
   {       WinActivate, scrap² - Avafind Preview.cida
         WinMove, 1281,0
         WinMaximize
         Sleep, 300         
         Send {Alt}vpt
         Sleep, 300
         Send {Alt}vau
         WinActivate ,ahk_class AUI40WndClass
         Sleep, 300      
         Send ^a
         MouseClickDrag, L, 600, 130, 2470, 900
         WinActivate, scrap² - Avafind Preview.cida
         Sleep, 1000
         Send ^r         
         return
   }      
   ; preview pane not started yet
            else
   {
      Run D:\Xplorer2\Avafind Preview.cida, , Max
      WinWait, scrap² - Avafind Preview.cida
      WinActivate, scrap² - Avafind Preview.cida
      WinMove, 1281,0
      Sleep, 300
      Send ^o
      Sleep, 300
      Send {Alt}vpt
      Sleep, 300
      Send {Alt}vad
      Sleep, 300      
      Send {Alt}vvr{{}pictures{}}{Enter}
      WinActivate ,ahk_class AUI40WndClass
      Sleep, 300            
      Send ^a
      MouseClickDrag, L, 600, 130, 2470, 900
      WinActivate, scrap² - Avafind Preview.cida
      Send ^r
      return
   }
}

; not Avafind - normal behavior
else
{   Send {F11}
   return
}
--- End quote ---

wr975:
Two ideas:

Set the window AlwaysOnTop (WinSet, AlwaysonTop, On, ...) to avoid another application stealing focus

Use IfWin(Not)Active to check if everything is OK, else goto error & abort.

nosh:
Will implement them both. Thanks!

Navigation

[0] Message Index

Go to full version