找回密码
 加入
搜索
查看: 6904|回复: 16

[AU3基础] [已解决]请教!有些软件最小化之后无法用WinActivate激活怎么办?

  [复制链接]
发表于 2011-11-27 09:41:42 | 显示全部楼层 |阅读模式
本帖最后由 lnlyf 于 2011-11-30 11:24 编辑

如果没有最小化,可以直接用winactivate来激活窗口,如果最小化了(就在windows底部任务栏,不是右下角),就不能激活了,发现好多这样的软件。

请教高手,还有什么方法没有?谢谢了!
 楼主| 发表于 2011-11-27 11:29:33 | 显示全部楼层
还有一个问题,怎样定时自动退出脚本?
发表于 2011-11-27 12:04:53 | 显示全部楼层
回复 1# lnlyf


这种情况不是激活的问题,而是需要 restore (任务栏窗口菜单中的“还原”)。
    GUISetState()

@SW_RESTORE

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2011-11-27 12:06:23 | 显示全部楼层
回复 2# lnlyf


    定时自动退出脚本,用 AdlibRegister()
 楼主| 发表于 2011-11-27 14:53:11 | 显示全部楼层
试了不行啊,具体怎么写请楼上高手指教。
 楼主| 发表于 2011-11-28 12:00:36 | 显示全部楼层
GUISetState ( [@SW_RESTORE [, 无标题-]] )
看了帮助,但我这样写不行啊,请高手指点,谢谢了!
发表于 2011-11-28 16:44:45 | 显示全部楼层
回复 6# lnlyf


    帮助的语法是这样的:
   [ ] 内表示是可省略的部分。真实代码中,如果有这部分内容,方括号本身是不用写出来的。
   窗口标题作为字符串,要用双引号包含。
  
   仔细看了下你的问题,你应该是第三方程序,不是自己创建的GUI吧?
   这种情况应该用 WinSetState()。
发表于 2011-11-28 16:52:26 | 显示全部楼层
你说的定时是怎么样定时?
如果是预定哪天哪个小时最好办法是作个无限循环,然后判断是否达到预定时间.是, 则退出; 否,则继续循环...
AdlibRegister() 只能做到程序开始运行后,必须经过设定的时间后才退出的.
发表于 2011-11-28 16:55:10 | 显示全部楼层
回复 3# xiehuahere


    正解!
    帮助里就有个非常好的例子,
Run("notepad.exe")
WinWaitActive("[CLASS:Notepad]")
WinSetState("[CLASS:Notepad]","",@SW_MINIMIZE)

; 检查记事本窗口状态
Local $state = WinGetState("[CLASS:Notepad]", "")

; 检查记事本窗口是不是"最小化"状态.
If BitAnd($state, 16) Then
    MsgBox(0, "例子", "记事本窗口是最小化的")
Else
    MsgBox(0, "例子", "记事本窗口不是最小化的") 
EndIf

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

 楼主| 发表于 2011-11-29 09:52:32 | 显示全部楼层
回复  lnlyf


    帮助的语法是这样的:
   [ ] 内表示是可省略的部分。真实代码中,如果有这部分内容 ...
xiehuahere 发表于 2011-11-28 16:44



用 WinSetState("无标题", "", @SW_SHOW)可以弹出窗口了,但又不能最小化了,怎能恢复到使用WinSetState()前的状态呢?
WinSetState("无标题", "", @SW_RESTORE)这样不起作用。
 楼主| 发表于 2011-11-29 09:55:05 | 显示全部楼层
你说的定时是怎么样定时?
如果是预定哪天哪个小时最好办法是作个无限循环,然后判断是否达到预定时间.是, 则 ...
user3000 发表于 2011-11-28 16:52


我就是想设定时间退出,比如每天下午四点退出,请问用AdlibRegister() 该怎么写?
发表于 2011-11-29 16:13:01 | 显示全部楼层
回复 10# lnlyf


    帮助里说得很明白。仍然用 WinSetState()。
@SW_HIDE = 隐藏窗口
@SW_SHOW = 显示以前隐藏的窗口
@SW_MINIMIZE = 最小化窗口
@SW_MAXIMIZE = 最大化窗口
@SW_RESTORE = 撤销窗口的最小化或最大化状态
@SW_DISABLE = 禁用窗口
@SW_ENABLE = 使窗口可用

请认真去看看帮助再来提问!
 楼主| 发表于 2011-11-29 20:03:12 | 显示全部楼层
我看了帮助的
@SW_HIDE = 隐藏窗口。手动又点不出来了
@SW_SHOW = 显示以前隐藏的窗口。手动不能最小化
@SW_MINIMIZE = 最小化窗口,恢复窗口后,又不能最小化
@SW_RESTORE = 撤销窗口的最小化或最大化状态 。还是不能手动最小化

我是想在AU3无动作的时候,也能人工操作窗口。
看来只有将就着用了,虽然能解决问题,但是不理想。

谢谢xiehuahere 的多次指点,非常感谢!
发表于 2011-11-29 21:36:27 | 显示全部楼层
我就是想设定时间退出,比如每天下午四点退出,请问用AdlibRegister() 该怎么写?
lnlyf 发表于 2011-11-29 09:55


如果是这样, 最好是做个无限循环
While 1
        Sleep(150)
        If @HOUR = 16 Then Exit
        ;; other code here?
 WEnd


请有空多看帮助,,,有很多与系统相关的宏等等定义的.
 楼主| 发表于 2011-11-30 10:28:03 | 显示全部楼层
谢谢user3000 ,可以定时退出了。
刚接触AU3,一点基础没有,本贴的两个问题都解决了,再次感谢各位老大的热心帮助!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 05:30 , Processed in 0.147864 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表