afan 发表于 2010-7-9 20:09:41

本帖最后由 afan 于 2010-7-9 20:13 编辑

回复 45# yarsye


    在1.au3第3行后面加个sleep(200)或者 WinActive($title)

jinyue115 发表于 2010-7-9 21:13:14

回复 46# afan


afan 发表于 2010-7-9 21:21:18

回复 47# jinyue115


    将1.au3 里面的send()前面加一行msgbox() ,确定下是否为 send 错误

lchl0588 发表于 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

jinyue115 发表于 2010-7-9 21:34:14

回复 48# afan


   貌似执行完这个ShellExecute($title)后 转到1。au3
然后就没做任何操作
没msgbox弹出来$title = $CmdLine
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
       
       

afan 发表于 2010-7-9 21:35:18

回复 49# lchl0588


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

LZ的问题关键是干掉错误提示框……

jinyue115 发表于 2010-7-9 21:37:02

回复 49# lchl0588

不好意思 你的只是会弹出来 “文件不存在”
    MsgBox(48,"","文件不存在",5)

jinyue115 发表于 2010-7-9 21:39:13

回复 49# lchl0588

一 如果D盘有aaaa存在 会说存在 否则说不存在
二 永远不会运行shellexecute 就不会有后面的。。。。。

afan 发表于 2010-7-9 21:42:55

回复 50# jinyue115


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

把他俩都编译成exe再测试,别忘了测试脚本里的ShellExecute(1.au3) 也改成 1.exe

lchl0588 发表于 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
你的代码,偶测试了下,错误对话框得确有,只不过一秒时间就过去了!最后弹出存在哇或不存在的情况!
瞬间的图,终于截了,你看下吧!

jinyue115 发表于 2010-7-9 23:49:18

回复 51# afan


   感谢

jinyue115 发表于 2010-7-9 23:49:39

回复 55# lchl0588


    Thanks a lot!

afan 发表于 2010-7-9 23:54:49

回复 55# lchl0588


    呵呵,这不是拦截,当然会出现,只是现在的目的是将出来的窗口瞬间干掉而已~
你连这种瞬间弹出的窗口都能截住,还拍个照,你可以改行去打劫了~

lanfengc 发表于 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

我的代码可完美实现你要的效果。

lynfr8 发表于 2010-7-10 02:10:54

我的代码可完美实现你要的效果。
lanfengc 发表于 2010-7-10 02:08 http://www.autoitx.com/images/common/back.gif


    呵呵,夜猫子,还在帮别人解决问题,难得...
页: 1 2 3 [4] 5
查看完整版本: 简单程序已修正,问题原因看回复【已解决】谢谢大家!