topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • October 21, 2018, 02:02 PM
  • Proudly celebrating 13 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - CrawlerBrinx [ switch to compact view ]

Pages: [1]
1
Skrommel's Software / Re: MoveInactiveWin
« on: October 11, 2012, 10:19 AM »
The code in the previous message broke alt + drag in the inactive window completely.
Ultimate version
#if !WinUnderMousePointerActive()
    !Lbutton::KDE_WinMove("Lbutton")
#if
 
WinUnderMousePointerActive()
{
    MouseGetPos,,, hWnd
    return WinActive("ahk_id" hWnd)
}
 
KDE_WinMove(sButton)
{
    if !GetKeyState(sButton, "P")
        Exit
 
    CoordMode, Mouse
    MouseGetPos, x1, y1, id
    WinExist("ahk_id" . id)
 
    WinGetClass, winClass
    if (winClass == "WorkerW" || winClass == "Progman")
        Exit
 
    WinGet, win, MinMax
    if (win)
        Exit
 
    SetWinDelay, 0
    WinGetPos, winX1, winY1
    while GetKeyState(sButton, "P")
    {
        MouseGetPos, x2, y2
        x2 -= x1, y2 -= y1, winX2 := winX1 + x2, winY2 := winY1 + y2
        WinMove,,, winx2, winY2
        Sleep 15
    }
}
code by creature.ws


2
Skrommel's Software / Re: MoveInactiveWin
« on: October 11, 2012, 05:02 AM »
Some progress achieved:
(thanks to Creature.ws)
Spoiler
!LButton::KDE_WinMove("LButton")
 
KDE_WinMove(sButton)
{
    if !GetKeyState(sButton, "P")
        Exit
 
    SetWinDelay, 0
    CoordMode, Mouse
    MouseGetPos, x1, y1, id
    WinExist("ahk_id" . id)
 
    if WinActive()
        Exit
 
    WinGetClass, winClass
    if (winClass == "WorkerW")
        Exit
 
    WinGet, win, MinMax
    if (win)
        Exit
 
    WinGetPos, winX1, winY1
    while GetKeyState(sButton, "P")
    {
        MouseGetPos, x2, y2
        x2 -= x1, y2 -= y1, winX2 := winX1 + x2, winY2 := winY1 + y2
        WinMove,,, winx2, winY2
        Sleep 15
    }
}

This script now doesn't move the active window, but you can't now highlight a text in the browser while holding ALT.

3
Skrommel's Software / Re: LabelControl
« on: October 10, 2012, 05:48 PM »
Resolved fixed (thanks to Pulover):
Spoiler
;LabelControl.ahk
; Overlays controls with a Number for direct access via Ctrl-Number
;Skrommel @2006

#SingleInstance,Force
#Persistent
#NoEnv
SetWinDelay,0
SetControlDelay,0
SetBatchLines,-1

applicationname=LabelControl

Gosub,INIREAD
Gosub,TRAYMENU

SysGet,thumbwidth,10 ;SM_CXHTHUMB
thumbwidth+=5
same=8
down=0
;WM_CTLCOLOREDIT:=0x0133
;OnMessage(0x0133,"WM_CTLCOLOREDIT")


ScrollLock::
If down=1
  Return
down=1

;----- Create window for the overlays
WinMove,ahk_id %guiid%,,0,0,0,0
Gui,Destroy
WinGet,winid,ID,A
WinGetPos,winx,winy,winw,winh,ahk_id %winid%
Gui,-Caption +Border +ToolWindow +AlwaysOnTop
Gui,Color,EEEEEE
Gui,Margin,0,0
Gui,Show,x0 y0 w0 h0 NoActivate,%applicationname%Gui
WinGet,guiid,ID,%applicationname%Gui
WinSet,TransColor,EEEEEE,ahk_id %guiid%
WinMove,ahk_id %guiid%,,-%winw%,-%winh%,%winw%,%winh%
WinMove,ahk_id %guiid%,,%winx%,%winy%

;----- Find menuitems
lines=
hMenu:=DllCall("GetMenu","UInt",winid)
menuitemcount:=DllCall("GetMenuItemCount","UInt",hMenu)
VarSetCapacity( rect, 16, 0 )
Loop,%menuitemcount%
{
  menuitem:=A_Index-1
  DllCall("GetMenuItemRect","UInt",winid,"UInt",hMenu,"UInt",menuitem,"UInt",&rect)
  x1 := DecodeInteger( "int4", &rect, 0 )
  y1 := DecodeInteger( "int4", &rect, 4 )
;  x2 := DecodeInteger( "int4", &rect, 8 )
;  y2 := DecodeInteger( "int4", &rect, 12 )
  line:=100000000+Floor((y1-winy)/same)*10000+x1-winx+4
  lines=%lines%%line%%A_Tab%0%A_Tab%WindowMenu`n
}


/*
;----- Find titlebar buttons
TITLEBARINFO
{
  DWORD cbSize;
  RECT rcTitleBar;
  DWORD rgstate[CCHILDREN_TITLEBAR+1];
}
DllCall("GetTitleBarInfo",UInt,winid,PTITLEBARINFO,pti)
);

Members:
  cbSize
Specifies the size, in bytes, of the structure. The caller must set this to sizeof(TITLEBARINFO).
  rcTitleBar
Pointer to a RECT structure that receives the coordinates of the title bar. These coordinates include all title-bar elements except the window menu.
  rgstate
Pointer to an array that receives a DWORD value for each element of the title bar. The following are the title bar elements represented by the array. Index Title Bar Element
0 The title bar itself.
1 Reserved.
2 Minimize button.
3 Maximize button.
4 Help button.
5 Close button.

Each array element is a combination of one or more of the following values.

Value Meaning
STATE_SYSTEM_FOCUSABLE The element can accept the focus.
STATE_SYSTEM_INVISIBLE The element is invisible.
STATE_SYSTEM_OFFSCREEN The element has no visible representation.
STATE_SYSTEM_UNAVAILABLE The element is unavailable.
STATE_SYSTEM_PRESSED The element is in the pressed state.
*/

;----- Find controls
WinGet,ctrls,ControlList,ahk_id %winid%
Loop,Parse,ctrls,`n
{
  class:=A_LoopField
  If class Not Contains %ignorecontrols%
  If class Contains %allcontrols%
  {
    ControlGet,ctrlid,Hwnd,,%class%,ahk_id %winid%
    ControlGet,style,Style,,,ahk_id %ctrlid%
    ControlGet,enabled,Enabled,,,ahk_id %ctrlid%
    ControlGet,visible,Visible,,,ahk_id %ctrlid%
    text=
    If (InStr(class,"Link"))
      ControlGetText,text,,ahk_id %ctrlid%
    SetFormat,Integer,Hex
    parent:=DllCall("GetParent","uint",ctrlid)
    WinGetClass,parentclass,ahk_id %parent%
    StringRight,style,style,1
    SetFormat,Integer,D

;    If !(InStr(class,"Edit") And InStr(parentclass,"Combo"))
    If !(InStr(class,"Link") And text="")
    If !(InStr(class,"Static"))
    If !(InStr(class,"Button") And style=0x7)
    If visible=1
    If enabled=1
    {
      ControlGetPos,ctrlx,ctrly,ctrlw,ctrlh,%class%,ahk_id %winid%
      If class Contains %toolbarcontrols%
        Gosub,TOOLBARBUTTONS
      Else
      If class Contains %tabcontrols%
        Gosub,TABITEMS
      Else
      If class Contains %headercontrols%
        Gosub,HEADERITEMS
      Else
      If class Contains SysListView
        Gosub,LISTVIEWITEMS
      Else
      If class Contains TreeView
        Gosub,TREEVIEWITEMS
      Else
      If class Contains %searchcontrols%
        Gosub,SEARCHCONTROL         
      Else
      If class Contains Combo
      {
        line:=100000000+Floor(ctrly/same)*10000+ctrlx
        lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
        line:=100000000+Floor(ctrly/same)*10000+ctrlx+ctrlw-thumbwidth
        lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
      }
      Else
      {
        line:=100000000+Floor(ctrly/same)*10000+ctrlx
        lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
      }
    }
  }
}
Sort,lines
StringTrimRight,lines,lines,1

;----- Display numbers
counter=-1
Loop,Parse,lines,`n
{
  StringSplit,part_,A_LoopField,%A_Tab%
  StringMid,ctrly,part_1,2,4
  StringMid,ctrlx,part_1,6,4
  olddispx:=dispx
  olddispy:=dispy
  dispx:=ctrlx-4
  dispy:=ctrly*same-4
  If (olddispx=dispx And olddispy=dispy)
    Continue
  counter+=1
  GUi,Add,Edit,x%dispx% y%dispy%,%counter%
  control%counter%x:=ctrlx+5
  control%counter%y:=ctrly*same+5
  control%counter%class:=part_3
  control%counter%id:=part_2
}

;ToolTip,%lines%

;----- Input the number
number=
Loop
{
  Sleep,0
  digit=
  Loop
  {
    Sleep,0
    Input, key, L1
   If key is number
    {
      number=%digit%%key%
      If (StrLen(number)>StrLen(counter))
        number=
      ToolTip,%number%
      Sleep,200
    }
   If ErrorLevel = NewInput
      break
    digit=%number%
  }
  GetKeyState,state,ScrollLock,P
  If state=U
    Break
}
Return


ScrollLock Up::
If down=0
  Return
Input
Gui,Destroy
ToolTip,
down=0
If number=
  Return

;----- Activate the control
MouseGetPos,mousex,mousey
ctrlx:=control%number%x
ctrly:=control%number%y
class:=control%number%class
ctrlid:=control%number%id

If class Contains %focuscontrols%
  ControlFocus,,ahk_id %ctrlid%
Else
;If class Contains %tabcontrols%
;{
;  ControlFocus,,ahk_id %ctrlid%
;  Send,^{Tab}
;}
;Else
;If class Contains %toolbarcontrols%
  MouseClick,Left,% ctrlx+4,% ctrly+4,1,0
;Else
;  MouseClick,Left,%ctrlx%,%ctrly%,1,0
;  ControlClick,,ahk_id %ctrlid%

If movemouse=1
  MouseMove,% ctrlx+4,% ctrly+4,0
Else
  MouseMove,%mousex%,%mousey%,0
Return


LISTVIEWITEMS:
;SetFormat,Integer,D
hw_target:=winid
x1=
x2=
y1=
LVM_GETITEMCOUNT:=0x1004
LVM_FIRST:=0x1000
LVM_GETSUBITEMRECT:=LVM_FIRST + 56
LVM_GETITEMRECT:=0x1000
LVIR_BOUNDS:=LVM_FIRST + 14
LVIR_ICON:=0x0001
LVIR_LABEL:=0x0002
LVIR_SELECTBOUNDS:=0x0003
LVS_SORTASCENDING:=0x10
LVS_SORTDESCENDING:=0x20
LVM_SCROLL:=LVM_FIRST + 20
LVM_GETITEMRECT:=4110
LVM_GETITEMPOSITION:=4112

LVM_GETITEMCOUNT:=4100
SendMessage,%LVM_GETITEMCOUNT%,0,0,%class%,ahk_id %hw_target%
buttons:=ErrorLevel
VarSetCapacity( rect, 16, 0 )

WinGet, pid_target, PID, ahk_id %hw_target%
hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )

Loop,%buttons%
{
  remote_buffer := DllCall( "VirtualAllocEx"
                      , "uint", hp_explorer
                      , "uint", 0
                      , "uint", 0x1000
                      , "uint", 0x1000                        ; MEM_COMMIT
                      , "uint", 0x4 )                           ; PAGE_READWRITE
 
  SendMessage,%LVM_GETITEMRECT%,% A_Index-1,%remote_buffer%,%class%,ahk_id %hw_target%

  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%
;
  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
    Continue
  If (x2-x1<10)
    Continue
  If (x1>ctrlw Or y1>ctrlh Or x1<0 Or y1<0)
    Continue

x1:=x1+20
y1:=y1+4
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x1 ;+thumbwidth
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n

result := DllCall( "VirtualFreeEx"
                 , "uint", hp_explorer
                 , "uint", remote_buffer
                 , "uint", 0
                 , "uint", 0x8000 )                           ; MEM_RELEASE
}
result := DllCall( "CloseHandle", "uint", hp_explorer )
Return



TREEVIEWITEMS:
;SetFormat,Integer,D
hw_target:=winid
x1=
x2=
y1=
LVM_GETITEMCOUNT:=0x1004
LVM_FIRST:=0x1000
LVM_GETSUBITEMRECT:=LVM_FIRST + 56
LVM_GETITEMRECT:=0x1000
LVIR_BOUNDS:=LVM_FIRST + 14
LVIR_ICON:=0x0001
LVIR_LABEL:=0x0002
LVIR_SELECTBOUNDS:=0x0003
LVS_SORTASCENDING:=0x10
LVS_SORTDESCENDING:=0x20
LVM_SCROLL:=LVM_FIRST + 20
LVM_GETITEMRECT:=4110
LVM_GETITEMPOSITION:=4112
TVM_GETITEMRECT:=4356
TVM_GETVISIBLECOUNT:=4368

SendMessage,%TVM_GETVISIBLECOUNT%,0,0,%class%,ahk_id %hw_target%
buttons=%ErrorLevel%


;TVM_GETNEXTITEM TVGN_FIRSTVISIBLE
SendMessage,0x110A,5,0,%class%,ahk_id %hw_target%
item=%ErrorLevel%

TVM_GETITEMHEIGHT := 0x1100 + 28
SendMessage,%TVM_GETITEMHEIGHT%,0,0,%class%,ahk_id %hw_target%
nodeheight=%ErrorLevel%

/*
VarSetCapacity( rect, 16, 0 )

WinGet, pid_target, PID, ahk_id %hw_target%

hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )
*/

y1:=-nodeheight+4
Loop,%buttons%
{
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1:=1
  x2:=11
  y1+=%nodeheight%
;MsgBox,%y1% - %nodeheight%

/*

  remote_buffer := DllCall( "VirtualAllocEx"
                      , "uint", hp_explorer
                      , "uint", 0
                      , "uint", 0x1000
                      , "uint", 0x1000                        ; MEM_COMMIT
                      , "uint", 0x4 )                           ; PAGE_READWRITE
 
  ;get root
  SendMessage,0x110A,0,0,%class%,ahk_id %hw_target%
  root:=ErrorLevel
   
  ;get current selection
  SendMessage,0x110A,9,0,%class%,ahk_id %hw_target%
  item:=ErrorLevel

  InsertInteger(item,rect,0)
  result  := DllCall( "WriteProcessMemory"
                  ,"uint", hp_explorer
                  ,"uint", remote_buffer
                  ,"uint", &rect
                  ,"uint", 16
                  ,"uint", 0 )

  ;get rectangle
  SendMessage,%TVM_GETITEMRECT%,1,%remote_buffer%,%class%,ahk_id %hw_target%

  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
MsgBox,%item%-%x1%-%x2%-%y1%
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%
;

*/
  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
    Continue
  If (x2-x1<10)
    Continue
  If (x1>ctrlw Or y1>ctrlh)
    Continue

x1:=x1+20
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x1 ;+thumbwidth
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n

/*
result := DllCall( "VirtualFreeEx"
                 , "uint", hp_explorer
                 , "uint", remote_buffer
                 , "uint", 0
                 , "uint", 0x8000 )                           ; MEM_RELEASE
*/
}
;result := DllCall( "CloseHandle", "uint", hp_explorer )
Return




TREEVIEWITEMS_OLD:
;SetFormat,Integer,D
hw_target:=winid
WinGet, pid_target, PID, ahk_id %hw_target%
x1=
x2=
y1=
LVM_FIRST:=0x1000
LVM_GETSUBITEMRECT:=LVM_FIRST + 56
LVM_GETITEMRECT:=0x1000
LVIR_BOUNDS:=LVM_FIRST + 14
LVIR_ICON:=0x0001
LVIR_LABEL:=0x0002
LVIR_SELECTBOUNDS:=0x0003
LVS_SORTASCENDING:=0x10
LVS_SORTDESCENDING:=0x20
LVM_SCROLL:=LVM_FIRST + 20
TVM_GETITEMRECT:=4356

VarSetCapacity(rect,16,1)

hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )

Loop,1
{
  remote_buffer := DllCall( "VirtualAllocEx"
                    , "uint", hp_explorer
                    , "uint", 0
                    , "uint", 0x1000
                    , "uint", 0x1000                        ; MEM_COMMIT
                    , "uint", 0x4 )                           ; PAGE_READWRITE

  ;get root
  SendMessage,0x110A,0,0,%class%,ahk_id %hw_target%
  root:=ErrorLevel
   
  ;get current selection
  SendMessage,0x110A,9,0,%class%,ahk_id %hw_target%
  item:=ErrorLevel

  InsertInteger(root,rect,0)
ControlGet,ctrlid,Hwnd,,%class%,ahk_id %hw_target%
;DllCall("SendMessage",UInt,ctrlid,UInt,TVM_GETITEMRECT,UInt,1,UInt,rect)

  SendMessage,%TVM_GETITEMRECT%,1,%rect%,,ahk_id %ctrlid% ;%hw_target%

  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )

  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
MsgBox,%root%;%item%;%x1%;%x2%;%y1%
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%
;
;  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
;    Continue
;  If (x2-x1<10)
;    Continue
;  If (x1>ctrlw Or y1>ctrlh)
;    Continue
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x1 ;+thumbwidth
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n

  result := DllCall( "VirtualFreeEx"
                   , "uint", hp_explorer
                   , "uint", remote_buffer
                   , "uint", 0
                   , "uint", 0x8000 )                           ; MEM_RELEASE
}
result := DllCall( "CloseHandle", "uint", hp_explorer )
Return





TREEVIEWITEMS_NEW:
   GetHandles()   ;get handles of Explorer and TreeView
   MsgBox % GetTVPath()   
return

;------------------------------------------------------------------------------------------------
; Get the text of the root item (usualy My Documents)
GetTVPath()
{
   global
   local bufID, r_tvi, txt, item, epath, root

   ;open remote buffers
   bufID   := RemoteBuf_Open(hwEx, 64)
    bufAdr   := RemoteBuf_GetAdr(bufID)

   r_tvi   := RemoteBuf_Open(hwEx, 40)
   r_adr   := RemoteBuf_GetAdr(r_tvi)

   ;get root
   SendMessage 0x110A,   0, 0, ,ahk_id %hwTV%
   root = %ErrorLevel%
   
   ;get current selection
   SendMessage 0x110A,   9, 0, ,ahk_id %hwTV%
   item = %ErrorLevel%


   VarSetCapacity(sTV,   40, 1)     ;10x4 = 40
   InsertInteger(0x011,   sTV, 0)    ;set mask to TVIF_TEXT | TVIF_HANDLE  = 0x001 | 0x0010
   InsertInteger(bufAdr,  sTV, 16)  ;set txt pointer
   InsertInteger(127,     sTV, 20)  ;set txt size
 
 
  TVM_GETITEMRECT:=4356

TVM_GETITEMCOUNT:=0x1004

   VarSetCapacity(txt, 64, 1)
   loop
   {
      ;set TVITEM item handle
      InsertInteger(item, sTV, 4)   
      RemoteBuf_Write(r_tvi, sTV, 40)

      ;send tv_getitem message
      SendMessage 0x110C, 0, r_adr ,, ahk_id %hwTV%
      hItem:=ErrorLevel
      ;read from remote buffer and append the path
      RemoteBuf_Read(bufID, txt, 64 )

      SendMessage,%TVM_GETITEMRECT%,%hItem%,%r_adr%,,ahk_id %hwTV%
     
  x1 := DecodeInteger( "int4", &r_adr, 0 )
  x2 := DecodeInteger( "int4", &r_adr, 8 )
  y1 := DecodeInteger( "int4", &r_adr, 4 )

      MsgBox,%x1% - %hItem%


      ;check for the drive
      StringGetPos i, txt, :
      if i > 0
      {
         StringMid txt, txt, i, 2
         epath = %txt%\%epath%
         break
      }
      else
         epath = %txt%\%epath%

      ;get parent   TVGN_PARENT = 3
      SendMessage 0x110A,   3, item, ,ahk_id %hwTV%
      item = %ErrorLevel%
      if (item = root)
         break
   }

   RemoteBuf_Close( bufID )
   RemoteBuf_Close( r_tvi )

   StringLeft epath, epath, strlen(epath)-1
   return epath
}

;------------------------------------------------------------------------------------------------
; Get Explorer and its TreeView handle
GetHandles()
{
   global
   ;get tree view handle
   hwEx   := WinExist("ahk_class ExploreWClass")

   hwTV   := FindWindowExId(hwEx, "BaseBar", 0)
   hwTV   := FindWindowExID(hwTV, "ReBarWindow32", 0)
   hwTV   := FindWindowExID(hwTV, "SysTreeView32", 100)
}

;------------------------------------------------------------------------------------------------
; Iterate through controls with the same class, find the one with ctrlID and return its handle
; Used for finding a specific control
;
FindWindowExID(dlg, className, ctrlId)
{
   local ctrl, id

   ctrl = 0
   Loop
   {
      ctrl := DllCall("FindWindowEx", "uint", dlg, "uint", ctrl, "str", className, "uint", 0 )
      if (ctrlId = "0")
      {
         return ctrl
      }

      if (ctrl != "0")
      {
         id := DllCall( "GetDlgCtrlID", "uint", ctrl )
         if (id = ctrlId)
            return ctrl             
      }
      else
         return 0
   }

}


InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
; The caller must ensure that pDest has sufficient capacity.  To preserve any existing contents in pDest,
; only pSize number of bytes starting at pOffset are altered in it.
{
   Loop %pSize%  ; Copy each byte in the integer into the structure as raw binary data.
      DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
}

;---------------------------------------------
; Open remote buffer
;
; ARGUMENTS: p_handle   - HWND of buffer host
;          p_size      - Size of the buffer
;
; Returns   buffer handle (>0)
;         -1 if unable to open process
;         -2 if unable to get memory
;--------------------------------------------
RemoteBuf_Open(p_handle, p_size)
{
   global
   local proc_hwnd, bufAdr, pid

   
   WinGet, pid, PID, ahk_id %p_handle%
   proc_hwnd := DllCall( "OpenProcess"
                         , "uint", 0x38            ; PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE (0x0020)
                         , "int", false
                         , "uint", pid )

   if proc_hwnd = 0
      return -1
       
   bufAdr   := DllCall( "VirtualAllocEx"
                        , "uint", proc_hwnd
                        , "uint", 0
                        , "uint", p_size         ; SIZE
                        , "uint", 0x1000            ; MEM_COMMIT
                        , "uint", 0x4 )            ; PAGE_READWRITE
   
   if bufAdr =
      return -2

   RemoteBuf_idx += 1
   RemoteBuf_%RemoteBuf_idx%_handle  := proc_hwnd
   RemoteBuf_%RemoteBuf_idx%_size     := p_size
   RemoteBuf_%RemoteBuf_idx%_adr     := bufAdr

   return RemoteBuf_idx
}

;----------------------------------------------------
; Close remote buffer.
;----------------------------------------------------
RemoteBuf_Close(p_bufHandle)
{
   global
   local handle, adr

   handle   := RemoteBuf_%p_bufHandle%_handle
   adr      := RemoteBuf_%p_bufHandle%_adr

   if handle = 0
      return 0

    result := DllCall( "VirtualFreeEx"
                     , "uint", handle
                     , "uint", adr
                     , "uint", 0
                     , "uint", 0x8000 )            ; MEM_RELEASE
   

   DllCall( "CloseHandle", "uint", handle )

   RemoteBuf_%p_bufHandle%_adr       =
   RemoteBuf_%RemoteBuf_idx%_size    =
   RemoteBuf_%RemoteBuf_idx%_handle =

   return result
}
;----------------------------------------------------
; Read remote buffer and return buffer
;----------------------------------------------------
RemoteBuf_Read(p_bufHandle, byref p_localBuf, p_size, p_offset = 0)
{
   global
   local handle, adr, size, localBuf

   handle   := RemoteBuf_%p_bufHandle%_handle
   adr      := RemoteBuf_%p_bufHandle%_adr
   size   := RemoteBuf_%p_bufHandle%_size


   if (handle = 0) or (adr = 0) or (offset >= size)
      return -1

    result := DllCall( "ReadProcessMemory"
                  , "uint", handle
                  , "uint", adr + p_offset
                  , "uint", &p_localBuf
                  , "uint", p_size
                  , "uint", 0 )
   
   return result
}

;----------------------------------------------------
; Write to remote buffer, local buffer p_local.
;----------------------------------------------------
RemoteBuf_Write(p_bufHandle, byref p_local, p_size, p_offset=0)
{
   global
   local handle, adr, size

   handle   := RemoteBuf_%p_bufHandle%_handle
   adr      := RemoteBuf_%p_bufHandle%_adr
   size   := RemoteBuf_%p_bufHandle%_size
   

   if (handle = 0) or (adr = 0) or (offset >= size)
      return -1

   result  := DllCall( "WriteProcessMemory"
                  ,"uint", handle
                  ,"uint", adr + p_offset
                  ,"uint", &p_local
                  ,"uint", p_size
                  ,"uint", 0 )

   return result
}


RemoteBuf_GetAdr(p_handle)
{
   global
   return    RemoteBuf_%p_handle%_adr
}

RemoteBuf_GetSize(p_handle)
{
   global
   return    RemoteBuf_%p_handle%_size
}



TOOLBARBUTTONS:
;SetFormat,Integer,D
hw_target:=winid
WinGet, pid_target, PID, ahk_id %hw_target%
hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )
remote_buffer := DllCall( "VirtualAllocEx"
                    , "uint", hp_explorer
                    , "uint", 0
                    , "uint", 0x1000
                    , "uint", 0x1000                        ; MEM_COMMIT
                    , "uint", 0x4 )                           ; PAGE_READWRITE
x1=
x2=
y1=
WM_USER:=0x400
TB_GETITEMRECT:=WM_USER+29
TB_BUTTONCOUNT:=WM_USER+24
SendMessage,%TB_BUTTONCOUNT%,0,0,%class%,ahk_id %hw_target%
buttons:=ErrorLevel
VarSetCapacity( rect, 16, 0 )

Loop,%buttons%
{
  SendMessage,%TB_GETITEMRECT%,% A_Index-1,remote_buffer,%class%,ahk_id %hw_target%
 
  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%

  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
    Continue
  If (x2-x1<10)
    Continue
  If (x1>ctrlw Or y1>ctrlh)
    Continue
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x1
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
}
result := DllCall( "VirtualFreeEx"
                 , "uint", hp_explorer
                 , "uint", remote_buffer
                 , "uint", 0
                 , "uint", 0x8000 )                           ; MEM_RELEASE
result := DllCall( "CloseHandle", "uint", hp_explorer )
Return


TABITEMS:
;SetFormat,Integer,D
hw_target:=winid
WinGet, pid_target, PID, ahk_id %hw_target%
hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )
remote_buffer := DllCall( "VirtualAllocEx"
                    , "uint", hp_explorer
                    , "uint", 0
                    , "uint", 0x1000
                    , "uint", 0x1000                        ; MEM_COMMIT
                    , "uint", 0x4 )                           ; PAGE_READWRITE
x1=
x2=
y1=
WM_USER:=0x400
TCM_GETITEMRECT:=0x130A
TCM_GETITEMCOUNT:=0x1304
SendMessage,%TCM_GETITEMCOUNT%,0,0,%class%,ahk_id %hw_target%
buttons:=ErrorLevel
VarSetCapacity( rect, 16, 0 )

Loop,%buttons%
{
  SendMessage,%TCM_GETITEMRECT%,% A_Index-1,remote_buffer,%class%,ahk_id %hw_target%
 
  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%

  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
    Continue
  If (x2-x1<10)
    Continue
  If (x1>ctrlw Or y1>ctrlh)
    Continue
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x1
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
}
result := DllCall( "VirtualFreeEx"
                 , "uint", hp_explorer
                 , "uint", remote_buffer
                 , "uint", 0
                 , "uint", 0x8000 )                           ; MEM_RELEASE
result := DllCall( "CloseHandle", "uint", hp_explorer )
Return


HEADERITEMS:
;SetFormat,Integer,D
hw_target:=winid
WinGet, pid_target, PID, ahk_id %hw_target%
hp_explorer := DllCall( "OpenProcess"
                    , "uint", 0x18                           ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                    , "int", false
                    , "uint", pid_target )
remote_buffer := DllCall( "VirtualAllocEx"
                    , "uint", hp_explorer
                    , "uint", 0
                    , "uint", 0x1000
                    , "uint", 0x1000                        ; MEM_COMMIT
                    , "uint", 0x4 )                           ; PAGE_READWRITE
x1=
x2=
y1=
WM_USER:=0x400
HDM_FIRST:=0x1200
HDM_GETITEMRECT:=HDM_FIRST+7
HDM_GETITEMCOUNT:=4608
SendMessage,%HDM_GETITEMCOUNT%,0,0,%class%,ahk_id %hw_target%
buttons:=ErrorLevel
;MsgBox,%buttons%
VarSetCapacity( rect, 16, 0 )

Loop,%buttons%
{
  SendMessage,%HDM_GETITEMRECT%,% A_Index-1,remote_buffer,%class%,ahk_id %hw_target%
 
  result := DllCall( "ReadProcessMemory"
                , "uint", hp_explorer
                , "uint", remote_buffer
                , "uint", &rect
                , "uint", 16
                , "uint", 0 )
  oldx1:=x1
  oldx2:=x2
  oldy1:=y1
  x1 := DecodeInteger( "int4", &rect, 0 )
  x2 := DecodeInteger( "int4", &rect, 8 )
  y1 := DecodeInteger( "int4", &rect, 4 )
;  x1+=0
;  x2+=0
;  lv_row_w := x2-x1
;  y2 := DecodeInteger( "int4", &rect, 12 )
;  lv_row_h := y2-y1
;   MsgBox, lv_row_h: %lv_row_h% y1: %y1% y2: %y2%
;   MsgBox, lv_row_w: %lv_row_h% x1: %x1% x2: %x2%

  If (x1=oldx1 And y1=oldy1 And x2=oldx2)
    Continue
  If (x2-x1<10)
    Continue
  If (x1>ctrlw Or y1>ctrlh)
    Continue
  line:=100000000+Floor((ctrly+y1)/same)*10000+ctrlx+x2-thumbwidth
  lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n
}
result := DllCall( "VirtualFreeEx"
                 , "uint", hp_explorer
                 , "uint", remote_buffer
                 , "uint", 0
                 , "uint", 0x8000 )                           ; MEM_RELEASE
result := DllCall( "CloseHandle", "uint", hp_explorer )
Return


DecodeInteger( p_type, p_address, p_offset, p_hex=true ) ;By shimanov at http://www.autohotkey.com/forum/viewtopic.php?t=8840
{
   old_FormatInteger := A_FormatInteger

   if ( p_hex )
      SetFormat, Integer, hex
   else
      SetFormat, Integer, dec
       
   sign := InStr( p_type, "u", false )^1
   
   StringRight, size, p_type, 1
   
   loop, %size%
      value += ( *( ( p_address+p_offset )+( A_Index-1 ) ) << ( 8*( A_Index-1 ) ) )
       
   if ( sign and size <= 4 and *( p_address+p_offset+( size-1 ) ) & 0x80 )
      value := -( ( ~value+1 ) & ( ( 2**( 8*size ) )-1 ) )
       
   SetFormat, Integer, %old_FormatInteger%

   return, value
}


SEARCHCONTROL:
x:=ctrlx
y:=ctrly+ctrlh/2
backcolor:=0xECE9D8
minspacewidth:=2
spacewidth:=minspacewidth
counter:=1
Loop
{
  x+=3
  If (x>ctrlw)
    Break
  PixelGetColor,color,%x%,%y%,RGB
  difference:=COMPARE(color,backcolor)

  If (difference<=10)
  {
    spacewidth+=1
    If spacewidth>49
      Break
  }
 
  If (difference>10 And spacewidth>=minspacewidth)
  {
    right:=x

    line:=100000000+Floor(ctrly/same)*10000+x
    lines=%lines%%line%%A_Tab%%ctrlid%%A_Tab%%class%`n

    counter+=1
    spacewidth:=0
  }
}
Return


COMPARE(color1,color2)
{
  Loop,2
  {
    param:=A_Index
    StringTrimLeft,color%param%,color%param%,2
    Loop,3
    {
      StringLeft,c%param%%A_Index%,color%param%,2
      value:=c%param%%A_Index%
      c%param%%A_Index%=0x%value%
      StringTrimLeft,color%param%,color%param%,2
    }
  }
  difference:=(Abs(c11-c21)+Abs(c12-c22)+Abs(c13-c23))/3
  Return difference
}


INIREAD:
IfNotExist,%applicationname%.ini
{
  movemouse=0
  focuscontrols=Edit,Internet Explorer_Server,CalWndMain,TextViewer,CmboBx,TrackBar,DirectUI
  clickcontrols=Button,UpDown,ScrollBar,Link,Control,BitBtn,CheckBox,QWidget,List,Combo,Tree
  tabcontrols=Tab,PageControl
  headercontrols=Header
  toolbarcontrols=Toolbar,SysPager
  searchcontrols=
  ignorecontrols=ComboBoxEx
  listviews=ListView,LBox
  treeviews=TreeView
  Gosub,INIWRITE
}
IniRead,movemouse,%applicationname%.ini,Settings,movemouse
IniRead,focuscontrols,%applicationname%.ini,Settings,focuscontrols
IniRead,clickcontrols,%applicationname%.ini,Settings,clickcontrols
IniRead,tabcontrols,%applicationname%.ini,Settings,tabcontrols
IniRead,headercontrols,%applicationname%.ini,Settings,headercontrols
IniRead,toolbarcontrols,%applicationname%.ini,Settings,toolbarcontrols
IniRead,searchcontrols,%applicationname%.ini,Settings,searchcontrols
IniRead,ignorecontrols,%applicationname%.ini,Settings,ignorecontrols
IniRead,listviews,%applicationname%.ini,Settings,listviews
IniRead,treeviews,%applicationname%.ini,Settings,treeviews
allcontrols=%focuscontrols%,%clickcontrols%,%tabcontrols%,%headercontrols%,%toolbarcontrols%,%searchcontrols%,%listviews%,%treeviews%
Return

INIWRITE:
IniWrite,%movemouse%,%applicationname%.ini,Settings,movemouse
IniWrite,%focuscontrols%,%applicationname%.ini,Settings,focuscontrols
IniWrite,%clickcontrols%,%applicationname%.ini,Settings,clickcontrols
IniWrite,%tabcontrols%,%applicationname%.ini,Settings,tabcontrols
IniWrite,%headercontrols%,%applicationname%.ini,Settings,headercontrols
IniWrite,%toolbarcontrols%,%applicationname%.ini,Settings,toolbarcontrols
IniWrite,%searchcontrols%,%applicationname%.ini,Settings,searchcontrols
IniWrite,%ignorecontrols%,%applicationname%.ini,Settings,ignorecontrols
IniWrite,%listviews%,%applicationname%.ini,Settings,listviews
IniWrite,%treeviews%,%applicationname%.ini,Settings,treeviews
Return


TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
Menu,Tray,Add,%applicationname%,SWAP
Menu,Tray,Add,
Menu,Tray,Add,&Enabled,SWAP
Menu,Tray,Add,
Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Check,&Enabled
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


SWAP:
Menu,Tray,ToggleCheck,&Enabled
Suspend,Toggle
Return


SETTINGS:
Gui,Destroy
Gui,Margin,30,40
Gui,Add,Tab,x10 y10 w520 h370,Settings|Focus|Click|Tab|Toolbar|Header|Search|Listview|Treeview|Ignore
Gui,Tab,Settings,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h50,&Mouse &action
Gui,Add,CheckBox,xm yp+20 Checked%movemouse% vvmovemouse,Move the mouse to the control

Gui,Tab,Focus,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,Controls to &Focus
Gui,Add,Edit,xm yp+20 w480 h290 vvfocuscontrols,%focuscontrols%

Gui,Tab,Click,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,Controls to &Click
Gui,Add,Edit,xm yp+20 w480 h290 vvclickcontrols,%clickcontrols%

Gui,Tab,Tab,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,&Tab controls
Gui,Add,Edit,xm yp+20 w480 h290 vvtabcontrols,%tabcontrols%

Gui,Tab,Toolbar,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,Tool&bar controls
Gui,Add,Edit,xm yp+20 w480 h290 vvtoolbarcontrols,%toolbarcontrols%

Gui,Tab,Header,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,&Header controls
Gui,Add,Edit,xm yp+20 w480 h290 vvheadercontrols,%headercontrols%

Gui,Tab,Search,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,&Search controls
Gui,Add,Edit,xm yp+20 w480 h290 vvsearchcontrols,%searchcontrols%

Gui,Tab,Listview,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,&Listviews
Gui,Add,Edit,xm yp+20 w480 h290 vvlistviews,%listviews%

Gui,Tab,Treeview,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,&Treeviews
Gui,Add,Edit,xm yp+20 w480 h290 vvtreeviews,%treeviews%

Gui,Tab,Ignore,,Exact
Gui,Add,GroupBox,xm-10 y+20 w500 h320,Controls to &ignore
Gui,Add,Edit,xm yp+20 w480 h290 vvignorecontrols,%ignorecontrols%

Gui,Tab
Gui,Add,Button,xm y+30 w75 GSETTINGSOK,&OK
Gui,Add,Button,x+5 w75 GSETTINGSCANCEL,&Cancel
Gui,Show,,%applicationname% Settings
Return

SETTINGSOK:
Gui,Submit
movemouse:=vmovemouse
focuscontrols:=vfocuscontrols
clickcontrols:=vclickcontrols
tabcontrols:=vtabcontrols
toolbarcontrols:=vtoolbarcontrols
searchcontrols:=vsearchcontrols
ignorecontrols:=vignorecontrols
Gosub,INIWRITE
Return

SETTINGSCANCEL:
Gui,Destroy
Return


ABOUT:
Gui,99:Destroy
Gui,99:Margin,20,20
Gui,99:Add,Picture,xm Icon1,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,%applicationname% v1.6
Gui,99:Font
Gui,99:Add,Text,y+10,Overlays controls with a Number for direct access via Ctrl-Number
Gui,99:Add,Text,y+10,- Hold Ctrl, write the number, release Ctrl.
Gui,99:Add,Text,y+10,- Change the settings using Settings in the tray menu.
Gui,99:Add,Text,y+10,- To add more controls, use Window Spy included with AutoHotkey
Gui,99:Add,Text,y+5,to find the class of the control, and add it to the proper tab.

Gui,99:Add,Picture,xm y+20 Icon5,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,99:Font
Gui,99:Add,Text,y+10,For more tools, information and donations, please visit
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,DonationCoder
Gui,99:Font
Gui,99:Add,Text,y+10,Please support the contributors at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,AutoHotkey
Gui,99:Font
Gui,99:Add,Text,y+10,This tool was made using the powerful
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,99:Font

Gui,99:Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
  Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
  Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
  Run,http://www.autohotkey.com,,UseErrorLevel
Return

99GuiClose:
  Gui,99:Destroy
  OnMessage(0x200,"")
  DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static11,Static15,Static19
    DllCall("SetCursor","UInt",hCurs)
  Return
}
Return


EXIT:
ExitApp


WM_CTLCOLOREDIT1(wParam,lParam)
{
  ToolTip,Black
  BLACK_BRUSH:=3
  brush:=DllCall("Gdi32\GetStockObject","UInt",BLACK_BRUSH,"UInt")
  Return &brush
}

WM_CTLCOLOREDIT(wParam,lParam)
{
  SetFormat,Integer,Hex
    hdc:=wParam
    ut:=DllCall("SetTextColor","UInt",hdc,"UInt",0xFF0000)
    ut:=DllCall("SetBkColor","UInt",hdc,"UInt",0xFFFF00)
    COLOR_3DHILIGHT:=20
    brush:=DllCall("GetSysColorBrush","UInt",COLOR_3DHILIGHT)
  ToolTip,COLOR-%brush%-%ut%
    Return brush
}



4
Skrommel's Software / Re: FindFocus
« on: October 08, 2012, 01:31 PM »
- Mozilla Firefox.

- This is a new thread. My request is written for a software that still works. And it doesn't matter much for me whether it's author is present/absent/alive or even dead. That's the power of open source software.
First of all I post feature requests/bug reports in order to get help from others. If I won't get that help - most probably I will have to help myself with my own hands. And that's a less pleasant, but still an acceptable scenario.

5
Skrommel's Software / Re: HideDesktop v1.1 Problems
« on: October 08, 2012, 01:26 PM »
When right clicking at any place of desktop - a context menu gets opened, and when the cursor is over it - the desktop gets hidden.
I think the script should not hide the dekstop if a context menu was opened from a desktop click and the cursor hovers it.
I also think, that using such a huge delay is not needed, so I manually changed it from 1000ms to 5ms.

A second request is to make the process of hiding continuous: instead of instantly hiding the icons - it would be way more pleasant for eyes to slowly (let's say by 750ms) increase/decrease their transparency level.

6
Skrommel's Software / FindFocus
« on: October 08, 2012, 12:58 PM »
I've just discovered FindFocus
code
;FindFocus.ahk
; Find focused control
;Skrommel @2006

FileInstall,f1.gif,f1.gif
FileInstall,f2.gif,f2.gif

#SingleInstance,Force
#NoEnv
SetBatchLines,-1

applicationname=FindFocus

Gosub,TRAYMENU

found=0

START:
x1=0
y1=-1
WinGetPos,wx,wy,ww,wh,A
If found=1
{
  ToolTip,F,% x2-10,% y2-20
  Sleep,50
  ToolTip,F,% x2-5,% y2-20
  Sleep,50
}
Else
{
  x2:=-1
  y2:=20
}
ToolTip,F,% x2,% y2-20
Sleep,100

LOOP:
  Sleep,10
  found=0
  ImageSearch,x1,y1,0,% y1+1,% ww,% wh,*100 f1.gif
  If ErrorLevel=0
  {
    PixelGetColor,rgb1,% x1,% y1,RGB
    PixelGetColor,rgb2,% x1,% y1+1,RGB
    If (rgb1+rgb2=0xffffff)
{
    ImageSearch,x2,y2,% x1-1,% y1-1,% x1+6,% y1+2,*100 f2.gif
    If ErrorLevel=0
    {
      PixelGetColor,rgb1,% x2,% y2,RGB
      PixelGetColor,rgb2,% x2+1,% y2,RGB
      If (rgb1+rgb2=0xffffff)
        found=1
      Goto,START
    }
}
  }
  Else
  {
    found=0
    Goto,START
  }
Goto,LOOP


TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
Menu,Tray,Add,%applicationname%,ABOUT
Menu,Tray,Add
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


ABOUT:
Gui,99:Destroy
Gui,99:Margin,20,20
Gui,99:Add,Picture,xm Icon1,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,%applicationname% v1.0
Gui,99:Font
Gui,99:Add,Text,y+10,Find the focused control in browsers
Gui,99:Add,Text,y+10,- Shows a flashing icon next to the focused control
Gui,99:Add,Text,y+10,- Not perfect, but better than nothing

Gui,99:Add,Picture,xm y+20 Icon5,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,99:Font
Gui,99:Add,Text,y+10,For more tools, information and donations, please visit
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,DonationCoder
Gui,99:Font
Gui,99:Add,Text,y+10,Please support the contributors at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,AutoHotkey
Gui,99:Font
Gui,99:Add,Text,y+10,This tool was made using the powerful
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,99:Font

Gui,99:Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
  Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
  Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
  Run,http://www.autohotkey.com,,UseErrorLevel
Return

99GuiClose:
  Gui,99:Destroy
  OnMessage(0x200,"")
  DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static9,Static13,Static17
    DllCall("SetCursor","UInt",hCurs)
  Return
}
Return


EXIT:
ExitApp

However, I either don't understand how it works or it simply doesn't work for me.
Instead of getting a blinking [f] icon (as shown in the screenshot below):

I get a non-blinking [f] icon at top left corner (thus it's overlaying favicon) of the active window, which is not useful at all.
Could someone tell me what do I do wrong?
Tried on Win7sp1x64 and WinXPsp3x32

7
Skrommel's Software / DropCommand
« on: October 08, 2012, 12:48 PM »
Hey, I just discovered DropCommand
code
;DropCommand.ahk
; Enables drag and drop of files to a command window in Vista
;Skrommel @ 2008

FileInstall,DropCommand.wav,DropCommand.wav

#SingleInstance,Force
#NoEnv
SetWinDelay,0
SetControlDelay,0
CoordMode,Mouse,Screen
DetectHiddenWindows,on
SetBatchLines,-1

showtooltip=1
playsound=1

applicationname=DropCommand
Gosub,TRAYMENU

Gui,+E0x10 +LastFound +AlwaysOnTop -Caption
gui:=WinExist()
Gui,Show,W3 H3
WinHide,ahk_id %gui%
WinSet,Transparent,1,ahk_id %gui%
Return


MOVE:
MouseGetPos,mx2,my2,mwin
WinGetClass,class,ahk_id %mwin%
If class Not In ConsoleWindowClass
  Return
WinMove,ahk_id %gui%,,% mx2-1,% my2-1
WinSet,AlwaysOnTop,On,ahk_id %gui%
WinShow,ahk_id %gui%
Return


~$LButton::
MouseGetPos,mx1,my1,mwin
WinGetClass,class,ahk_id %mwin%
If class In ConsoleWindowClass
{
  WinHide,ahk_id %gui%
  Return
}
down=1
SetTimer,MOVE,100
Return


~$LButton Up::
If down<>1
  Return
down=0
SetTimer,MOVE,Off
SetTimer,HIDE,-100
Return


;By Sean at http://www.autohotke...orum/topic16849.html
GuiDropFiles:
WinHide,ahk_id %gui%
If showtooltip=1
  ToolTip,%A_GuiEvent%
clip:=ClipboardAll
Loop,Parse,A_GuiEvent,`n
{
  If A_LoopField=
    Continue
  IfInString,A_LoopField,%A_Space%
    ClipBoard:="""" A_LoopField """" A_Space
  Else
    ClipBoard:=A_LoopField . A_Space
  ClipWait,1
  nIndex0 := 7   ; 0-based index of the SubMenu in SysMenu
  nIndex1 := 2   ; 0-based index of the item in the SubMenu
  MouseGetPos,,,hWnd
  hSysMenu := DllCall("GetSystemMenu", "Uint", hWnd, "int", False)
  ; nID := DllCall("GetMenuItemID", "Uint", hSysMenu, "int", nIndex0) ; produce -1 for a SubMenu item
  hSubMenu := DllCall("GetSubMenu", "Uint", hSysMenu, "int", nIndex0)
  nID := DllCall("GetMenuItemID", "Uint", hSubMenu, "int", nIndex1)
  PostMessage,0x112,nID,0,,ahk_id %hWnd%   ; WM_SYSCOMMAND
  If playsound=1
    SoundPlay,%applicationname%.wav
  Sleep,100
}
Clipboard:=clip
Clip:=
SetTimer,TOOLTIPOFF,-1000
Return


TOOLTIPOFF:
ToolTip,
Return


HIDE:
WinHide,ahk_id %gui%
Return


TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
Menu,Tray,Add,%applicationname%,ABOUT
Menu,Tray,Add,
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


EXIT:
ExitApp


ABOUT:
Gui,2:Destroy
Gui,2:Add,Picture,Icon1,%applicationname%.exe
Gui,2:Font,Bold
Gui,2:Add,Text,x+10 yp+10,%applicationname% v1.0
Gui,2:Font
Gui,2:Add,Text,xm,Enables drag and drop of files to a command window in Vista
Gui,2:Add,Text,y+0,`t

Gui,2:Add,Picture,xm Icon2,%applicationname%.exe
Gui,2:Font,Bold
Gui,2:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,2:Font
Gui,2:Add,Text,xm,For more tools, information and donations, visit
Gui,2:Font,CBlue Underline
Gui,2:Add,Text,xm G1HOURSOFTWARE,www.1HourSoftware.com
Gui,2:Font
Gui,2:Add,Text,y+0,`t

Gui,2:Add,Picture,xm Icon5,%applicationname%.exe
Gui,2:Font,Bold
Gui,2:Add,Text,x+10 yp+10,DonationCoder
Gui,2:Font
Gui,2:Add,Text,xm,Please support the DonationCoder community
Gui,2:Font,CBlue Underline
Gui,2:Add,Text,xm GDONATIONCODER,www.DonationCoder.com
Gui,2:Font
Gui,2:Add,Text,y+0,`t

Gui,2:Add,Picture,xm Icon6,%applicationname%.exe
Gui,2:Font,Bold
Gui,2:Add,Text,x+10 yp+10,AutoHotkey
Gui,2:Font
Gui,2:Add,Text,xm,This program was made using AutoHotkey
Gui,2:Font,CBlue Underline
Gui,2:Add,Text,xm GAUTOHOTKEY,www.AutoHotkey.com
Gui,2:Font
Gui,2:Add,Text,y+0,`t
Gui,2:Add,Text,y+0,`t

Gui,2:Font,Bold
Gui,2:Add,Text,xm yp+10,FreeSoundFiles
Gui,2:Font
Gui,2:Add,Text,xm,Sound file from
Gui,2:Font,CBlue Underline
Gui,2:Add,Text,xm GFREESOUNDFILES,www.FreeSoundFiles.tintagel.net
Gui,2:Font
Gui,2:Add,Text,y+0,`t

Gui,2:Add,Button,GABOUTOK Default w75,&OK
Gui,2:Show,,%applicationname% About

hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
Run,http://www.autohotkey.com,,UseErrorLevel
Return

FREESOUNDFILES:
Run,http://www.freesoundfiles.tintagel.net
Return

ABOUTOK:
Gui,2:Destroy
OnMessage(0x200,"")
DllCall("DestroyCursor","Uint",hCurs)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static8,Static13,Static18,Static23
    DllCall("SetCursor","UInt",hCurs)
  Return
}



Since this util adds it's own icon to the tray - why not make it useful?
I think it would be nice if double clicking it would open CMD window and dropping a file to the trayicon would do the same + paste the file's path.

8
Skrommel's Software / GoneIn60s
« on: October 08, 2012, 12:42 PM »
Hi.
I just discovered GoneIn60s
Code
;GoneIn60s.ahk
; Recover closed applications
;Skrommel @ 2006

#NoEnv
#SingleInstance,Force

OnExit,EXIT

CoordMode,Mouse,Screen
CoordMode,ToolTip,Screen

SysGet,SM_CYCAPTION,4
SysGet,SM_CXBORDER,5
SysGet,SM_CYBORDER,6
SysGet,SM_CXEDGE,45
SysGet,SM_CYEDGE,46
SysGet,SM_CXFIXEDFRAME,7
SysGet,SM_CYFIXEDFRAME,8
SysGet,SM_CXSIZEFRAME,32
SysGet,SM_CYSIZEFRAME,33
SysGet,SM_CXSIZE,30
SysGet,SM_CYSIZE,31

applicationname=GoneIn60s

Gosub,INIREAD

inside=0

Gosub,TRAYMENU
SetTimer,CHECK,1000

Loop
{
  Sleep,100
  MouseGetPos,mx,my,win1
  parent:=DllCall("GetParent","uint",win1)
  If parent>0
    Continue
  WinGetPos,x,y,w,h,ahk_id %win1%
  l:=x+w-SM_CXSIZEFRAME-SM_CXSIZE
  t:=y+SM_CYSIZEFRAME
  r:=x+w-SM_CXSIZEFRAME
  b:=y+SM_CYSIZEFRAME+SM_CYSIZE
  If (mx<l Or mx>r Or my<t Or my>b)
  {
    If inside=1
    {
      ToolTip,
      Hotkey,LButton,CLICK,Off
      inside=0
    }
  }
  Else
  {
    If inside=0
    {
      WinGet,program,ProcessName,ahk_id %win1%
      If program In %ignore%
        Continue
      WinGetClass,class,ahk_id %win1%
      If class In %nonwindows%
        Continue
      ToolTip,Gone in %timeout% seconds
      Hotkey,LButton,CLICK,On
      inside=1
    }
  }
}


!F4::
WinGet,win1,Id,A
parent:=DllCall("GetParent",UInt,win1)
If parent>0
  Return
WinGetClass,class,ahk_id %win1%
If class In %nonwindows%
  Return

CLICK:
WinHide,ahk_id %win1%
IfNotInString,closing,%win1%
{
  closing=%closing%%win1%-%A_TickCount%|
  Gosub,TRAYMENU
}
Return


CHECK:
StringSplit,part_,closing,|
Loop,% part_0-1
{
  StringSplit,info_,part_%A_Index%,-
  IfWinExist,ahk_id %info_1%
  {
    left:=Ceil((info_2+timeout*1000-A_TickCount)/1000)
    TrayTip,%applicationname%,Recovered with %left% seconds left!
    StringReplace,closing,closing,%info_1%-%info_2%|
    Gosub,TRAYMENU
  }
  Else
  If (A_TickCount>=info_2+timeout*1000)
  {
    DetectHiddenWindows,On
    If kill=1
    {
      WinGet,pid,Pid,ahk_id %info_1%
      Process,Close,%pid%
    }
    Else
      WinClose,ahk_id %info_1%
    DetectHiddenWindows,Off
    Sleep,1000
    WinShow,ahk_id %info_1%
    StringReplace,closing,closing,%info_1%-%info_2%|
    Gosub,TRAYMENU
  }
 }
Return


RECOVER:
menuitem:=A_ThisMenuItemPos-4
StringSplit,part_,closing,|
StringSplit,info_,part_%menuitem%,-
WinShow,ahk_id %info_1%
Return


RECOVERALL:
StringSplit,part_,closing,|
Loop,% part_0-1
{
  StringSplit,info_,part_%A_Index%,-
  WinShow,ahk_id %info_1%
}
Return


CLOSEALL:
StringSplit,part_,closing,|
Loop,% part_0-1
{
  StringSplit,info_,part_%A_Index%,-
  DetectHiddenWindows,On
  If kill=1
  {
    WinGet,pid,Pid,ahk_id %info_1%
    Process,Close,%pid%
  }
  Else
    WinClose,ahk_id %info_1%
  DetectHiddenWindows,Off
  Sleep,1000
  WinShow,ahk_id %info_1%
  StringReplace,closing,closing,%info_1%-%info_2%|
  Gosub,TRAYMENU
 }
Return



SETTINGS:
ok=0
Gui,Destroy
Gui,Margin,20,10

Gui,Add,GroupBox,xm-10 w300 h50,&Time to wait
Gui,Add,Edit,xm yp+20 w100 vtimeout
Gui,Add,UpDown,x+5,%timeout%
Gui,Add,Text,x+5 yp+2,seconds

Gui,Add,GroupBox,xm-10 y+20 w300 h50,Actions
Gui,Add,CheckBox,xm yp+20 vkill Checked%kill%,&Kill windows   Won't ask to save changed documents!

Gui,Add,GroupBox,xm-10 y+20 w300 h120,&Programs to ignore
Gui,Add,Edit,xm yp+20 r5 w280 vignore,%ignore%
Gui,Add,Text,xm y+5,Example: Notepad.exe,Calc.exe,Pbrush.exe

Gui,Add,GroupBox,xm-10 y+20 w300 h120,Cl&asses to ignore
Gui,Add,Edit,xm yp+20 r5 w280 vsystem,%system%
Gui,Add,Text,xm y+5,Example: Shell_TrayWnd,Progman,#32768

Gui,Add,Button,xm y+20 w75 gSETTINGSOK,&OK
Gui,Add,Button,x+5 w75 gSETTINGSCANCEL,&Cancel

Gui,Show,,%applicationname% Settings

Loop
{
  If ok=1
    Break
  MouseGetPos,x,y,winid,ctrlid
  WinGet,program,ProcessName,ahk_id %winid%
  WinGetClass,class,ahk_id %winid%
  ToolTip,Program: %program%`nClass:      %class%
  Sleep,100
}
ToolTip,
Return


GuiClose:
SETTINGSOK:
ok=1
Gui,Submit
Gosub,INIWRITE
Return


SETTINGSCANCEL:
ok=1
Gui,Destroy
Return


TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
Menu,Tray,Add,%applicationname%,RECOVERALL
Menu,Tray,Add
Menu,Tray,Add,&Recover All,RECOVERALL
Menu,Tray,Add
DetectHiddenWindows,On
StringSplit,part_,closing,|
Loop,% part_0-1
{
  StringSplit,info_,part_%A_Index%,-
  WinGetTitle,title,ahk_id %info_1%
  Menu,Tray,Add,&%A_Index% - %title%,RECOVER
}
DetectHiddenWindows,Off
Menu,Tray,Add
Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


ABOUT:
ok=1
Gui,99:Destroy
Gui,99:Margin,20,20
Gui,99:Add,Picture,xm Icon1,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,%applicationname% v1.4
Gui,99:Font
Gui,99:Add,Text,y+10,Recover closed applications
Gui,99:Add,Text,y+10,- To recover, rightclick the tray icon and choose an application
Gui,99:Add,Text,y+10,- Doubleclick the tray icon to recover all closed applications
Gui,99:Add,Text,y+10,- If not recovered, it is gone in %timeout% seconds

Gui,99:Add,Picture,xm y+20 Icon5,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,99:Font
Gui,99:Add,Text,y+10,For more tools, information and donations, please visit
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,DonationCoder
Gui,99:Font
Gui,99:Add,Text,y+10,Please support the contributors at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,AutoHotkey
Gui,99:Font
Gui,99:Add,Text,y+10,This tool was made using the powerful
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,99:Font

Gui,99:Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
  Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
  Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
  Run,http://www.autohotkey.com,,UseErrorLevel
Return

99GuiClose:
  Gui,99:Destroy
  OnMessage(0x200,"")
  DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static10,Static14,Static18
    DllCall("SetCursor","UInt",hCurs)
  Return
}
Return


EXIT:
Gosub,CLOSEALL
ExitApp


INIREAD:
IniRead,timeout,%applicationname%.ini,Settings,timeout
If timeout=ERROR
  timeout=60
IniRead,kill,%applicationname%.ini,Settings,kill
If kill=ERROR
  kill=0
IniRead,ignore,%applicationname%.ini,Settings,ignore
If ignore=ERROR
  ignore=Notepad.exe
IniRead,system,%applicationname%.ini,Settings,system
If system=ERROR
  system=Shell_TrayWnd,Progman,#32768,Basebar,DV2ControlHost
StringReplace,ignore,ignore,%A_Space%`,,`,,All
StringReplace,ignore,ignore,`,%A_Space%,`,,All
StringReplace,system,system,%A_Space%`,,`,,All
StringReplace,system,system,`,%A_Space%,`,,All
Return


INIWRITE:
StringReplace,ignore,ignore,%A_Space%`,,`,,All
StringReplace,ignore,ignore,`,%A_Space%,`,,All
StringReplace,system,system,%A_Space%`,,`,,All
StringReplace,system,system,`,%A_Space%,`,,All
IniWrite,%timeout%,%applicationname%.ini,Settings,timeout
IniWrite,%kill%,%applicationname%.ini,Settings,kill
IniWrite,%ignore%,%applicationname%.ini,Settings,ignore
IniWrite,%system%,%applicationname%.ini,Settings,system
Return


However, I've noticed, that sometimes closing a window actually closes it instantly, and GoneIn60s doesn't handle it. Could someone, please, fix this rare issue? It happens quite randomly to me, can't provide steps to reproduce the problem.

I also suggest to add Middle click on the (X) button to close the window instantly [i.e. to tell GoneIn60s not to handle it].

9
since the previous post, DC maestro ewemoa has kindly updated the script to a working condition. :Thmbsup: after a few days testing, we'll post it here.

once again thanks to ewemoa. :-*
Could you please provide a link to the place with ewemoa's updated version of the script?
The Skrommel's util doesn't work for me and I don't like the official PasteBin's programs/extensions.

10
Skrommel's Software / Captain
« on: October 08, 2012, 12:13 PM »
Thanks for this awesome utility, I find it quite useful, but I think it lacks such an option as creating rules.
Please, if it's not so hard - do add the rule support for this utility to automatically change specific windows' titles (based on ahk class, title and app_process) [with regEx support, if possible :)].

11
Skrommel's Software / MoveInactiveWin
« on: October 08, 2012, 12:05 PM »
I just discovered this small utility for myself and it's totally awesome!
However, it has a small bug: it works with an active window just as fine as with inactive ones, and that's wrong.
Please, fix it.

12
Skrommel's Software / Re: LabelControl
« on: October 08, 2012, 11:41 AM »
Hey, thanks for this awesome utility!

However, I feel uncomfortable with LCtrl as the hotkey, so I decided to change it to ScrollLock and I experienced troubles with that.
I have done changes in the following lines:
line #24:
~ScrollLock::
line #205:
  GetKeyState,state,ScrollLock,P
line #212:
~ScrollLock Up::

But now the utility works only from time to time.
Please, help.

13
Finished Programs / Re: DONE: Move Window without it gaining focus?
« on: October 08, 2012, 11:03 AM »
I have only uncensored words to describe how awesome it is!

14
Coding Snacks / Re: codename: CopyCap - a tool to copy caption text
« on: October 08, 2012, 06:36 AM »
It would be mega-awesome to be able to create rules (with regexp support, plox! :D) for auto caption changing.

15
Post New Requests Here / Re: DONE: pastebin.com text uploader
« on: October 08, 2012, 03:59 AM »
Should it work out of box or it needs some settings first? It doesn't work for me:
whenever I hit Win+S I get a prompt with the following text:
200 OK
Server: nginx
Date: Mon, 08 Oct 2012 08:57:01 GMT
Content-Type: text/html; charset=utf-8
As far as I understand - instead of this text I should get just an URL, and I don't get it.

16
An awesome idea with a bit buggy realization.
Nonetheless, thanks for that util!

17
Hey, how about to make the tray icon more useful? it would be nice if double click would open the console instead of an "about" window.
I'm also not sure if that is possible, but it would nice to be able to drag-n-drop a file directly to the tray icon of the script, so it would open a new cmd window and paste the dropped file's path there.

Pages: [1]