qq54222717 发表于 2010-9-13 01:39:10

怎么样让才让AU3永远 在WINDOWS窗口的最前方呢

怎么样让才让AU3永远 在WINDOWS窗口的最前方呢

我想了个。。脚本HotKeySet('{F2}设置一个热键为F2时

可是当我点开其它窗口的时候。。其它窗口就成为了WINDOWS的最前面的窗口了

当我在按F2的时候脚本已经没有作用了。。我点鼠标右键下面提示脚本已经暂停了


怎么样写代码才可以让AU3脚本永远在窗口的最前面呢,,不管点什么窗口。。总让AU3跑到窗口的最前面。。不管我用鼠标切换到任何窗口的时候。。然后可以按F2键。。。来热行脚本

redapple2008 发表于 2010-9-13 07:29:45

WinSetOnTop
--------------------------------------------------------------------------------

设置指定窗口的"总是在顶层"属性.


WinSetOnTop ( "窗口标题", "窗口文本", 标志 )




参数

窗口标题 目标窗口标题.参考标题特殊定义.
窗口文本 目标窗口文本.
标志 用以决定目标窗口是否具有"顶层窗口"属性:
1=设置为顶层窗口,0 = 取消顶层窗口属性



返回值

成功: 返回 1.
失败: 返回 0,窗口不存在.



注意/说明

某些第三方程序带有"总是在顶层"的上下文菜单,AutoIt 更改其顶层窗口属性时其菜单项将不被更新.

yingf20 发表于 2010-9-13 10:55:09

本帖最后由 yingf20 于 2010-9-13 11:11 编辑


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("TrayMenuMode", 1)
Opt("GUICloseOnESC", 0)
Opt("TrayOnEventMode", 1)
HotKeySet('{F2}', 'f2')
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("测试", 200, 100, 200, 200, $WS_POPUP, $WS_EX_TOOLWINDOW)
$Button = GUICtrlCreateButton("关闭", 162, 128, 40, 20)
_SetWindowPos($Form1, 200, 200) ;这里设置窗口始终在最前端
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button
   GUISetState(@SW_HIDE)
EndSwitch
WEnd
Func f2()
If WinGetState($Form1) Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
EndIf
EndFunc   ;==>SpecialEvent
Func _SetWindowPos($hWnd, $x, $y) ;使用API将窗体保持最前
Local $cX, $cY
Dim $hWndInsertAfter = -1
Dim $wFlags = 1
DllCall("user32.dll", "long", "SetWindowPos", "long", $hWnd, "long", $hWndInsertAfter, "long", $x, _
   "long", $y, "long", $cX, "long", $cY, "long", $wFlags)
EndFunc   ;==>_SetWindowPos

试试这些代码看怎样。看是不是你想要的。

kood481748 发表于 2010-9-13 11:13:19

楼主还在做你的自动填身份证的玩意啊?

qq54222717 发表于 2010-9-13 14:02:44

恩。。呵呵谢谢大家了。,。不过 不会AU3 访问SQL。。呀

liufenglg 发表于 2010-9-13 17:05:17

本帖最后由 liufenglg 于 2010-9-13 17:13 编辑

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("TrayMenuMode", 1)
Opt("GUICloseOnESC", 0)
Opt("TrayOnEventMode", 1)
HotKeySet('{F2}', 'f2')
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("测试", 200, 100, 200, 200, $WS_POPUP, $WS_EX_TOOLWINDOW)
$Button = GUICtrlCreateButton("关闭", 162, 128, 40, 20)
_SetWindowPos($Form1, 200, 200) ;这里设置窗口始终在最前端
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button
   GUISetState(@SW_HIDE)
EndSwitch
WEnd
Func f2()
If WinGetState($Form1) Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
EndIf
EndFunc   ;==>SpecialEvent
Func _SetWindowPos($hWnd, $x, $y) ;使用API将窗体保持最前
Local $cX, $cY
Dim $hWndInsertAfter = -1
Dim $wFlags = 1
DllCall("user32.dll", "long", "SetWindowPos", "long", $hWnd, "long", $hWndInsertAfter, "long", $x, _
   "long", $y, "long", $cX, "long", $cY, "long", $wFlags)
EndFunc   ;==>_SetWindowPos

按F2什么也没了

yingf20 发表于 2010-9-13 22:43:17

回复 6# liufenglg


    可能我设置有些地方错了,希望高手经过把它修改正吧?应该是循环问题

auhj887 发表于 2010-9-25 20:19:02

学习。。。。。。。。。。。。。

menfan1 发表于 2010-9-25 20:21:22

WinSetOnTop
页: [1]
查看完整版本: 怎么样让才让AU3永远 在WINDOWS窗口的最前方呢