lnlyf 发表于 2011-11-27 09:41:42

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

本帖最后由 lnlyf 于 2011-11-30 11:24 编辑

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

请教高手,还有什么方法没有?谢谢了!

lnlyf 发表于 2011-11-27 11:29:33

还有一个问题,怎样定时自动退出脚本?

xiehuahere 发表于 2011-11-27 12:04:53

回复 1# lnlyf


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

@SW_RESTORE

xiehuahere 发表于 2011-11-27 12:06:23

回复 2# lnlyf


    定时自动退出脚本,用 AdlibRegister()

lnlyf 发表于 2011-11-27 14:53:11

试了不行啊,具体怎么写请楼上高手指教。

lnlyf 发表于 2011-11-28 12:00:36

GUISetState ( [@SW_RESTORE [, 无标题-]] )
看了帮助,但我这样写不行啊,请高手指点,谢谢了!

xiehuahere 发表于 2011-11-28 16:44:45

回复 6# lnlyf


    帮助的语法是这样的:
   [ ] 内表示是可省略的部分。真实代码中,如果有这部分内容,方括号本身是不用写出来的。
   窗口标题作为字符串,要用双引号包含。

   仔细看了下你的问题,你应该是第三方程序,不是自己创建的GUI吧?
   这种情况应该用 WinSetState()。

user3000 发表于 2011-11-28 16:52:26

你说的定时是怎么样定时?
如果是预定哪天哪个小时最好办法是作个无限循环,然后判断是否达到预定时间.是, 则退出; 否,则继续循环...
AdlibRegister() 只能做到程序开始运行后,必须经过设定的时间后才退出的.

user3000 发表于 2011-11-28 16:55:10

回复 3# xiehuahere


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

; 检查记事本窗口状态
Local $state = WinGetState("", "")

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

lnlyf 发表于 2011-11-29 09:52:32

回复lnlyf


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


用 WinSetState("无标题", "", @SW_SHOW)可以弹出窗口了,但又不能最小化了,怎能恢复到使用WinSetState()前的状态呢?
WinSetState("无标题", "", @SW_RESTORE)这样不起作用。

lnlyf 发表于 2011-11-29 09:55:05

你说的定时是怎么样定时?
如果是预定哪天哪个小时最好办法是作个无限循环,然后判断是否达到预定时间.是, 则 ...
user3000 发表于 2011-11-28 16:52 http://www.autoitx.com/images/common/back.gif

我就是想设定时间退出,比如每天下午四点退出,请问用AdlibRegister() 该怎么写?

xiehuahere 发表于 2011-11-29 16:13:01

回复 10# lnlyf


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

请认真去看看帮助再来提问!

lnlyf 发表于 2011-11-29 20:03:12

我看了帮助的
@SW_HIDE = 隐藏窗口。手动又点不出来了
@SW_SHOW = 显示以前隐藏的窗口。手动不能最小化
@SW_MINIMIZE = 最小化窗口,恢复窗口后,又不能最小化
@SW_RESTORE = 撤销窗口的最小化或最大化状态 。还是不能手动最小化

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

谢谢xiehuahere 的多次指点,非常感谢!

user3000 发表于 2011-11-29 21:36:27

我就是想设定时间退出,比如每天下午四点退出,请问用AdlibRegister() 该怎么写?
lnlyf 发表于 2011-11-29 09:55 http://www.autoitx.com/images/common/back.gif

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

请有空多看帮助,,,有很多与系统相关的宏等等定义的.

lnlyf 发表于 2011-11-30 10:28:03

谢谢user3000 ,可以定时退出了。
刚接触AU3,一点基础没有,本贴的两个问题都解决了,再次感谢各位老大的热心帮助!
页: [1] 2
查看完整版本: [已解决]请教!有些软件最小化之后无法用WinActivate激活怎么办?