找回密码
 加入
搜索
查看: 10744|回复: 41

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

 火.. [复制链接]
发表于 2009-11-19 18:15:45 | 显示全部楼层 |阅读模式
本帖最后由 afan 于 2009-11-27 22:23 编辑

我想实现,利用GUI界面来上传文件夹内的所有文件
现在的问题是:
我需要
将文件的路径放到用JS弹出的对话框中的“文件名”这个Edit1中可是就是实现不了

代码如下
-----------------------------------------------------------
#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
EndIf

#Region ### START Koda GUI section ### Form=
$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(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $btnBrowse        ;浏览文件夹
                        $dir = FileSelectFolder("请选择文件夹:", "")
                        If Not @error Then GUICtrlSetData($inputDir,$dir)
                ;##        上传
                Case $btnUpload
                        $dir = GUICtrlRead($inputDir)        ;读取文件夹
                        ;<== 检查文件夹是否有错
                        If $dir="" Or _
                                Not StringInStr($dir,":") Or _
                                Not StringInStr($dir,"") 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]
                                                ;ConsoleWrite($aFileList[$iFile] & @CRLF)
                                                $sFilePath=$dir & "" & $aFileList[$iFile]
                                                ConsoleWrite($sFilePath & @CRLF)
                                                
                                                $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")
                                                ;_IELoadWait ($oIE)
                                                
                                                $title_dialog = "选择要加载的文件"
                                                ;$btn_file = "[CLASS:Edit;INSTANCE:1]"
                                                ;$btn_open="[CLASS:Button;INSTANCE:1]"
                                
                                  
                                                ;就是这个不知道该怎么处理,谢谢
                                WinWait($title_dialog,"")
                                                ControlSetText($title_dialog,"","Edit1","aaaaa")                                                
                                                
                                                ;_IEAction($o_login, "click")
                                                
                                                
                                                
                                                
                                        Next        ;<== 循环结束
                                        
                                        
                                EndIf        ;<== 检查是否有文件
                                
                                
                        EndIf        ;<== 检查文件夹是否有错

        EndSwitch
WEnd
----------------------------------------------------------------

站内搜索了一下,发现一篇讲到要用多线程
可是对多线程一头雾水,麻烦各位好友帮忙
 楼主| 发表于 2009-11-19 19:13:50 | 显示全部楼层
奇怪,我使用wingethandle时
$handle_win=WinGetHandle($title_dialog,"")
ConsoleWrite($handle_win & @CRLF)

$handle_filename = ControlGetHandle($Title_Dialog, "", "Edit1")
ConsoleWrite($handle_filename & @CRLF)
当对话框在的时候,没有结果显示
当我把对话框关闭时,过了一会,居然能够看到ConsoleWrite结果
发表于 2009-11-19 20:04:40 | 显示全部楼层
简单多线程就是用
AdlibEnable函数来监控
 楼主| 发表于 2009-11-19 21:14:25 | 显示全部楼层
谢谢ebhb 的回复
我试了下面的代码,不起作用
AdlibEnable("upload")

Func upload()
        
        $title_dialog = "选择要加载的文件"
        ;$btn_file = "[CLASS:Edit;INSTANCE:1]"
        ;$btn_open="[CLASS:Button;INSTANCE:1]"

        If Not WinActive($title_dialog,"") Then WinActivate($title_dialog,"")
        If WinActive($title_dialog,"") Then
                ControlSetText($title_dialog,"","Edit1","aaaaa")
        EndIf
        
EndFunc
发表于 2009-11-19 21:27:23 | 显示全部楼层
AdlibEnable必须放在程序开始处运行,不然没作用。
 楼主| 发表于 2009-11-19 23:41:51 | 显示全部楼层
是的,我放在程序开始处
还是卡住不动

谢谢回复
 楼主| 发表于 2009-11-20 13:07:11 | 显示全部楼层
问题还没有解决,官网也搜了,但找不到
请高手指教
 楼主| 发表于 2009-11-21 13:08:11 | 显示全部楼层
还没有解决,请教,谢谢
 楼主| 发表于 2009-11-21 21:59:16 | 显示全部楼层
有朋友知道的,麻烦说一下,谢谢
 楼主| 发表于 2009-11-21 22:00:24 | 显示全部楼层
哦,对了,那个测试地址,现在断电访问不了,可能要到周一,晕倒
 楼主| 发表于 2009-11-22 16:16:39 | 显示全部楼层
各位好友,那个测试地址可以用了,麻烦看一下
如何解决
谢谢
 楼主| 发表于 2009-11-22 16:33:21 | 显示全部楼层
真的很需要,可是自己解决不了,请高手指教,谢谢
 楼主| 发表于 2009-11-24 20:07:24 | 显示全部楼层
伤心
到现在除了ebhb热心回复之外
别的朋友都只看不回
再顶上去,麻烦知道的说一声,谢谢
 楼主| 发表于 2009-11-25 13:22:35 | 显示全部楼层
再顶,我想一定会有办法解决
这几天真是困扰
发表于 2009-11-25 13:44:48 | 显示全部楼层
那个网址能上传吗? 好像没反应……
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 02:32 , Processed in 0.084157 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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