搜索
查看: 17830|回复: 24

[web] 运用API钩子直接给只读的表单上传控件赋值

    [复制链接]

110

主题

1385

帖子

7885

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7885
发表于 2011-10-29 10:36:24 | 显示全部楼层 |阅读模式

import web.form;
/*DSG{{*/
var winform = win.form(text="演示表单上传控件赋值";right=744;bottom=523)
winform.add()
/*}}*/

var wb = web.form( winform );
wb.html =
/**
<!doctype html>
<html>
<head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <title>演示表单上传控件赋值</title>
</head>
<body>
        <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
        <label for="upload0"></label>
        <input type="file" name="upload0" id="upload0" />
        </form>
        <p>文件上传控件的值是只读的,不能修改.<br />
        这里使用aardio中的raw.hookApi创建一个函数钩子,拦截网页对文件对话框的调用,<br />
        并直接返回我们预设的值即可。</p>
</body>
</html>
**/


winform.show()  
wb.wait();

import fsys.dlg;
import raw.apiHook;
hookGetOpenFileNameW =
function (pfn) {
    ..raw.mixin(pfn,fsys.dlg.OPENFILENAME(0x208,io._exepath));
   
return 1;
}
var hook = raw.apiHook("comdlg32.dll", "GetOpenFileNameW", "int(pointer)", hookGetOpenFileNameW)
hook.install();

win.loopMessage();
回复

使用道具 举报

4

主题

18

帖子

127

积分

一级会员

Rank: 2

积分
127
发表于 2011-10-29 10:42:23 | 显示全部楼层

太强啦,感谢Jacen

太强啦,感谢Jacen
回复

使用道具 举报

5

主题

125

帖子

1338

积分

四级会员

Rank: 6Rank: 6

积分
1338
发表于 2011-10-29 10:52:10 | 显示全部楼层

钩子比较强大,好好学习下

钩子比较强大,好好学习下
回复

使用道具 举报

39

主题

196

帖子

1274

积分

四级会员

Rank: 6Rank: 6

积分
1274
发表于 2011-10-29 10:52:43 | 显示全部楼层

老大,强大终于又范例了,注入中^_^

老大,强大终于又范例了,注入中^_^
回复

使用道具 举报

33

主题

581

帖子

3494

积分

荣誉会员

Rank: 8Rank: 8

积分
3494
发表于 2011-10-29 12:58:53 | 显示全部楼层

支持一下,很好很强大

支持一下,很好很强大
回复

使用道具 举报

92

主题

1503

帖子

8141

积分

荣誉会员

Rank: 8Rank: 8

积分
8141
发表于 2011-10-29 13:12:25 | 显示全部楼层

非常不错,谢谢老大

非常不错,谢谢老大
回复

使用道具 举报

2

主题

50

帖子

870

积分

三级会员

Rank: 4

积分
870
发表于 2011-10-29 13:14:30 | 显示全部楼层

好东东啊,老大V5!!!

好东东啊,老大V5!!!
回复

使用道具 举报

3

主题

30

帖子

194

积分

一级会员

Rank: 2

积分
194
发表于 2011-10-29 15:38:27 | 显示全部楼层

看不明白啊,纯支持

看不明白啊,纯支持
回复

使用道具 举报

3

主题

22

帖子

144

积分

一级会员

Rank: 2

积分
144
发表于 2011-10-29 16:29:31 | 显示全部楼层

请问不可以更新到最新版吗

请问不可以更新到最新版吗
回复

使用道具 举报

13

主题

97

帖子

531

积分

三级会员

Rank: 4

积分
531
发表于 2011-10-31 13:59:46 | 显示全部楼层

[quote][size=2][color=#999999]Dic 发表于 2011-10-31 13:36[/color] [url=http://bbs.a

Dic 发表于 2011-10-31 13:36
这个用处不大吧,一般控件上禁止的文件类型上传时服务器端都会同时禁止的,写进去也没用啊


用处是方便,不需要你手工操作赋值,不把服务器禁止的文件上传。
http://bbs.aardio.com/thread-891-1-1.html 看到吗 这里有需求
帮我解决问题 我会送分分喔
回复

使用道具 举报

42

主题

179

帖子

947

积分

三级会员

Rank: 4

积分
947
发表于 2011-11-1 16:06:00 | 显示全部楼层

假如上传表单是flash控件,有什么思路,可以控制它呢?{:soso_e132:}[url]http://bbs.aardio.com/thread-3325-

假如上传表单是flash控件,有什么思路,可以控制它呢?{:soso_e132:}http://bbs.aardio.com/thread-3325-1-2.html

点评

只能用POST  发表于 2011-11-1 16:58
回复

使用道具 举报

20

主题

134

帖子

748

积分

三级会员

各种菜

Rank: 4

积分
748
发表于 2011-11-1 17:51:53 | 显示全部楼层

[i=s] 本帖最后由 我是老废 于 2011-11-1 17:52 编辑 [/i]
本帖最后由 我是老废 于 2011-11-1 17:52 编辑

  <input type="file" name="upload0" id="upload0"  readonly = 1 />
这样才是只读的吧

点评

不是这个意思,上传控件是禁止编程赋值的。  发表于 2011-11-1 19:06

快手,让我的心插上翅膀
回复

使用道具 举报

42

主题

179

帖子

947

积分

三级会员

Rank: 4

积分
947
发表于 2011-11-2 11:05:37 | 显示全部楼层

[quote][size=2][color=#999999]yanyang2009 发表于 2011-11-1 16:06[/color] [url=forum

yanyang2009 发表于 2011-11-1 16:06
假如上传表单是flash控件,有什么思路,可以控制它呢?http://bbs.aardio.com/thread-3325-1-2.html

恩..多谢指点,上次试了,没有成功!我再试试..
回复

使用道具 举报

0

主题

5

帖子

236

积分

二级会员

Rank: 3Rank: 3

积分
236
发表于 2011-11-4 15:21:30 | 显示全部楼层

这个太有用了,太感谢老大了

这个太有用了,太感谢老大了
回复

使用道具 举报

4

主题

158

帖子

901

积分

三级会员

Rank: 4

积分
901
发表于 2011-11-4 21:31:19 | 显示全部楼层

这个需要研究研究

这个需要研究研究
回复

使用道具 举报

4

主题

158

帖子

901

积分

三级会员

Rank: 4

积分
901
发表于 2011-11-4 21:43:11 | 显示全部楼层

有用,备查

有用,备查
回复

使用道具 举报

0

主题

1

帖子

8

积分

新手入门

Rank: 1

积分
8
发表于 2011-11-10 21:02:02 | 显示全部楼层

API钩子是否可以拦截其它进程的函数呀

API钩子是否可以拦截其它进程的函数呀
回复

使用道具 举报

10

主题

55

帖子

577

积分

三级会员

Rank: 4

积分
577
发表于 2012-3-6 04:52:06 | 显示全部楼层

强大,学习了

强大,学习了
回复

使用道具 举报

0

主题

2

帖子

19

积分

新手入门

Rank: 1

积分
19
发表于 2016-6-7 23:53:49 | 显示全部楼层

麻烦帮忙大家解答一下

麻烦帮忙大家解答一下:apihook上传图片编码出错



运行错误 :       E:\1.jpg鿐洱㥪泸碸ө퓀ì

正确应该是这样子的  :      E:\1.jpg


以下是运行的代码:

import web.form;
/*DSG{{*/
var winform = win.form(text="演示表单上传控件赋值";right=744;bottom=523)
winform.add()
/*}}*/

var wb = web.form( winform );
wb.html = /**
<!doctype html>
<html>
<head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <title>演示表单上传控件赋值</title>
</head>
<body>
        <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
        <label for="upload0"></label>
        <input type="file" name="upload0" id="upload0" />
        </form>
        <p>文件上传控件的值是只读的,不能修改.<br />
        这里使用aardio中的raw.hookApi创建一个函数钩子,拦截网页对文件对话框的调用,<br />
        并直接返回我们预设的值即可。</p>
</body>
</html>
**/

winform.show()  
wb.wait();

import fsys.dlg;


//导入函数钩子支持库
import raw.apiHook;


//声明钩子需要用到的结构体
OPENFILENAMEW = class{
   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;
}   

GetOpenFileNameW_Hook = function (pfn) {

var path = string.toUnicode("E:\1.jpg");

     
::CopyMemory(  raw.convert(pfn ,OPENFILENAMEW() ).file,path,#path );  
     
    winform.setTimeout(
        function(){
            hook.unInstall();//用完立即卸载钩子
        }
    )   
    return 1;
}

//安装API钩子
hook = raw.apiHook("comdlg32.dll", "GetOpenFileNameW", "int(pointer)", GetOpenFileNameW_Hook).install();

//浏览图片
var ele = wb.getEle("upload0")  
ele.click()

win.loopMessage();

回复

使用道具 举报

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-22 07:09 , Processed in 0.093750 second(s), 26 queries , Wincache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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