高考录取查询系统,web系统,asp.net做的,绑定计算机的网卡mac地址、用户名和密码。
指定计算机登录进去之后,有个输入考生号的文本框和一个查询按钮,输入考生号后单机查询按钮,下边有个table会显示该考生的录取结果和录取院校,专业,高考成绩等等。现在要把6万考生全部查询出来,用按键精灵的话有个问题,文本框禁止粘贴,请看文本框的属性代码:
<input name="textbox1" type="text".......onpaste="return false">解决方案:
1、新建一个excel文件,把所有考生号放进来,然后从第一行开始,选中考生号后,ctrl+c复制,在按键精灵中Clipboard = Plugin.Sys.GetCLB()即可获取剪切板内容,然后单击文本框后按键精灵使用saystring(clipboard)即可输入此考生号,最后查询后把内容一个一个复制到excel该行中。缺点,太慢,一个一个信息进行复制,容易出错。并且必须设法检测页面加载是否完毕。
2、使用winform程序。建一个winform,加载该网址并且登录后,修改该文本框的属性,去掉onpaste,或者直接将access中的考生号赋值给文本框,触发按钮单击时间,检测页面加载完毕后,把页面内的内容放入access数据库中。第一种方法是可以实现的,现在就想做一下第二种方法,请高人不吝赐教!!
指定计算机登录进去之后,有个输入考生号的文本框和一个查询按钮,输入考生号后单机查询按钮,下边有个table会显示该考生的录取结果和录取院校,专业,高考成绩等等。现在要把6万考生全部查询出来,用按键精灵的话有个问题,文本框禁止粘贴,请看文本框的属性代码:
<input name="textbox1" type="text".......onpaste="return false">解决方案:
1、新建一个excel文件,把所有考生号放进来,然后从第一行开始,选中考生号后,ctrl+c复制,在按键精灵中Clipboard = Plugin.Sys.GetCLB()即可获取剪切板内容,然后单击文本框后按键精灵使用saystring(clipboard)即可输入此考生号,最后查询后把内容一个一个复制到excel该行中。缺点,太慢,一个一个信息进行复制,容易出错。并且必须设法检测页面加载是否完毕。
2、使用winform程序。建一个winform,加载该网址并且登录后,修改该文本框的属性,去掉onpaste,或者直接将access中的考生号赋值给文本框,触发按钮单击时间,检测页面加载完毕后,把页面内的内容放入access数据库中。第一种方法是可以实现的,现在就想做一下第二种方法,请高人不吝赐教!!
在服务器端加一段脚本直接去掉onpaste不就行了
写个sqlserver的存储过程create proc search
(
@条件 nvarchar(255)
)
as
begin
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Data Source=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$)
where 条件=
end第二步,用你熟悉的服务器端语言,调用存储过过程,如search.aspx,从查询字符串中获取keyword第三步,写个html<form action="search.aspx" method="get">
<input type="text" name="keyword" />
<input type="submit" value="submit" />
</form>
第二种方法,14楼请看关键部分代码:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://address/(S(xkbmr0jdgbw2xkqsl4sxf445))/index.aspx");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
HtmlElement txt = webBrowser1.Document.Window.Frames[3].Document.All["Textbox3"];//此处属性即可访问某个frameset中的htmlelement。
//txt.SetAttribute("onpaste", "");//此处即可去掉文本框的禁止粘贴。
txt.InnerText = "11111111111111";
HtmlElement btn = webBrowser1.Document.Window.Frames[3].Document.All["ImageButton1"];
btn.Focus();//先把按钮设为焦点,否则下一句click会有问题。
btn.InvokeMember("click");
}
你说的第三种方法是不是模拟提交的方法?httprequest GET/POST 模拟提交?是不是先用sniffer?十分感谢14楼。万望14楼指点迷津,给个清晰的思路。
第二种方法,14楼请看关键部分代码:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://address/(S(xkbmr0jdgbw2xkqsl4sxf445))/index.aspx");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
HtmlElement txt = webBrowser1.Document.Window.Frames[3].Document.All["Textbox3"];//此处属性即可访问某个frameset中的htmlelement。
//txt.SetAttribute("onpaste", "");//此处即可去掉文本框的禁止粘贴。
txt.InnerText = "11111111111111";
HtmlElement btn = webBrowser1.Document.Window.Frames[3].Document.All["ImageButton1"];
btn.Focus();//先把按钮设为焦点,否则下一句click会有问题。
btn.InvokeMember("click");
}
你说的第三种方法是不是模拟提交的方法?httprequest GET/POST 模拟提交?是不是先用sniffer?十分感谢14楼。万望14楼指点迷津,给个清晰的思路。