|

30精币
需要从通达信标准板7.6的内存中获取股票代码,大概实现方式如下,有偿加V skystonelss
import os
import pythoncom
import pymem
import re
import time
import psutil
import win32gui# Win 图形界面接口,主要负责操作窗口切换以及窗口中元素
import win32api# Win 开发接口模块,主要负责模拟键盘和鼠标操作
import win32con# 全面的库函数,提供Win32gui和Win32api需要的操作参数
import pyWinhook
import ctypes
import win32com.client
import sys
hookmonitor = pyWinhook.HookManager()
old_code = None
Share_hwnd = None
# 读取指定应用程序中dll库的基址
def Get_moduladdr(dll, exe): # 读DLL模块基址
GetGameProcess = pymem.Pymem(exe)
modules = list(GetGameProcess.list_modules()) # 列出exe的全部DLL模块
for module in modules:
if module.name == dll:
# print(module.name) # 模块名字
# print(module.lpBaseOfDll) # 模块基址
# print("找到了")
Moduladdr = module.lpBaseOfDll
return GetGameProcess, Moduladdr
def get_tdx_add_code(OffsetAdd):
try:
Proc, BaseAdd = Get_moduladdr("Viewthem.dll", "tdxw.exe")#D:\\股票交易\\交易软件\\通达信764\\
ptr = Proc.read_int(BaseAdd+OffsetAdd)
print("股票代码指针:"+hex(ptr))
data = Proc.read_bytes(ptr, 6)
Stock_code1 = data.decode('utf-8')
strlist = list(Stock_code1)
Stock_code = "".join(strlist)
except Exception as e:
print("")
# print("无法取通达信的代码,检查通达信是否打开")
return Stock_code
# 获取开心果版股票代码
def get_tdx_kxg_code():
try:
# 获取开心果6月版股票代码
Stock_code=get_tdx_add_code(0x1585B4)
except Exception as e:
# 获取开心果7月版股票代码
try:
Stock_code=get_tdx_add_code(0x000366D0)
# print("应用程序无法取通达信6的代码,检查通达信是否打开")
# hookmonitor.UnhookKeyboard()#取消键盘钩子
# hookmonitor.UnhookMouse()#取消鼠标钩子
except Exception as e:
print("通达信开心果7代码读取失败")
else:
print("读取通达信7代码成功!")
else:
print("读取通达信代码成功!")
return Stock_code
if __name__ == '__main__':
print(get_tdx_kxg_code())
|
|