1. 按下 F1
    • 将鼠标指向的控件分离到一个单独的浮动窗口。
  2. 定时器保持控件位置更新。
  3. 关闭浮动窗口时:
    • 控件自动恢复到原窗口。

这个脚本适用于希望独立特定控件的用户,提升工作效率。

 

; Skrommel @ 2008

#SingleInstance Force
DetectHiddenWindows On
SetWinDelay 0

counter := 0
OnExit EXIT
Return

F1::
SetTimer, MOVE, Off
MouseGetPos,,, window, ctrl, 2
WinGetPos, wx, wy, ww, wh, ahk_id %window%
WinGetPos, cx, cy, cw, ch, ahk_id %ctrl%
current := counter
Loop % counter+1
{
  If gui_%A_Index%=
  {
    current:=A_Index
    Break
  }
}
If current>%counter%
  counter += 1
if (cw="" or ch="") {
  Tip("无法获取控件,本次独立控件失败")
  Return
}
Gui %current%: +AlwaysOnTop +Resize +ToolWindow +LabelAllGui
Gui %current%: Show,X0 Y0 W%cw% H%ch%, 独立控件%current%
Gui %current%: +LastFound
gui := WinExist("A")
parent := DllCall("SetParent", "UInt", ctrl, "UInt", gui)
WinMove, ahk_id %ctrl%,, 0, 0 ;, %cw%, %ch%
ctrl_%current% := ctrl
gui_%current% := gui
parent_%current% := parent
window_%current% := window
w_%current% := ww
h_%current% := wh
SetTimer, MOVE, 500
Return

MOVE:
SetTimer, MOVE, Off
Loop,%counter% {
  ctrl:=ctrl_%A_Index%
  If ctrl=
    Continue
  IfWinExist, ahk_id %ctrl%
    WinMove, ahk_id %ctrl%,,0,0
  Else
    Gui, %A_Index%:Destroy
}
SetTimer, MOVE, 500
Return


AllGuiClose:
SetTimer,MOVE,Off
ctrl:=ctrl_%A_Gui%
window:=window_%A_Gui%
DllCall("SetParent","UInt",ctrl_%A_Gui%,"UInt",parent_%A_Gui%)
Gui,%A_Gui%:Destroy
WinMove, ahk_id %ctrl%,, 0, 0
WinMove, ahk_id %window%,,,, % w_%A_Gui%,% h_%A_Gui%+1
WinMove, ahk_id %window%,,,, % w_%A_Gui%,% h_%A_Gui%
gui_%A_Gui%=
ctrl_%A_Gui%=
parent_%A_Gui%=
Gosub exit
Return


EXIT:
SetTimer,MOVE,Off
Loop,%counter% {
  ctrl := ctrl_%A_Index%
  window := window_%A_Index%
  If ctrl=
    Continue
  DllCall("SetParent", "UInt", ctrl_%A_Index%, "UInt", parent_%A_Index%)
  Gui,%A_Index%:Destroy
  WinMove, ahk_id %ctrl%,, 0, 0
  WinMove, ahk_id %window%,,,,% w_%A_Index%,% h_%A_Index%+1
  WinMove, ahk_id %window%,,,,% w_%A_Index%,% h_%A_Index%
}
ExitApp

Tip(s:="", Period:="") {
  SetTimer %A_ThisFunc%, % s="" ? "Off" : "-" (Period="" ? 1500 : Period)
  ToolTip %s%, , , 17
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。