自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#回調(diào)函數(shù)及API應(yīng)用淺析

開(kāi)發(fā) 后端
本文演示了如何在C#里面調(diào)用VC6.0開(kāi)發(fā)的C#回調(diào)函數(shù)的API應(yīng)用,而且回調(diào)函數(shù)的參數(shù)包含結(jié)構(gòu)體,使用C#的委托和IntPtr方法實(shí)現(xiàn)。

開(kāi)發(fā)環(huán)境:WinXP Pro(SP2英文版) + VS.NET 2003中文版

接口庫(kù)版本: CMPP2.0 API第二版(V2.6)

該例程演示了如何在C#里面調(diào)用VC6.0開(kāi)發(fā)的C#回調(diào)函數(shù)的API應(yīng)用,而且回調(diào)函數(shù)的參數(shù)包含結(jié)構(gòu)體,使用C#的委托和IntPtr方法實(shí)現(xiàn)。

由于我使用C#剛兩天,這是我寫(xiě)的***個(gè)C#程序,因此例程寫(xiě)的可能有點(diǎn)粗糙,但是編譯和運(yùn)行完全沒(méi)有問(wèn)題。

CMPP2.0的API應(yīng)用封裝成了標(biāo)準(zhǔn)C調(diào)用的方法,提供以下三個(gè)接口,使用的時(shí)候只要有CMPPAPI.dll就可以了。


在C#里面如何調(diào)用API應(yīng)用,如何聲明結(jié)構(gòu)體,如何使用委托實(shí)現(xiàn)C#回調(diào)函數(shù),如何實(shí)現(xiàn)使用自定義結(jié)構(gòu)體作為參數(shù)的C#回調(diào)函數(shù),請(qǐng)仔細(xì)查看例程源碼。注意:CMPPAPI.dll要和可執(zhí)行文件放到同一個(gè)目錄下,或者放到可執(zhí)行文件能找到的目錄,或者放到系統(tǒng)目錄下(如:C:\windows\system32)。

下面是C#下面的完整的調(diào)用代碼

  1. //Class1.cs  
  2.  
  3. using System;  
  4. // 該名稱空間包含了在Visual C#中調(diào)用API的一些必要集合  
  5. using System.Runtime.InteropServices;  
  6. // 使用Sleep方法需要的命名空間  
  7. using System.Threading;  
  8.  
  9. namespace CMPPAPI_Sample_CSharp  
  10. {  
  11.  
  12. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  13. public struct CMPP_HEAD  
  14. {  
  15. public uint nTotalLength;  
  16. public uint nCommandId;  
  17. public uint nSeqId;  
  18. }  
  19.  
  20. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  21. public struct CMPP_CONNECT  
  22. {  
  23. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]  
  24. public string sSourceAddr;  
  25. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]  
  26. public string sAuthSource;  
  27. public byte cVersion;  
  28. public uint nTimeStamp;  
  29. }  
  30.  
  31. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  32. public struct CMPP_CONNECT_RESP  
  33. {  
  34. public byte uchStatus;  
  35. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]  
  36. public string sAuthISMG;  
  37. public byte cVersion;  
  38. }  
  39.  
  40. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  41. public struct CMPP_SUBMIT_RESP  
  42. {  
  43. public long nMsgid;  
  44. public byte uchResult;  
  45. }  
  46.  
  47. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  48. public struct CMPP_STATUS_REPORT  
  49. {  
  50. public long nMsgid;  
  51. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)]  
  52. public string sStat;  
  53. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]  
  54. public string sSubmitTime;  
  55. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]  
  56. public string sDoneTime;  
  57. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]  
  58. public string sDestTerminalId;  
  59. public uint nSmscSeq;  
  60. }  
  61.  
  62. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  63. public struct CMPP_MO_MSGCONTENT  
  64. {  
  65. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 160)]  
  66. public string sMsgcontent;  
  67. public CMPP_STATUS_REPORT csr;  
  68. }  
  69.  
  70. [StructLayout(LayoutKind.Sequential, Pack = 1)]  
  71. public struct CMPP_DELIVER  
  72. {  
  73. public long nMsgid;  
  74. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]  
  75. public string sDestid;  
  76. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]  
  77. public string sServiceid;  
  78. public byte uchTppid;  
  79. public byte uchTpudhi;  
  80. public byte uchMsgfmt;  
  81. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]  
  82. public string sSrcterminalid;  
  83. public byte uchRegisteredDelivery;  
  84. public byte uchMsglength;  
  85.  
  86. public CMPP_MO_MSGCONTENT mo_msg;  
  87.  
  88. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]  
  89. public string sReserved;  

【編輯推薦】

  1. C#在應(yīng)用程序間發(fā)送消息實(shí)現(xiàn)淺析
  2. 一些C#時(shí)間類型的入門(mén)知識(shí)
  3. C#接口和抽象類技術(shù)特點(diǎn)淺析
  4. 一個(gè)C#時(shí)間計(jì)算的實(shí)例
  5. C#繼承知識(shí)詳解
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-08-12 10:11:18

C# 回調(diào)函數(shù)

2009-08-19 17:10:09

C#回調(diào)函數(shù)

2009-08-13 13:42:54

C#構(gòu)造函數(shù)

2009-08-27 13:05:06

C#接口特點(diǎn)C#接口實(shí)例

2009-08-24 11:35:20

C# 泛型應(yīng)用

2009-08-31 16:37:20

C#接口定義

2009-07-31 14:03:21

C# Format函數(shù)

2009-08-13 18:36:36

C#繼承構(gòu)造函數(shù)

2009-08-10 14:43:03

C#函數(shù)Convert

2009-07-31 16:00:30

C#函數(shù)重載

2009-08-24 15:02:05

C# 類型

2009-08-19 17:38:17

C# 操作符分類

2009-08-19 16:40:35

C#回調(diào)

2009-08-28 11:48:32

C#靜態(tài)函數(shù)

2009-08-18 10:30:30

C#枚舉

2009-08-14 09:15:28

C#調(diào)用構(gòu)造函數(shù)

2009-07-31 15:44:02

C#靜態(tài)構(gòu)造函數(shù)

2009-07-31 15:22:56

C#判等函數(shù)

2009-08-07 08:53:52

C# ICloneab

2009-08-18 10:35:46

C#枚舉類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)