高考录取查询系统,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数据库中。第一种方法是可以实现的,现在就想做一下第二种方法,请高人不吝赐教!!

解决方案 »

  1.   

    第二种方法思路有问题,你该发送到客户端的html没有用,应该修改服务器端的html才能行的
    在服务器端加一段脚本直接去掉onpaste不就行了
      

  2.   

    楼主是做winform的吧,怎么看起来都是客户端开发的知识。可以直接通过sqlserver来查询excel中的文件,sql server有相关的函数。直接一个html去提交到一个服务器页,再进行sqlserver查询就完了
      

  3.   

    第一步;
    写个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>
      

  4.   

    你试下开个ie,选项里面禁用javascript,就可以粘贴了
      

  5.   

    truelove12,重点不在这里,重点是如何去一个一个查到每个考生的录取结果,用什么数据库都无所谓了。
      

  6.   

    所有的录取结果不是保存在excel中吗?
      

  7.   

    第一种方法,完全可以做成自动的,而不是每次都只一次。这个,你得再好好看看按键精灵。粗心的话,不仅编程不行,用软件也不行。第二种方法不说了,你可以试,或看别人答案。我想说的是第三种方法,按你说明的情况来看,根本不用这么麻烦,只要知道查询所对应的后台程序,用一个WEB后台程序循环考号依次去GET或POST提交到目标服务器的目标查询页面就可以了。找个小偷程序的示例代码看看就行了,性质是一样的。
      

  8.   

    第一个:按键精灵可以无限循环执行,每次执行的时候把考生号变量变动即可,不知道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楼指点迷津,给个清晰的思路。
      

  9.   

    第一个:按键精灵可以无限循环执行,每次执行的时候把考生号变量变动即可,不知道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楼指点迷津,给个清晰的思路。