本人做银江的数据接口C#程序时,在Stock_Init初始化后,银江启动,但无法接收到数据,但用飞狐却能正常使用,不知道什么原因,请高手指教。以下是代码:这个 public partial class StockAdapter : Form { private const int RCV_WORK_SENDMSG = 4; // 版本 2 建议使用的方式 // 其他工作方式保留 // 消息类型 private const int RCV_REPORT = 0x3f001234; private const int RCV_FILEDATA = 0x3f001235; private const int RCV_FENBIDATA = 0x3f001301; private const string TS_StockDrv_IdTxt = "TongShi_StockDrv_2.00"; // 通视信息卡特征串 //==================================== 数据结构 ================================================= // 证券市场 private const ushort SH_MARKET_EX = 18515; //"HS"; 上海 private const ushort SZ_MARKET_EX = 23123; //"ZS"; 深圳 private const string HK_MARKET_EX = "KH"; // 'HK' 香港 // 文件数据类型 // 结构数组形式的文件数据 private const int FILE_HISTORY_EX = 2; // 补日线数据 private const int FILE_MINUTE_EX = 4; // 补分时线数据 private const int FILE_POWER_EX = 6; // 补充除权数据 private const int FILE_MIN5_EX = 81; // 补5分钟数据 private const int FILE_MIN1_EX = 82; // 补1分钟数据 private const int FILE_STROKE_EX = 83; // 分笔数据 private const int FILE_MULTISORT_EX = 0x708; // 综合排名 private const int FILE_DETAIL_EX = 0x709; // 成交明细 private const int FILE_BASE_EX = 0x1000; // 钱龙兼容基本资料文件,m_szFileName仅包含文件名 private const int FILE_NEWS_EX = 0x1002; // 新闻类,其类型由m_szFileName中子目录名来定 private const int FILE_HTML_EX = 0x1004; // HTML文件,m_szFileName为URL private const int FILE_SOFTWARE_EX= 0x2000; // 升级软件 private const int FILE_SHAZQDATA_EX= 0x3000; // 上海债券净价交易 private const int FILE_TYPE_RES = -1; // 保留 // 消息子类型 private const int News_Sha_Ex = 2; // 上证消息 private const int News_Szn_Ex = 4; // 深证消息 private const int News_Fin_Ex = 6; // 财经报道 private const int News_TVSta_Ex = 8; // 电视台通知 private const int News_Unknown_Ex = -1; // 未知提供者 //Definition For nInfo of Function GetStockDrvInfo(int nInfo,void * pBuf); private const int RI_IDSTRING = 1; // 厂商名称,返回(LPCSTR)厂商名 private const int RI_IDCODE = 2; // 卡号 private const int RI_VERSION = 3; // 驱动程序版本 private const int RI_ERRRATE = 4; // 取信道误码 private const int RI_STKNUM = 5; // 取上市股票总家数 private const int RI_SUPPORTEXTHQ = 6; // 是否支持JSJ格式 private const int RI_ENABLEDZHTRANS = 7; // 支持传输大智慧文件系统 private const int RI_ENABLETS3FILE = 8; // 支持文件传输 private const int RI_NETPCID = -1; // 返回电脑硬件编号 private const int RI_HASASKDATA = 0x1000; //双向支持,待定 private const int RI_HIGHSPEED = 0x1002; //如果分析软件处理数据足够快,可以要求系统高速初始化代码 private const int STKLABEL_LEN = 10; // 股号数据长度,国内市场股号编码兼容钱龙 private const int STKNAME_LEN = 32; // 股名长度 private const int STKLABEL_LEN_SKY = 48; //消息 private const int My_Msg_StkData = 0x8000 + 1; //国债净价交易数据 [StructLayout(LayoutKind.Sequential)] public struct GzLxBINData { public ushort m_wMarket; // 股票市场类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = STKLABEL_LEN)] public char[] m_szLabel; // 股票代码,以'\0'结尾 public uint m_LiXiDate; //开始计算利息的日期 public double m_fMoney100; //每100元的利息 public uint m_DayNum; //利息计算天数 public Single m_fShowPrice; //票面价格 } [Flags] enum BYTE : byte { m_Dec = 4, m_Enabled = 1, m_VolFlag = 1, m_Other = 2 } //[StructLayout(LayoutKind.Explicit)] //public class RCV_REPORT_STRUCTEx //{ // [FieldOffset(0)] // public ushort m_cbSize; // 结构大小 // [FieldOffset(2)] // public uint m_time; // 交易时间 // [FieldOffset(6)] // public ushort m_wMarket; // 股票市场类型 // [MarshalAs(UnmanagedType.ByValArray, SizeConst = 42)] // [FieldOffset(8)] // public char[] m_szLabelName; // 股票代码,以'\0'结尾 // //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKLABEL_LEN)] // //public string m_szLabel; // 股票代码,以'\0'结尾 // //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKNAME_LEN - 15)] // //public string m_szName; // 股票名称,以'\0'结尾 // //[FieldOffset(35)] // //BYTE BYTE; // ////BYTE m_Dec:4; // ////BYTE m_Enabled:1; // ////BYTE m_VolFlag:1; // ////BYTE m_Other:2; // //[FieldOffset(36)] // //public ushort m_ID; // //[FieldOffset(38)] // //public Single m_fOpenInterest; // //[FieldOffset(42)] // //public Single m_fLastOpenInterest; // //[FieldOffset(46)] // //public Single m_fLastSettle; // [FieldOffset(50)] // public Single m_fLastClose; // 昨收 // [FieldOffset(54)] // public Single m_fOpen; // 今开 // [FieldOffset(58)] // public Single m_fHigh; // 最高 // [FieldOffset(62)] // public Single m_fLow; // 最低 // [FieldOffset(66)] // public Single m_fNewPrice; // 最新 // [FieldOffset(70)] // public Single m_fVolume; // 成交量 // [FieldOffset(74)] // public Single m_fAmount; // 成交额 // [FieldOffset(78)] // public Single m_fBuyPrice1; // 申买价1 // [FieldOffset(82)] // public Single m_fBuyPrice2; // 申买价2 // [FieldOffset(86)] // public Single m_fBuyPrice3; // 申买价3 // [FieldOffset(90)] // public Single m_fBuyVolume1; // 申买量1 // [FieldOffset(94)] // public Single m_fBuyVolume2; // 申买量2 // [FieldOffset(98)] // public Single m_fBuyVolume3; // 申买量3 // [FieldOffset(102)] // public Single m_fSellPrice1; // 申卖价1 // [FieldOffset(106)] // public Single m_fSellPrice2; // 申卖价2 // [FieldOffset(110)] // public Single m_fSellPrice3; // 申卖价3 // [FieldOffset(114)] // public Single m_fSellVolume1; // 申卖量1 // [FieldOffset(118)] // public Single m_fSellVolume2; // 申卖量2 // [FieldOffset(122)] // public Single m_fSellVolume3; // 申卖量3 // //[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] // //public Single[] m_fBuyPrice; // 申买价1,2,3 // //[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] // //public Single[] m_fBuyVolume; // 申买量1,2,3 // //[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] // //public Single[] m_fSellPrice; // 申卖价1,2,3 // //[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] // //public Single[] m_fSellVolume; // 申卖量1,2,3 // [FieldOffset(126)] // public Single m_fBuyPrice4; // 申买价4 // [FieldOffset(130)] // public Single m_fBuyVolume4; // 申买量4 // [FieldOffset(134)] // public Single m_fSellPrice4; // 申卖价4 // [FieldOffset(138)] // public Single m_fSellVolume4; // 申卖量4 // [FieldOffset(142)] // public Single m_fBuyPrice5; // 申买价5 // [FieldOffset(146)] // public Single m_fBuyVolume5; // 申买量5 // [FieldOffset(150)] // public Single m_fSellPrice5; // 申卖价5 // [FieldOffset(154)] // public Single m_fSellVolume5; // 申卖量5 // //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)] // //public string m_szName2; // //public long m_IName; //} [StructLayout(LayoutKind.Explicit)] public struct RCV_REPORT_STRUCTEx { [FieldOffset(0)] public System.UInt16 m_cbSize; // 结构大小 [FieldOffset(2)] public System.UInt32 m_time; // 成交时间 [FieldOffset(6)] public System.UInt16 m_wMarket; // 股票市场类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 42)] [FieldOffset(8)] public char[] m_szLabelName; // 股票代码,以'\0'结尾 // // [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=32 )] // [ FieldOffset( 18 )]public string m_szName; // 股票名称,以'\0'结尾 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=STKLABEL_LEN-1 )] // public char[] m_szLabel; // 股票代码,以'\0'结尾 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=STKNAME_LEN-1 )] // public char[] m_szName; // 股票名称,以'\0'结尾 [FieldOffset(50)] public System.Single m_fLastClose; // 昨收 [FieldOffset(54)] public System.Single m_fOpen; // 今开 [FieldOffset(58)] public System.Single m_fHigh; // 最高 [FieldOffset(62)] public System.Single m_fLow; // 最低 [FieldOffset(66)] public System.Single m_fNewPrice; // 最新 [FieldOffset(70)] public System.Single m_fVolume; // 成交量 [FieldOffset(74)] public System.Single m_fAmount; // 成交额 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )] [FieldOffset(78)] public System.Single m_fBuyPrice1; // 申买价1 [FieldOffset(82)] public System.Single m_fBuyPrice2; // 申买价2 [FieldOffset(86)] public System.Single m_fBuyPrice3; // 申买价3 [FieldOffset(90)] public System.Single m_fBuyVolume1; // 申买量1 [FieldOffset(94)] public System.Single m_fBuyVolume2; // 申买量2 [FieldOffset(98)] public System.Single m_fBuyVolume3; // 申买量3 [FieldOffset(102)] public System.Single m_fSellPrice1; // 申卖价1 [FieldOffset(106)] public System.Single m_fSellPrice2; // 申卖价2 [FieldOffset(110)] public System.Single m_fSellPrice3; // 申卖价3 [FieldOffset(114)] public System.Single m_fSellVolume1; // 申卖量1 [FieldOffset(118)] public System.Single m_fSellVolume2; // 申卖量2 [FieldOffset(122)] public System.Single m_fSellVolume3; // 申卖量3 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )] // [ FieldOffset( 0 )]public System.Single[] m_fBuyVolume; // 申买量1,2,3 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )] // [ FieldOffset( 0 )]public System.Single[] m_fSellPrice; // 申卖价1,2,3 // [ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )] // [ FieldOffset( 0 )]public System.Single[] m_fSellVolume; // 申卖量1,2,3 [FieldOffset(126)] public System.Single m_fBuyPrice4; // 申买价4 [FieldOffset(130)] public System.Single m_fBuyVolume4; // 申买量4 [FieldOffset(134)] public System.Single m_fSellPrice4; // 申卖价4 [FieldOffset(138)] public System.Single m_fSellVolume4; // 申卖量4 [FieldOffset(142)] public System.Single m_fBuyPrice5; // 申买价5 [FieldOffset(146)] public System.Single m_fBuyVolume5; // 申买量5 [FieldOffset(150)] public System.Single m_fSellPrice5; // 申卖价5 [FieldOffset(154)] public System.Single m_fSellVolume5; } [StructLayout(LayoutKind.Sequential)] public struct RCV_REPORT_STRUCTEx1 { public ushort m_wMarket; // 股票市场类型 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKLABEL_LEN)] public string m_szLabel; // 股票代码,以'\0'结尾 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKNAME_LEN - 15)] public string m_szName; // 股票名称,以'\0'结尾 BYTE BYTE; //BYTE m_Dec:4; //BYTE m_Enabled:1; //BYTE m_VolFlag:1; //BYTE m_Other:2; public ushort m_ID; public Single m_fOpenInterest; public Single m_fLastOpenInterest; public Single m_fLastSettle; public Single m_fLastClose; // 昨收 public Single m_fOpen; // 今开 public Single m_fHigh; // 最高 public Single m_fLow; // 最低 public Single m_fNewPrice; // 最新 public Single m_fVolume; // 成交量 public Single m_fAmount; // 成交额 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fBuyPrice; // 申买价1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fBuyVolume; // 申买量1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fSellPrice; // 申卖价1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fSellVolume; // 申卖量1,2,3 } [StructLayout(LayoutKind.Sequential)] public struct RCV_REPORT_STRUCTEx2 { public ushort m_cbSize; // 结构大小 public ulong m_time; // 交易时间 public ushort m_wMarket; // 股票市场类型 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKLABEL_LEN)] public string m_szLabel; // 股票代码,以'\0'结尾 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKNAME_LEN - 15)] public string m_szName; // 股票名称,以'\0'结尾 BYTE BYTE; //BYTE m_Dec:4; //BYTE m_Enabled:1; //BYTE m_VolFlag:1; //BYTE m_Other:2; public ushort m_ID; public Single m_fOpenInterest; public Single m_fLastOpenInterest; public Single m_fLastSettle; public Single m_fLastClose; // 昨收 public Single m_fOpen; // 今开 public Single m_fHigh; // 最高 public Single m_fLow; // 最低 public Single m_fNewPrice; // 最新 public Single m_fVolume; // 成交量 public Single m_fAmount; // 成交额 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fBuyPrice; // 申买价1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fBuyVolume; // 申买量1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fSellPrice; // 申卖价1,2,3 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public Single[] m_fSellVolume; // 申卖量1,2,3 public Single m_fBuyPrice4; // 申买价4 public Single m_fBuyVolume4; // 申买量4 public Single m_fSellPrice4; // 申卖价4 public Single m_fSellVolume4; // 申卖量4 public Single m_fBuyPrice5; // 申买价5 public Single m_fBuyVolume5; // 申买量5 public Single m_fSellPrice5; // 申卖价5 public Single m_fSellVolume5; // 申卖量5 } ////////////////////////////////////////////////////////////////////////////////// //补充数据头 private const uint EKE_HEAD_TAG = 0xffffffff; //[StructLayout(LayoutKind.Explicit)] //public struct RCV_EKE_HEADEx //{ // [FieldOffset(0)] // public System.UInt32 m_dwHeadTag; // = EKE_HEAD_TAG // [FieldOffset(4)] // public System.UInt16 m_wMarket; // 市场类型 // [FieldOffset(8)] // [MarshalAs(UnmanagedType.ByValArray, SizeConst = STKLABEL_LEN)] // public char[] m_szLabel; // 股票代码 //} [StructLayout(LayoutKind.Sequential)] public struct RCV_EKE_HEADEx { public System.UInt32 m_dwHeadTag; // = EKE_HEAD_TAG public System.UInt16 m_wMarket; // 市场类型 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = STKLABEL_LEN)] public string m_szLabel; // 股票代码 } //补充日线数据 [StructLayout(LayoutKind.Sequential)] public struct RCV_HISTORY_STRUCTEx { public uint m_time; public Single m_fOpen; //开盘 public Single m_fHigh; //最高 public Single m_fLow; //最低 public Single m_fClose; //收盘 public Single m_fVolume; //量 public Single m_fAmount; //额 public ushort m_wAdvance; //涨数,仅大盘有效 public ushort m_wDecline; //跌数,仅大盘有效 //[FieldOffset(32)] //public Single m_fOI; //[FieldOffset(0)] //public RCV_EKE_HEADEx m_head; } //补充分时线数据 [StructLayout(LayoutKind.Sequential)] public struct RCV_MINUTE_STRUCTEx { public uint m_time; // UCT public Single m_fPrice; public Single m_fVolume; public Single m_fAmount; //public RCV_EKE_HEADEx m_head; } //补充除权数据 [StructLayout(LayoutKind.Sequential)] public struct RCV_POWER_STRUCTEx { public uint m_time; // UCT public Single m_fGive; // 每股送 public Single m_fPei; // 每股配 public Single m_fPeiPrice; // 配股价,仅当 m_fPei!=0.0f 时有效 public Single m_fProfit; // 每股红利 //public RCV_EKE_HEADEx m_head; } [StructLayout(LayoutKind.Sequential)] public struct RCV_SHAGZ { public ushort m_wMarket; // 市场类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = STKLABEL_LEN)] public char[] m_szLabel; // 股票代码 public uint m_StartDate; //开始计算利息的日期 YYMMDD format public double m_fLiXi100RMB; //票面100员的 public ushort m_DayNum; public Single m_fPrice; } //分笔数据/////////////////////////////////// [StructLayout(LayoutKind.Sequential)] public struct YJFenbi { public long m_lTime; // hhmmss 例:93056 表明9:30:56的盘口数据 public Single m_fHigh; // 最高 public Single m_fLow; // 最低 public Single m_fNewPrice; // 最新 public Single m_fVolume; // 成交量 public Single m_fAmount; // 成交额 public long m_lStroke; // 保留 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public Single[] m_fBuyPrice; // 申买价1,2,3,4,5 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public Single[] m_fBuyVolume; // 申买量1,2,3,4,5 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public Single[] m_fSellPrice; // 申卖价1,2,3,4,5 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] public Single[] m_fSellVolume; // 申卖量1,2,3,4,5 } [StructLayout(LayoutKind.Sequential)] public struct YJ_Fenbi { public ushort m_wMarket; // 股票市场类型 同通视规范定义 [MarshalAs(UnmanagedType.ByValArray, SizeConst = STKLABEL_LEN)] public char[] m_szLabel; // 股票代码,以'\0'结尾 public long m_lDate; // 分笔数据的日期 FORMAT: 20050808, 0表示当天或最近交易日的明细数据 public float m_fLastClose; // 昨收 public float m_fOpen; // 今开 public ushort m_nCount; //m_Data的数据量分笔笔数(2字节smallint) [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)] public YJFenbi[] m_Data; //长度为m_nCount*sizeof(YJFenbi)字节 } ////////////////////////////////////////////////////////////////////////////////// // 文件类型数据包头 // 注一: // m_wDataType == FILE_BASE_EX // m_dwAttrib = 股票证券市场,m_szFileName仅包含文件名 // m_FileTime = 基本面资料文件创建日期 // m_wDataType == FILE_NEWS_EX // m_dwAttrib = 消息来源,m_szFileName 包含目录的文件名,目录名为消息来源 // m_dwSerialNo = 序列号 // 如: "上交所消息\\0501Z012.TXT","新兰德\\XLD0001.TXT" // m_wDataType == FILE_HTML_EX // m_dwAttrib 保留, m_szFileName为URL // m_wDataType == FILE_SOFTWARE_EX // m_dwAttrib 分析软件类型, 用于初步判断 // m_szFileName 分析软件 ID 特征字符串 + '\\' + 文件名 // 如 "TongShi\\TS\\RECEIVE\\RECEIVE.EXE", // ID 特征字符串为 "TongShi", "TS\\RECEIVE\\RECEIVE.EXE" 为文件名 // 特征字符串 和 文件名及其含义由分析软件商定义 // 注二: // 数据文件循环播出,每个文件有唯一的序列号,以避免重复接收 [StructLayout(LayoutKind.Explicit)] public struct RCV_FILE_HEADEx { [FieldOffset(0)] public uint m_dwAttrib; // 文件子类型 [FieldOffset(4)] public uint m_dwLen; // 文件长度 [FieldOffset(8)] public uint m_dwSerialNo; // 序列号,对股评 [FieldOffset(8)] public uint m_FileTime; // 文件创建时间 [FieldOffset(12)] [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] public char[] m_szFileName; // 文件名 or URL } //综合排名 [StructLayout(LayoutKind.Sequential)] public struct MULTISORT_ITEM_STRUCTEx { public byte m_type; // stock's type [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public char[] m_code; // stock code public int m_data1; public int m_data2; } [StructLayout(LayoutKind.Sequential)] public struct RCV_MULTISORT_STRUCTEx { public uint m_class; // 1-涨幅 2-跌幅 4-5分钟涨幅 8-5分钟跌幅 16-委比前六 32-委比后六 // 64-震幅 128-量比 256-总金额 public uint m_tag1; // 0xf0 00 public ushort m_tag2; // 0x06 00 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public MULTISORT_ITEM_STRUCTEx[] m_stocks; } ////////////////////////////////////////////////////////////////////////////////// // 数据通知消息 //查询方式通知消息 // wParam = MsgPara_StkData 有股票数据 // wParam = MsgPara_File 有文件数据文件 //直接数据引用通知消息 // wParam = RCV_WPARAM; // lParam 指向 RCV_DATA结构; // 返回 1 已经处理, 0 未处理或不能处理,目前该返回值被忽略 // 注一: // 记录数表示行情数据和补充数据(包括 Header)的数据包数,对文件类型数据, = 1 // 注二: // 若 m_bDISK = FALSE, m_pData 为数据缓冲区指针 // ******** 数据共享,不能修改数据 ********** // m_bDISK = TRUE, m_pData 为该文件的存盘文件名,一般情况只有 // 升级软件等大文件用存盘方式 //[StructLayout(LayoutKind.Explicit)] [StructLayout(LayoutKind.Sequential)] public struct RCV_DATA { //[FieldOffset(0)] public int m_wDataType; // 文件类型 //[FieldOffset(4)] public int m_nPacketNum; // 记录数,参见注一 //[FieldOffset(8)] public RCV_FILE_HEADEx m_File; // 文件接口 //[FieldOffset(8)] //[MarshalAs(UnmanagedType.I4)] public int m_bDISK; // 文件是否已存盘的文件 public IntPtr ptr; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_REPORT_STRUCTEx[] m_pReport; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_REPORT_STRUCTEx1[] m_pReport1; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_REPORT_STRUCTEx2[] m_pReport2; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_HISTORY_STRUCTEx[] m_pDay; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_MINUTE_STRUCTEx[] m_pMinute; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.ByValArray)] //public RCV_POWER_STRUCTEx[] m_pPower; //[FieldOffset(292)] //[MarshalAs(UnmanagedType.AsAny)] //public object m_pData; // 参见注二 } // 注册函数 // 股票初始化 // 入口参数: // hWnd 处理消息的窗口句柄 // Msg 用户自定义消息 // nWorkMode 接口工作方式, 应等于 RCV_WORK_SENDMSG // 返回参数: // 1 成功 // -1 失败 [DllImport("Stock.dll")] private static extern int Stock_Init(IntPtr hWnd, uint Msg, int nWorkMode); // 退出,停止发送消息 // 入口参数: // hWnd 处理消息的窗口句柄,同 Stock_Init 的调用入口参数 // 返回参数: // 1 成功 // -1 失败 [DllImport("Stock.dll")] private static extern int Stock_Quit(IntPtr hWnd); // 激活接收程序,进行设置 // 入口参数: // bSetup TRUE 显示窗口,进行设置 // FALSE 隐含窗口 // 返回参数: // 1 成功 // -1 失败 [DllImport("Stock.dll")] private static extern int SetupReceiver(int bSetup); ////////////////////////////////////////////////////////////////////////////////// // 行情接口 // 取已接收到的股票总数 [DllImport("Stock.dll")] private static extern int GetTotalNumber(); // 由序号取股票数据(扩展) // 入口参数: // nNo 序号 // pBuf 存放股票数据的缓冲区 // 返回参数: // NoStockData 无股票数据 // 注: // 该函数提供股票数据的主要数据;分析软件刚运行时,可以快速建立数据框架 //[DllImport("Stock.dll")] //private static extern int GetStockByNoEx(int nNo, [MarshalAs(UnmanagedType.LPStruct)]RCV_REPORT_STRUCTEx pBuf); // 由股号取股票数据(扩展) // 入口参数: // pszStockCode股票代号 // nMarket 证券市场 // pBuf 存放股票数据的缓冲区 // 返回参数: // NoStockData 无股票数据 // 注: // 该函数提供股票数据的主要数据;分析软件刚运行时,可以快速建立数据框架 //[DllImport("Stock.dll")] //private static extern int GetStockByCodeEx(char* pszStockCode, int nMarket, RCV_REPORT_STRUCTEx* pBuf); // 取得股票驱动信息 // 入口参数: // nInfo 索引 // pBuf 缓冲区 // 出口参数: // nInfo == RI_IDSTRING, 返回特征字符串长度, pBuf 为特征字符串 // 如: "TongShi_StockDrv_1.00" // nInfo == RI_IDCODE, 返回信息卡 ID 号, pBuf 为字符串形式的 ID 号 // 如: 0x78001234 "78001234" // nInfo == RI_VERSION, 返回信息卡版本号, pBuf 为字符串版本 // 如: 1.00 "1.00" // nInfo == RI_ERRRATE, 取信道误码, // nInfo == RI_STKNUM, 取上市股票总家数 [DllImport("Stock.dll")] private static extern int GetStockDrvInfo(int nInfo, [MarshalAs(UnmanagedType.AsAny)] object pBuf); protected override void WndProc(ref Message m) { switch (m.Msg) { case My_Msg_StkData: RCV_DATA pHeader = (RCV_DATA)m.GetLParam(typeof(RCV_DATA)); if (pHeader.ptr != IntPtr.Zero) { switch (m.WParam.ToInt32()) { case RCV_REPORT: //接收分时行情 } } default: base.WndProc(ref m); break; } } public StockAdapter() { InitializeComponent(); Stock_Init(this.Handle, My_Msg_StkData, RCV_WORK_SENDMSG); } }