[AHK]联动通达信其实很简单
大智慧浏览股票的时候 通达信跟着变动,反之也可以。
或者同花顺浏览股票的时候,通达信跟着变动 。
通达信有很多自定义消息,通过传递消息来完成某个小功能将大大简化编程,提高效率.就是win32调用.比如显示某支股票可以向通达信发送消息来实现。若无消息接口,模拟键盘输入来联动,效率低稳定性差。注意股票代码:沪市代码前加7,其它市场股票代码前面加6.
C代码
UINT UWM_STOCK = RegisterWindowMessage(_T("Stock"));::PostMessage(HWND_BROADCAST,UWM_STOCK,7580019,0);
//就是查看 580019 的页面,
::PostMessage(HWND_BROADCAST,UWM_STOCK,6031007,0);
//是查看031007页面
Python代码
#用pywin32,去掉_T()就ok。UWM_STOCK = RegisterWindowMessage("Stock");
PostMessage(HWND_BROADCAST,UWM_STOCK,7600027,0);
AutoHotkey代码
;这里指定0xFFFF就是HWND_BROADCAST,是对多个通达信窗口广播消息;
;如果指定具体窗口的句柄,则是向特定窗口发送消息。active_id:=0xFFFF
UWM_STOCK := DllCall("RegisterWindowMessage", Str,"Stock")
PostMessage,UWM_STOCK,7600050,0,,ahk_id %active_id%
--- c#实现--- 一大坨
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;namespace WgServer
{public class TdxWHelp //关联打开通达信K线图用的{private static Hashtable processWnd = new Hashtable();[StructLayout(LayoutKind.Sequential)]public struct ProcessEntry32{public uint dwSize;public uint cntUsage;public uint th32ProcessID;public IntPtr th32DefaultHeapID;public uint th32ModuleID;public uint cntThreads;public uint th32ParentProcessID;public int pcPriClassBase;public uint dwFlags;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]public string szExeFile;}public delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam);[DllImport("KERNEL32.DLL")]public static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processid);[DllImport("KERNEL32.DLL")]public static extern int CloseHandle(IntPtr handle);[DllImport("KERNEL32.DLL")]public static extern int Process32First(IntPtr handle, ref ProcessEntry32 pe);[DllImport("KERNEL32.DLL")]public static extern int Process32Next(IntPtr handle, ref ProcessEntry32 pe);[DllImport("user32.dll")]private static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);[DllImport("user32.dll", EntryPoint = "EnumWindows", SetLastError = true)]public static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, uint lParam);[DllImport("user32.dll", EntryPoint = "GetParent", SetLastError = true)]public static extern IntPtr GetParent(IntPtr hWnd);[DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId")]public static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId);[DllImport("user32.dll", EntryPoint = "IsWindow")]public static extern bool IsWindow(IntPtr hWnd);[DllImport("kernel32.dll", EntryPoint = "SetLastError")]public static extern void SetLastError(uint dwErrCode);[DllImport("user32.dll", SetLastError = true)]public static extern bool GetGUIThreadInfo(IntPtr hTreadID, ref ProcessEntry32 lpgui);[DllImport("user32.dll")]public extern static int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);[DllImport("user32.dll")]public extern static int RegisterWindowMessage(string stock);public static void SendStockCode(string StockCode){if (StockCode == null) { return; }if (StockCode.Length != 6) { return; }int SendStock;if (StockCode.Substring(0, 1) == "6" || StockCode.Substring(0, 2) == "11"){SendStock = int.Parse("7" + StockCode);}else if (StockCode == "999999"){SendStock = int.Parse("7" + StockCode);}else{SendStock = int.Parse("6" + StockCode);}//if (StockCode.Substring(0, 1) == "6")//{// SendStock = int.Parse( StockCode);//}//else if (StockCode == "999999")//{// SendStock = int.Parse(StockCode);//}//else//{// SendStock = int.Parse(StockCode);//}IntPtr hh = GetHandleByProcessName("TdxW.exe");// StringBuilder s = new StringBuilder(512);// int i = GetWindowText(hh, s, s.Capacity); int UWM_STOCK = RegisterWindowMessage("Stock");// int UWM_STOCK = RegisterWindowMessage("通达信金融终端");PostMessage(hh, UWM_STOCK, SendStock, 0);}public static IntPtr GetHandleByProcessName(string ProcessName){List<ProcessEntry32> list = new List<ProcessEntry32>();IntPtr handle = CreateToolhelp32Snapshot(0x2, 0);IntPtr hh = IntPtr.Zero;if ((int)handle > 0){ProcessEntry32 pe32 = new ProcessEntry32();pe32.dwSize = (uint)Marshal.SizeOf(pe32);int bMore = Process32First(handle, ref pe32);while (bMore == 1){IntPtr temp = Marshal.AllocHGlobal((int)pe32.dwSize);Marshal.StructureToPtr(pe32, temp, true);ProcessEntry32 pe = (ProcessEntry32)Marshal.PtrToStructure(temp, typeof(ProcessEntry32));Marshal.FreeHGlobal(temp);list.Add(pe);if (pe.szExeFile.ToUpper() == ProcessName.ToUpper()){bMore = 2;hh = GetCurrentWindowHandle(pe.th32ProcessID);break;}bMore = Process32Next(handle, ref pe32);}}return hh;}public static IntPtr GetCurrentWindowHandle(uint proid){IntPtr ptrWnd = IntPtr.Zero;uint uiPid = proid;object objWnd = processWnd[uiPid];if (objWnd != null){ptrWnd = (IntPtr)objWnd;if (ptrWnd != IntPtr.Zero && IsWindow(ptrWnd)) // 从缓存中获取句柄{return ptrWnd;}else{ptrWnd = IntPtr.Zero;}}bool bResult = EnumWindows(new WNDENUMPROC(EnumWindowsProc), uiPid);// 枚举窗口返回 false 并且没有错误号时表明获取成功if (!bResult && Marshal.GetLastWin32Error() == 0){objWnd = processWnd[uiPid];if (objWnd != null){ptrWnd = (IntPtr)objWnd;}}return ptrWnd;}private static bool EnumWindowsProc(IntPtr hwnd, uint lParam){uint uiPid = 0;if (GetParent(hwnd) == IntPtr.Zero){GetWindowThreadProcessId(hwnd, ref uiPid);if (uiPid == lParam) // 找到进程对应的主窗口句柄{if (!processWnd.Contains(uiPid)){processWnd.Add(uiPid, hwnd); // 把句柄缓存起来SetLastError(0); // 设置无错误}return false; // 返回 false 以终止枚举窗口}}return true;}}
}
[AHK]联动通达信其实很简单相关推荐
- python关联通达信pywin32_[AHK]联动通达信其实很简单
通达信有很多自定义消息,通过传递消息来完成某个小功能将大大简化编程,提高效率.就是win32调用.比如显示某支股票可以向通达信发送消息来实现.若无消息接口,模拟键盘输入来联动,效率低稳定性差.注意股票 ...
- c#桌面程序 调用 AutoHotKey脚本 联动通达信股票
Python结合通达信选股策略进行股票量化 上一篇文章中我讲过,可以做一个桌面程序展示 通达信选股策略量化结果和当日热点股票, 那么今天我们可以再细化一下这个功能,讲讲这里面涉及的重要技术节点: 1. ...
- [AHK]为通达信软件定义快捷键(发送按键法)
#SingleInstance force;为通达信软件定义快捷键#IfWinActive, ahk_class TdxW_MainFrame_Class ahk_exe TdxW.exeSpace: ...
- [AHK]为通达信标记文字窗口的按钮增加热键
本文用AutoHotkey给通达信客户端标记文字功能的[添加标记]按钮增加热键,抛砖引玉 举一反三,欢迎大家挖掘AutoHotkey辅助交易的能力,欢迎来[AutoHotkey辅助交易QQ群20874 ...
- [AHK]为通达信增加打开关闭交易窗口的功能热键
用文华财经习惯用空格呼叫出交易界面,通达信软件(招商证券)没有相应热键,便用AutoHotkey来帮它定义一个. #Persistent #SingleInstance Force Control:= ...
- [AHK]为通达信画线工具中的文字注释功能增加热键
不想每次都用鼠标去寻找定位这个功能,想热键直达. 方法一:点击坐标法,问题是分辨率不同会导致失效. SendMessage,0x111,4104,0,,ahk_class TdxW_MainFrame ...
- [AHK]通达信联动到同花顺下单
上面无需热键,鼠标滚轮自动实现通达信到同花顺联动,定制脚本50¥/小时. 以下为热键版,仅做示范 #Persistent #SingleInstance,ForcetdxTitle:="华泰 ...
- 通达信最佳买入指标!散户必备!简单易懂!
通达信最佳买入指标公式! 完全开源!超简单!新手小白也懂!选股必备! 直接看红绿箭头指示,看出临界低点和临界高点! 对散户炒股爱好者最有用!!! 要注意股票主图和副图相对应来看哦! 当看到红色箭头以及 ...
- 复盘的小小帮手——简单编程,进阶范例 通达信基础范例
转自本人其他平台 希望通过这些小小的东西帮助能真正帮到的人. 由于本人本科是数学专业,大学期间有学编程类的语言,从事的是量化投资,所以这些编程对于我是很简单的东西.考虑到有一部分玩家用通达信,而且没编 ...
最新文章
- pbs分解_UML使用产品分解结构(PBS)教程
- dede mysql x_认识Dede的mysql数据库结构功能
- 禁止更改计算机名_【复习收藏】计算机操作系统考点归纳
- Bootstrap table后端分页(ssm版)
- Android自定义抛出异常
- gulimall(谷粒商城) 是一个综合性的B2C平台,包括前台商城系统以及后台管理系统
- nginx开启支持websocket连接
- [论文阅读] Automatic Polyp Segmentation via Multi-scale Subtraction Network
- Ubuntu MySQL 配置 time_zone
- HttpClient 设置不当引发的一次雪崩
- Net Core 实现谷歌翻译ApI 免费版
- python正版软件多少钱_多款正版软件 + 付费教程迎来史低价,少数派「双十一」活动全面开始...
- 从 API、UI、结构到商业产品设计精髓
- webgl的平行光漫反射示例
- html计时加速,HTML-加速、再加速(下)_html
- Excel之DateDif函数
- 阿里云配置服务器,短信,域名
- 【Xgen UE】将Xgen制作好的毛发导入UE
- MATLAB数值取整
- 人工智能在刷题学海战术中的作用