Coder Social home page Coder Social logo

thsauto's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

thsauto's Issues

在其上下文中,该请求的地址无效。

  • Serving Flask app 'server'
  • Debug mode: off
    在其上下文中,该请求的地址无效。�
    这是啥原因啊
    PS C:\Users\shams\Desktop\thsauto-master> python .\server.py 192.168.1.116 6000 C:\Users\shams\Desktop\thsauto-master\xiadan.exe

192.168.1.116 6000 C:\Users\shams\Desktop\thsauto-master\xiadan.exe

  • Serving Flask app 'server'
  • Debug mode: off
    在其上下文中,该请求的地址无效。�

应该增加一个验证码错误重试机制

def input_ocr(self):
    ocr = self.get_ocr_hwnd()
    i = 0
    while ocr>0 and i < 10:
        self.capture_window(ocr, 'ocr.png')

        code = pytesseract.image_to_string(Image.open('ocr.png')).strip('\n')
        ctrl = ctypes.windll.user32.GetWindow(ocr, win32con.GW_HWNDNEXT)
        ctrl = ctypes.windll.user32.GetWindow(ctrl, win32con.GW_HWNDNEXT)
        ctrl = ctypes.windll.user32.GetWindow(ctrl, win32con.GW_HWNDNEXT)
        set_text(ctrl, code)
        hot_key(['enter'])

        # with open('ocr.png', 'rb') as f:
        #     data = f.read()
        #     code = DdddOcr.classification(data)
        #     ctrl = ctypes.windll.user32.GetWindow(ocr, win32con.GW_HWNDNEXT)
        #     ctrl = ctypes.windll.user32.GetWindow(ctrl, win32con.GW_HWNDNEXT)
        #     ctrl = ctypes.windll.user32.GetWindow(ctrl, win32con.GW_HWNDNEXT)
        #     set_text(ctrl, code)
        #     hot_key(['enter'])

        i += 1
        err_text = get_text(ctypes.windll.user32.GetWindow(ocr, win32con.GW_HWNDNEXT))
        if u'验证码错误' in err_text:
            left, top, right, bottom = win32gui.GetWindowRect(ocr)
            win32api.SetCursorPos(((left + right) // 2,  (top + bottom) // 2))
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
            time.sleep(sleep_time)
        else:
            return

有点小bug

def get_text(hwnd):
length = ctypes.windll.user32.SendMessageW(hwnd, win32con.WM_GETTEXTLENGTH)
buf = ctypes.create_unicode_buffer(length + 1)
ctypes.windll.user32.SendMessageW(hwnd, win32con.WM_GETTEXT, length, ctypes.byref(buf)) # 这里的length改成length+1,否则中文存在切断变成一个问号
return buf.value

def hot_key(keys):
time.sleep(sleep_time)
for key in keys:
win32api.keybd_event(VK_CODE[key], 0, 0, 0)
# 这里插入一个小的延时,否则有时候两次键盘虚拟事件太快,导致失效
time.sleep(0.01)
for key in reversed(keys):
win32api.keybd_event(VK_CODE[key], 0, win32con.KEYEVENTF_KEYUP, 0)

又出状况了

本来跑的好好的,我的server运行在另外一台局域网内的服务器上,平时用的远程桌面连接,都正常,但是当我断开远程桌面连接后,就出问题了,表现在:
win32gui.SetForegroundWindow(hwnd)调用和win32api.SetCursorPos((x,y))调用出现‘’No error message is available‘’错误提示。
win32api.SetCursorPos((x,y))改成ctypes.windll.user32.SetCursorPos(x, y)后,不报错了,但是SetForegroundWindow解决不了,网上说在调用他之前执行
win32com.client.Dispatch("WScript.Shell").SendKeys('%')
也无济于事。
可能原因是远程桌面RDP断开后,服务器可能不保留GUI的上下文,导致某些函数执行出错?

关于ocr

ddddocr识别率不高,经常把大写字母识别成小写字母,这也服了,大小写差异很大的,同花顺是大小写敏感,我尝试了几个ocr,发现tesseract成功率很高,还没碰到过失败,速度也快,唯一是需要从官网下载安装一次。

又发现一个问题

ocr识别时有时候会出现特殊字符,导致输入不进去,比如 'fvfF'识别成了'f£VFTF',其中£键入不进去,导致set_text会抛出Exception,进而程序进行不下去,验证码窗口也没消失,所以set_text加上try,发现异常就点击验证码图片,重新生成一个来重新尝试

自动提交有问题

url 上传订单后自动传入代码价格,有问题,股票代码确实,无法完整填充

hot_key稳定性问题

测试中发现程序经常不能正常复制表格,后来发现是hot_key的问题。程序执行Ctrl+c,但是客户端只收到了c。目前看是按键过程执行过快的原因,我在两个keybd_event后面分别加了time.sleep(0.2)就可以正常使用了👀。

(5, 'SetCursorPos', '拒绝访问')

你好,不知道你是在什么环境下跑的,我是跑在阿里云的windows server 2019上的,64位机,经常会出现(5, 'SetCursorPos', '拒绝访问')的错误,特别是我要查询当前持仓的时候,特别容易出现,现在的自动交易程序因为这个不稳定因素,执行不下去了,请教,多谢指点

Should install which ths client ?

I see 网上股票交易系统 5.0.
应该安装哪个名字的同花顺客户端? 同花顺自己提供的什么版本 还是券商的版本?

服务挂上之后请求报错

服务端报错信息 [07/Mar/2022 10:43:30] "GET /thsauto/balance HTTP/1.1" 400 -
请求端报错信息 {"code":1,"msg":"(1400, 'GetWindowRect', '无效的窗口句柄。')","status":"failed"}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.