找回密码
 加入
搜索
楼主: ransally

[AU3基础] 简单程序已修正,问题原因看回复【已解决】谢谢大家!

 火... [复制链接]
发表于 2010-7-9 20:09:41 | 显示全部楼层
本帖最后由 afan 于 2010-7-9 20:13 编辑

回复 45# yarsye


    在1.au3第3行后面加个sleep(200)  或者 WinActive($title)
发表于 2010-7-9 21:13:14 | 显示全部楼层
回复 46# afan


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-7-9 21:21:18 | 显示全部楼层
回复 47# jinyue115


    将1.au3 里面的send()前面加一行msgbox() ,确定下是否为 send 错误
发表于 2010-7-9 21:32:39 | 显示全部楼层
回复 48# afan
呵呵,刚刚打完球回来,看到你对此感兴趣,偶又改了下代码!!!
$a="d:\aaaa"
If FileExists($a) Then
        ShellExecute($a)
        EndIf
WinWaitActive("aaa","",2)
If WinExists("aaa") Then
        Send("{enter}")
        MsgBox(48,"","文件存在",5)
Else
        MsgBox(48,"","文件不存在",5)
EndIf
发表于 2010-7-9 21:34:14 | 显示全部楼层
回复 48# afan


   貌似执行完这个ShellExecute($title)后 转到1。au3
然后就没做任何操作
没msgbox弹出来
$title = $CmdLine[1]
While 1
        If WinExists($title, 'Windows ') Then
                        MsgBox(0,"1","2")
                        Sleep(200)
                WinActive($title)
                                ;Sleep(200)
                Send('{enter}')
                Exit MsgBox(48, '这是监视程序弹出的', $title & ' 不存在 ')
        ElseIf WinExists('ok文件夹存在') Then
                Exit
        EndIf
        Sleep(1)
        WEnd
        
        
发表于 2010-7-9 21:35:18 | 显示全部楼层
回复 49# lchl0588


    打球辛苦了,不过比打架轻松点~~

LZ的问题关键是干掉错误提示框……
发表于 2010-7-9 21:37:02 | 显示全部楼层
回复 49# lchl0588

不好意思 你的只是会弹出来 “文件不存在”
    MsgBox(48,"","文件不存在",5)
发表于 2010-7-9 21:39:13 | 显示全部楼层
回复 49# lchl0588

一 如果D盘有aaaa存在 会说存在 否则说不存在
二 永远不会运行shellexecute 就不会有后面的。。。。。
发表于 2010-7-9 21:42:55 | 显示全部楼层
回复 50# jinyue115


    这就见鬼了,我这测试了无数次,那个错误提示框都是只哼一声就被干掉了……
你的测试确实是没捕获到错误窗口。

把他俩都编译成exe再测试,别忘了测试脚本里的ShellExecute(1.au3) 也改成 1.exe
发表于 2010-7-9 21:46:41 | 显示全部楼层
本帖最后由 lchl0588 于 2010-7-9 21:56 编辑

啊啊,弹出这些只是为了方便查看,如果完全没有对话框的话,那就这样吧!!!!!!!!!
$a="d:\aaaa" ;正确路径是d:\aaa
If FileExists($a) Then
        ShellExecute($a)
        EndIf
WinWaitActive("aaa","",2)
If WinExists("aaa") Then
        Send("{enter}")
Else
      Exit; run("Notepad.exe") ;这俩都可以,只是为了测试方便而已
EndIf
-------------------------------------------------------------------------分界线
哈哈,大学的人真多!!话回正题:
回复 54# afan
你的代码,偶测试了下,错误对话框得确有,只不过一秒时间就过去了!最后弹出存在哇或不存在的情况!
瞬间的图,终于截了,你看下吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-7-9 23:49:18 | 显示全部楼层
回复 51# afan


   感谢
发表于 2010-7-9 23:49:39 | 显示全部楼层
回复 55# lchl0588


    Thanks a lot!
发表于 2010-7-9 23:54:49 | 显示全部楼层
回复 55# lchl0588


    呵呵,这不是拦截,当然会出现,只是现在的目的是将出来的窗口瞬间干掉而已~
你连这种瞬间弹出的窗口都能截住,还拍个照,你可以改行去打劫了~
发表于 2010-7-10 02:08:26 | 显示全部楼层
HotKeySet("{ESC}","quit")
;这个是定义全局的目录变量, 可以自己改成你自己的目录
Global $Path="d:\aa"
;打开DLL文件
$dll = DllOpen("user32.dll")
;设置DLL回调函数
$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
;启动定时器
$TimerDLL = DllCall($dll, "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 100, "ptr", DllCallbackGetPtr($Timer))
;你要写的代码只能写在这据注释之下,要不然定时器不会运行。
ShellExecute($Path)
While 1
        Sleep(100)
WEnd
Func quit()  ;退出,  关闭定时器, 释放回调函数指针,关闭DLL
        DllCall($dll, "int", "KillTimer", "hwnd", 0, "uint", $TimerDLL)
        DllCallbackFree($Timer)
        DllClose($dll)
        Exit  
EndFunc
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)  ;检测窗体。
    If WinExists($Path) Then ControlClick($Path,"","Button1","left",1)
EndFunc
我的代码可完美实现你要的效果。

评分

参与人数 2金钱 +30 贡献 +5 收起 理由
afan + 30
lynfr8 + 5

查看全部评分

发表于 2010-7-10 02:10:54 | 显示全部楼层
我的代码可完美实现你要的效果。
lanfengc 发表于 2010-7-10 02:08



    呵呵,夜猫子,还在帮别人解决问题,难得...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 04:35 , Processed in 0.071978 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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