lzp4881 发表于 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为什么加不上去?

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

lzp4881 发表于 2016-4-17 21:42:12

回复lzp4881


    你这样做是不行的
AU3在调用 FileOpenDialog、InputBox、MsgBox 的时候, 会暂停脚 ...
lanfengc 发表于 2016-4-17 20:18 http://www.autoitx.com/images/common/back.gif


    谢谢,用这个代码果然可以获取到。
不过我的窗口不是用$a = FileOpenDialog("打开文件", "C:\", "所有文件(*.*)")生成的,而是点击网页上一个按钮打开的,用你这个代码还是不行。应该怎么改才行呢。

tank 发表于 2016-4-17 22:34:52

应该和前几天的问题一样:http://www.autoitx.com/thread-51955-1-1.html
页: [1]
查看完整版本: 自动给文件选择窗口加上文件名为什么不行?