|
论坛http://bbs.aardio.com/forum.php? ... ;tid=289&extra=中一个代码,通过钩子可以设置html中file控件的上传文件,但这个帖子中代码是只是设置一个文件,如果是想设置多个文件应该怎么办呢?
以下代码是整理过的,方便各位测试
- import win.ui;
- import web.form;
- /*DSG{{*/
- var winform = win.form( bottom=523;scroll=1;right=744;text="演示表单上传控件赋值";cls="DLG_WEB" )
- winform.add( )
- /*}}*/
- var wb = web.form( winform );
- wb.noScriptErr=true;
- wb.html = /**
- <!doctype html>
- <html>
- <body>
- <form>
- <input type="file" name="filename" multiple="multiple" style="width:1000px" /><br>
- </form>
- </body>
- </html>
- **/
- winform.show();
- wb.wait();
- import raw.apiHook;
- class OPENFILENAMEW{
- INT structSize;
- INT hwndOwner;
- pointer instance ;
- pointer filter;
- pointer customFilter;
- INT maxCustFilter;
- INT filterIndex;
- pointer file ;
- INT maxFile;
- pointer fileTitle;
- INT maxFileTitle;
- pointer initialDir;
- pointer title;
- INT flags;
- WORD fileOffset;
- WORD fileExtension;
- pointer defExt;
- pointer lCustData;
- pointer lpfnHook;
- pointer lpTemplateName;
- pointer pvReserved;
- INT dwReserved;
- INT flagsEx;
- }
- hookGetOpenFileNameW = raw.apiHook("comdlg32.dll", "GetOpenFileNameW", "int(pointer)",
- function (pfn) {
- var oldofn = raw.convert(pfn ,OPENFILENAMEW() );
- path = ..string.toUtf16("D:\screen.bmp" ); //注意必须是确实存在的路径
- ::CopyMemory( oldofn.file,path,#path );
- winform.setTimeout(
- function(){
- hookGetOpenFileNameW.unInstall();//用完立即卸载钩子,但是这里必须用一个异步的延时函数,让钩子函数可以先返回再销毁
-
- },1
- )
- return 1;
- }
- ).install();
- ele = wb.getEle("filename");
- ele.click();
- win.loopMessage();
复制代码 |
|