Il mio sistema operativo è Windows 10 a 64 bit.
Grazie Esperti!
Hai bisogno di più informazioni. Cosa stai cercando di fare? Riguarda l'API del sistema operativo Windows? Riguarda un programma in particolare?
modifica: Riguarda la posta elettronica?
Grazie Esperti!
È un software client per il trasferimento dati.
Implementa la trasmissione dei dati API tramite DLL.
Fornisce le specifiche dell'interfaccia dati.
Si basa su C#
Non so come trasformarlo in un'implementazione JSL.
Ha più regolamenti.
Ne ho estrapolato una parte.
Questa è la mia prima esperienza con questo tipo di contenuti.Quindi non so come gestirla.
Grazie per l'aiuto dell'esperto.
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 usedGli esempi di automazione C# di JMP potrebbero aiutarti. Penso che automazione potrebbe essere la parola chiave che stai cercando.
Leggi questi post. Ma l'argomento è troppo difficile per me. Non ho trovato esempi simili.
Grazie Esperti!