找回密码
 加入
搜索
楼主: 老榆头

用JS弹出的对话框内的控件,如何设置文本

 火.. [复制链接]
 楼主| 发表于 2009-11-25 15:03:18 | 显示全部楼层
本帖最后由 老榆头 于 2009-11-25 15:07 编辑

麻烦afan好友再试一次,应该可以的,我刚才试了一下,可以的
http://disk.nbfas.cn/test.htm

若不行的话,多刷新两次

下面是test.htm文件

本帖子中包含更多资源

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

×
发表于 2009-11-25 16:23:36 | 显示全部楼层
回复 16# 老榆头


    我点上传没反应,也没返回?
 楼主| 发表于 2009-11-25 17:20:46 | 显示全部楼层
本帖最后由 老榆头 于 2009-11-25 20:47 编辑

是的,afan,那是个测试页面
上传的代码我删掉了

我想实现的是:
1/单击“浏览”,会弹出对话框
2/然后设置对话框中的“文件名”位置的文本(如:c:\upload.txt)

现在的问题就是第2步实现不了

谢谢

本帖子中包含更多资源

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

×
发表于 2009-11-25 18:49:10 | 显示全部楼层
下载一个附件要消耗20金币。好贵啊!
发表于 2009-11-25 18:49:43 | 显示全部楼层
更奇怪的是我回复了你的帖子却减少了10金币!Why?
 楼主| 发表于 2009-11-25 20:49:36 | 显示全部楼层
回复 19# KLU3K


我也不知道呀,我看了一下,金钱是0呀,
再说我也不可能找人帮忙,还问人家收钱,那也太不象话喽:)
 楼主| 发表于 2009-11-25 20:52:38 | 显示全部楼层
就是想知道,如果那个浏览按钮是由JS脚本调出来
如何设置控件的文本
谢谢
发表于 2009-11-25 21:09:42 | 显示全部楼层
本帖最后由 afan 于 2009-11-25 21:11 编辑

这个问题确实没遇到过,在脚本内无法捕捉选择文件的窗口,而此时外部脚本却可以。
如此的话只有再写个专门负责捕捉选择文件的窗口,执行点击等一系列动作。此脚本程序由主脚本调用并传递变量,并在执行完后自动退出。
发表于 2009-11-25 21:28:05 | 显示全部楼层
主脚本如下:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <File.au3>

$gc_url = "http://disk.nbfas.cn/test.htm" ;上传地址
$gc_Formtitle = "上传" ;窗体标题
If WinExists($gc_Formtitle, "") Then Exit ;查看是否窗体是否存在

$Form1 = GUICreate($gc_Formtitle, 334, 283, 193, 125, -1, $WS_EX_ACCEPTFILES)
$Label1 = GUICtrlCreateLabel("选择文件夹...", 40, 40, 73, 17)
$inputDir = GUICtrlCreateInput("", 40, 72, 177, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$btnBrowse = GUICtrlCreateButton("浏览...", 240, 72, 75, 25, 0)
$btnUpload = GUICtrlCreateButton("上传", 40, 120, 75, 25, 0)
$editDisplay = GUICtrlCreateEdit("", 48, 168, 185, 89, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN))
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $btnBrowse ;浏览文件夹
                        $dir = FileSelectFolder("请选择文件夹:", "")
                        If Not @error Then GUICtrlSetData($inputDir, $dir)

                Case $btnUpload ;上传
                        Upload()
        EndSwitch
WEnd

Func Upload()
        $dir = GUICtrlRead($inputDir) ;读取文件夹
        If FileExists($dir) = 0 Then ;<== 检查文件夹是否有错
                MsgBox(0, "出错", "请检查文件夹是否正确")
                GUICtrlSetState($inputDir, $GUI_FOCUS)
        Else ;无错=将选定文件夹内所有文件读入数组
                $aFileList = _FileListToArray($dir, "*", 1)
                ;<==        检查是否有文件
                If @error = 4 Then ;没有文件
                        MsgBox(0, "", "没有发现文件")
                        ;Exit
                Else ;有文件 
                        For $iFile = 1 To $aFileList[0] ; 循环执行每一个文件
                                $sFilePath = $dir & "" & $aFileList[$iFile]
                                Run('a.exe "' & $sFilePath & '"')
                                $oIE = _IECreate($gc_url, 0, 1)
                                $o_form = _IEFormGetObjByName($oIE, "upload_form")
                                $o_browse = _IEFormElementGetObjByName($o_form, "file")
                                ;$hwnd_ie = _IEPropertyGet($oIE, "hwnd")
                                _IEAction($o_browse, "click") ;单击“浏览”
                                ;此时已由a.exe搞定其它事务~
                                ;_IELoadWait ($oIE)
                                ;_IEAction($o_login, "click")
                                MsgBox(0, 0, $sFilePath & ' 已搞定')
                        Next ;<== 循环结束
                EndIf ;<== 检查是否有文件
        EndIf ;<== 检查文件夹是否有错
EndFunc   ;==>Upload
以下这个是辅助脚本,编译为"a.exe"后和主脚本放在一起。
If $CmdLine[0] = 1 Then
        AdlibRegister('sr')
        $a = 1
        While $a = 1
                Sleep(50)
        WEnd
EndIf
Func sr()
        If WinActive("选择文件") Then
                ControlSetText("选择文件", "文件名", "Edit1", $CmdLine[1])
                ControlClick("选择文件", "文件名", "Button2")
                $a = 0
        EndIf
EndFunc   ;==>sr
 楼主| 发表于 2009-11-26 12:59:00 | 显示全部楼层
先谢谢afan好友
马上测试,谢谢
发表于 2009-11-26 13:32:03 | 显示全部楼层
我也测试下..
 楼主| 发表于 2009-11-26 14:18:49 | 显示全部楼层
afan好友,我这儿测试没有通过
如果测试成功,那么选择的文本应该出现在“浏览”左边的文本框内
还有那个“浏览”对话框的标题是否应该为“选择要加载的文件”

代码如下:
If $CmdLine[0] = 1 Then
        AdlibRegister('sr')
        $a = 1
        While $a = 1
                        Sleep(50)
        WEnd
EndIf
Func sr()
        If WinActive("选择要加载的文件") Then
                        ControlSetText("选择要加载的文件", "文件名", "Edit1", $CmdLine[1])
                        ControlClick("选择要加载的文件", "文件名", "Button1")
                        $a = 0
        EndIf
EndFunc   ;==>sr
这样也是不行的
麻烦
发表于 2009-11-26 14:27:25 | 显示全部楼层
回复 27# 老榆头


    你是什么系统?我这是xpsp3,测试完全正常:
选择的文本出现在“浏览”左边的文本框内
是“选择文件”
发表于 2009-11-26 14:35:19 | 显示全部楼层
将以下代码编译为a.exe
AdlibRegister('sr')
Dim $a = 1, $bt = "选择要加载的文件"
While $a = 1
        Sleep(50)
WEnd

Func sr()
        If WinActive($bt) Then
                ControlSetText($bt, "", "Edit1", '测试文字,有吗?')
                ControlClick($bt, "", "Button1")
                $a = 0
        EndIf
EndFunc   ;==>sr
你手动运行
1,运行“a.exe”
2,打开网页
3,点击浏览

啥反应?
发表于 2009-11-26 14:45:16 | 显示全部楼层
LZ回帖过慢,闪了。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-22 19:43 , Processed in 0.072929 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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