用JS弹出的对话框内的控件,如何设置文本
本帖最后由 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
;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 = ""
;$btn_open=""
;就是这个不知道该怎么处理,谢谢
WinWait($title_dialog,"")
ControlSetText($title_dialog,"","Edit1","aaaaa")
;_IEAction($o_login, "click")
Next ;<== 循环结束
EndIf ;<== 检查是否有文件
EndIf ;<== 检查文件夹是否有错
EndSwitch
WEnd----------------------------------------------------------------
站内搜索了一下,发现一篇讲到要用多线程
可是对多线程一头雾水,麻烦各位好友帮忙
:face (35): 奇怪,我使用wingethandle时$handle_win=WinGetHandle($title_dialog,"")
ConsoleWrite($handle_win & @CRLF)
$handle_filename = ControlGetHandle($Title_Dialog, "", "Edit1")
ConsoleWrite($handle_filename & @CRLF)
当对话框在的时候,没有结果显示
当我把对话框关闭时,过了一会,居然能够看到ConsoleWrite结果 简单多线程就是用
AdlibEnable函数来监控 谢谢ebhb 的回复
我试了下面的代码,不起作用AdlibEnable("upload")
Func upload()
$title_dialog = "选择要加载的文件"
;$btn_file = ""
;$btn_open=""
If Not WinActive($title_dialog,"") Then WinActivate($title_dialog,"")
If WinActive($title_dialog,"") Then
ControlSetText($title_dialog,"","Edit1","aaaaa")
EndIf
EndFunc
AdlibEnable必须放在程序开始处运行,不然没作用。 是的,我放在程序开始处
还是卡住不动
谢谢回复 问题还没有解决,官网也搜了,但找不到
请高手指教 还没有解决,请教,谢谢 有朋友知道的,麻烦说一下,谢谢 哦,对了,那个测试地址,现在断电访问不了,可能要到周一,晕倒 各位好友,那个测试地址可以用了,麻烦看一下
如何解决
谢谢 真的很需要,可是自己解决不了,请高手指教,谢谢 伤心:face (30):
到现在除了ebhb热心回复之外
别的朋友都只看不回
再顶上去,麻烦知道的说一声,谢谢 再顶,我想一定会有办法解决
这几天真是困扰 那个网址能上传吗? 好像没反应……