My operating system is 64-bit Windows 10.
Thanks Experts!
Need more info. What are you trying to do? Is this about the windows OS API? Is this about a particular program?
edit: Is this about email?
It is a data transfer client software.It implements API data transmission through DLL.It provides data interface specifications.It is based on C#I don't know how to change it to a JSL implementation.
It has more regulations.
I've excerpted some of it.
This is my first experience with this kind of content.So I don't know how to deal with it.
Thanks for the expert's help.
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 used
The JMP C# automation examples might help. I think automation might be the keyword you are looking for.
https://community.jmp.com/t5/Discussions/Create-JMP-datatable-from-C-DataTable-variable/m-p/49392
Read these posts.But the subject is too difficult for me.No similar examples are found.