Mein Betriebssystem ist Windows 10 (64 Bit).
Danke, Experten!
Brauche mehr Informationen. Was versuchst du zu tun? Geht es um die API des Windows-Betriebssystems? Geht es um ein bestimmtes Programm?
Bearbeiten: Geht es hier um E-Mail?
Danke, Experten!
Es handelt sich um eine Client-Software zur Datenübertragung.
Es implementiert die API-Datenübertragung über DLL.
Es bietet Datenschnittstellenspezifikationen.
Es basiert auf C#
Ich weiß nicht, wie ich es in eine JSL-Implementierung ändern kann.
Es gibt mehr Vorschriften.
Ich habe einige Auszüge daraus wiedergegeben.
Dies ist meine erste Erfahrung mit dieser Art von Inhalten.Ich weiß also nicht, wie ich damit umgehen soll.
Vielen Dank für die Hilfe des Experten.
const
// Work mode type definition
RCV_WORK_SENDMSG = 4 // Message work mode
// Message subtypes
News_Sha_Ex = 2 // The firsttype message
News_Szn_Ex = 4 // The secondtype message
// Data
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_REPORT_STRUCTExV3
{
public UInt16 m_cbSize; // Structure size
public Int32 m_time; // Transaction time
public Single m_fHigh; // Maximum
public Single m_fLow; // Minimum
public Single m_fNewPrice; // Latest
public Single m_fVolume; // Production volume
public Single m_fAmount; // Production value
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_fputPrice; // Entry storage price 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_fputVolume; // Entry storage volume 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_ftransPrice; // Transfer application price 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_ftransVolume; // Transfer application volume 1,2,3
public Single m_fputPrice4; // Entry storage price 4
public Single m_fputVolume4; // Entry storage volume 4
public Single m_ftransPrice4; // Transfer application price 4
public Single m_ftransVolume4; // Transfer application volume 4
public Single m_fputPrice5; // Entry storage price 5
public Single m_fputVolume5; // Entry storage volume 5
public Single m_ftransPrice5; // Transfer application price 5
public Single m_ftransVolume5; // Transfer application volume 5
};
}
// Data notification message
// Direct data reference notification message
// wParam = RCV_WPARAM;
// lParam points to the RCV_DATA structure;
// Return 1 if processed, 0 if unprocessed or unable to process
// Note 1:
// The number of records represents the number of data packets of market data and supplementary data (including Header). For file type data, = 1
// Note 2:
// If m_bDISK = FALSE, m_pData is the data buffer pointer
// ******** Data sharing, do not modify data **********
// m_bDISK = TRUE, m_pData is the file storage name of the file. Generally, only large files such as upgrade software use the storage method
// [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_DATA
{
public int m_wDataType; // File type
public int m_nPacketNum; // Number of records, see Note 1
public RCV_FILE_HEADEx m_File; // File interface
public int m_bDISK; // Whether the file is stored
public IntPtr m_pData;
};
// Tick data ///////////////////////////////////
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_FENBI_STRUCTEx
{
public int m_lTime; // hhmmss Example: 93056 indicates 9:
public Single m_fHigh; // Maximum
public Single m_fLow; // Minimum
public Single m_fNewPrice; // Latest
public Single m_fVolume; // Production volume
public Single m_fAmount; // Production value
public int m_lStroke; // Reserved
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_fputPrice; // Entry storage price 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_fputVolume; // Entry storage volume 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_ftransPrice; // Transfer application price 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_ftransVolume; // Transfer application volume 1,2,3,4,5
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_FENBI
{
public UInt16 m_wMarket; // Customer market type
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] m_szLabel; // Customer code, ending with '\0'
public Int32 m_lDate; // Date of tick data FORMAT:
public Single m_fLastClose; // Yesterday's closing price
public Single m_fOpen; // Today's opening price
public UInt16 m_nCount; // Data quantity of m_Data, number of ticks
public IntPtr m_Data; // Length is m_nCount
};
// Message processing program DEMO
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// Detect message type
switch (m.WParam.ToInt32())
{
case RCV_REPORT: // Shared data reference mode, customer market
{
RCV_DATA pHeader = PRCV_DATA(m.lParam);
for (i = 0; i < pHeader.m_nPacketNum - 1; i++)
{
// Data processing
}
}
case RCV_FENBIDATA: {
// Interface-supplemented tick data, which refers to the tick data of the day
break;
}
RCV_MKTTBLDATA :{
// Received code table data
break;
}
RCV_FINANCEDATA :{
// Received financial data
break;
}
}
}
//////////////////////////////////////////////////////////////////////////////////
// APIs
//////////////////////////////////////////////////////////////////////////////////
// Registration function
// Customer initialization
// Entry parameters:
// hWnd Window handle for processing messages
// Msg User-defined message
// nWorkMode Interface work mode, see work mode type definition
// Return parameters:
// 1 Success
// -1 Failure
// Note:
// After registration, the driver will send messages to the processing window; if not registered, data can also be obtained through query
// If the customer receiving is not started, start the customer receiving program
public delegate int Stock_Init(IntPtr nHwnd, int nMsg, int nWorkMode);
// Exit, stop sending messages
// Entry parameters:
// hWnd Window handle for processing messages, the same as the calling entry parameter of Stock_Init
// Return parameters:
// 1 Success
// -1 Failure
public delegate int Stock_Quit(IntPtr nHwnd);
// Activate the receiving program for setting
// Entry parameters:
// bSetup TRUE Show window for setting
// FALSE Hide window
// Return parameters:
// 1 Success
// -1 Failure
public delegate int SetupReceiver(bool bShowWindow);
// Get customer driver information
// Entry parameters:
// nInfo Index
// pBuf Buffer
// Exit parameters:
// nInfo == RI_IDSTRING, return the length of the characteristic string, pBuf is the characteristic string
// Such as: "TongShi_StockDrv_1.00"
// nInfo == RI_IDCODE, return the information card ID number, pBuf is the ID number in string form
// Such as: 0x78001234 "78001234"
// nInfo == RI_VERSION, return the version number of the information card, pBuf is the version in string
// Such as: 1.00 "1.00"
// nInfo == RI_V2SUPPORT, return whether the Shenzhen SJS library structure is supported, pBuf is invalid
public delegate int GetStockDrvInfo(int nInfo,IntPtr pBuf);
public delegate int ReInitStockInfo(); // Reserved function, not currently usedDie JMP C# -Automatisierungsbeispiele könnten hilfreich sein. Ich denke, Automatisierung könnte das Schlüsselwort sein, nach dem Sie suchen.
Lesen Sie diese Beiträge. Aber das Thema ist zu schwierig für mich. Es wurden keine ähnlichen Beispiele gefunden.
Danke, Experten!