自动下单不太土的办法

Discussion in 'General Topics on Software and Data' started by laot, Feb 22, 2007.

  1. using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using AutoItX3Lib;

    namespace gx
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void btnOpen_Click(object sender, EventArgs e)
    {
    AutoItX3Class v3 = new AutoItX3Class();

    v3.Run(@"M:\1.exe", @"M:\\", 1);
    v3.Sleep(500);
    v3.MouseClick("left", 661, 449, 1, 0);
    v3.Sleep(500);
    v3.MouseClick("left", 603,393, 1, 0);
    v3.Send("989898", 0);
    v3.MouseClick("left", 605, 416, 1,0);
    v3.Send("9sd#irtf", 1);
    v3.MouseClick("left", 612, 449, 1, 0);
    }
    }
    }

    原来也有在C#下做过,感觉不好。
    http://www.wealth-lab.cn/download.php?file=6f912b51846a410b847fd96509b0f1a5
    http://www.wealth-lab.cn/download.php?file=05dc56c995c85a0808642c5e4aa0c345
    http://www.wealth-lab.cn/download.php?file=3b6082f5d386590648c056c85a49dcb8
     
  2. 楼上的兄弟,请说明下.
     
  3. 这个方法有缺点

    呵呵,看了上面的链接,里面的代码本人曾在海洋论坛里面首先发表的。
    当时想用让飞狐有自动下单的功能,不过我早就放弃了。因为我发现wealthLab更好!
    wealthlab+autoitX+WealthLab+核心下单程序,用VB.net做成下单接口,也实现了自动下单的功能。
    不过稳定性不理想,而且autoitx插件放在接口程序中,有些autoitx函数工作起来不如在autoit脚本工作可靠。
     
  4. 一个更加可靠的方案(设想)

    用autoit,做下单服务器,而不是把autoitX插件放在下单dll中。
    理由 1、autoit脚本稳定,函数多,维护方便。
    2、集成多种下单接口很方便
     
  5. 呵呵,下单用键盘鼠标模拟不难,反馈你怎么处理? 告诉WLD下单完毕或者撤单完毕或者单子成交了。
     
  6. 反馈的结果怎么得到呢?我也想知道:)

    是不是抓图,然后再识别啊?
     
  7. 关于反馈的问题

    我的解决方法是,提交买或卖后,不断查询相应的信息,直到交易已经完成。
    可以设置一个timer,每隔一定时间进行一次查询,如果交易都完成,则不必查询了。
     
  8. 如果哪位高手可以把下单程序进行逆向工程?

    无论是模拟键盘,还是Autoit的基于消息机制的控制下单的方法,稳定性都不好。
    如果哪位高手可以把下单程序逆向,或者增加接口功能供其它程序调用,那时才好。
     
  9. 不用抓图,识别

    如果在下单客户端软件上查询后,返回的信息在listview控件中,Autoit有函数ControlListView可以取得里面的内容。
     
  10. 哦,人才啊
     
  11. 学习了一下autoit.的确很好用。不过
    恒生的TnewList类没法用autoit 的ControlListView 函数读取。ControlListView 只能读ListView32类型的东西。
     
  12. 网上关于TNewList类连个鬼影子的说明也没有。只能搜到我们hylt在谈
     
  13. tnnd,我没办法用过OCR,效果不太稳定
     
  14. laot老大好象是7*24爬在网上,一有动静就出来了。
     
  15. 恒生的TNewList的行为(对消息的响应)既不是TListView,也不是StringGrid,也不是SysListView32...不知道它是从什么控件继承过来的。彻底晕菜了。
     
  16. 去tnnd啦....内存跟踪到了...数据包所占内存是从堆里面分配出来的,地址是动态的....难不成让我改exe程序里面的代码...太暴力了点.............
    从内存里面的数据来看,猜想是TStringGird类型,不过是经过包装了。TStringGird对Windows的GETITEMTEXT之类的消息没反应,只能Hook了。网上倒是有些相关的资料。http://cache.baidu.com/c?m=9d78d513...9c7&p=8b2a9545c89f0add1ebd9b7c4657&user=baidu
     
    Last edited by a moderator: May 10, 2008
  17. OCR? 就是从屏幕抓结果?

    通用的OCR不知好不好搞。而我的另外的方法就是直接抓图片,把“0”到“9”,还有其他会出现的文字的图片分别抓下来。然后在屏幕上抓结果的时候和这些小图片逐一比对,符合了就把这图片对应的字符串拼起来,最后可以得到一个集合的结果字符串。

    比较笨拙的方法,后来忙了其他也没做这个了。laot兄可以参考一下。
     
  18. 抓内存倒是好方法,关注netf兄的进展,学习学习。
     
  19. 万苦千难,也挡不住执着的人们
    不建议在如此脆弱的基础上构建系统
    等待一个健壮的架构的出现吧
    如果仅是玩,没意见