找回密码
 加入
搜索
查看: 1719|回复: 3

[AU3基础] 自动给文件选择窗口加上文件名为什么不行?

[复制链接]
发表于 2016-4-17 19:49:59 | 显示全部楼层 |阅读模式
$a = FileOpenDialog("打开文件", "C:\", "所有文件(*.*)")
$handle = WinGetHandle("打开文件", "")

If @error Then
    MsgBox(0, "错误", "无法找到该窗口")
Else
    ControlSend($handle, "", "Edit1", "AbCdE.jpg")
EndIf

AbCdE.jpg为什么加不上去?
发表于 2016-4-17 20:18:41 | 显示全部楼层
回复 1# lzp4881


    你这样做是不行的
AU3在调用 FileOpenDialog、InputBox、MsgBox 的时候, 会暂停脚本继续向下运行。要想实现你这个功能。 有两种办法。
第一种:直接调用FileOpenDialog时候赋予默认文件名
代码如下:
$a = FileOpenDialog("打开文件", "C:\", "所有文件(*.*)",1,"AbCdE.jpg")
第二种:在调用FileOpenDialog之前,启动一个定时器线程,定时器函数中,检测FileOpenDialog是否出现,如果出现,则设置Edit控件的内容。
代码如下:

#include <WinAPISys.au3>
;创建定时器回调函数
Local $hTimerProc = DllCallbackRegister('_TimerProc', 'none', 'hwnd;uint;uint_ptr;dword')
;创建定时器
Local $iTimerID = _WinAPI_SetTimer(0, 0, 100, DllCallbackGetPtr($hTimerProc))
;调用文件打开对话框
$a = FileOpenDialog("打开文件", "C:\", "所有文件(*.*)")

;结束时候,删除定时器
_WinAPI_KillTimer(0, $iTimerID)
;释放回调函数句柄
DllCallbackFree($hTimerProc)

Func _TimerProc($hWnd, $iMsg, $iTimerID, $iTime)
        $handle = WinGetHandle("打开文件", "")
        If Not @error Then ControlSetText($handle, "", "Edit1", "AbCdE.jpg")
EndFunc
 楼主| 发表于 2016-4-17 21:42:12 | 显示全部楼层
回复  lzp4881


    你这样做是不行的
AU3在调用 FileOpenDialog、InputBox、MsgBox 的时候, 会暂停脚 ...
lanfengc 发表于 2016-4-17 20:18



    谢谢,用这个代码果然可以获取到。
不过我的窗口不是用$a = FileOpenDialog("打开文件", "C:\", "所有文件(*.*)")生成的,而是点击网页上一个按钮打开的,用你这个代码还是不行。应该怎么改才行呢。
发表于 2016-4-17 22:34:52 | 显示全部楼层
应该和前几天的问题一样:http://www.autoitx.com/thread-51955-1-1.html
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 09:55 , Processed in 0.249324 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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