API 高手请进 急!
用C#   调用API 
             如果在API中有一个自定义事件;               
 ////////////////////////////////////////////////////////// 
 //   MsgName:   TI_TELOFFHOOK_MESSAGE 
 // 
 //   Function:   本地话机摘机 
 // 
 //   wParam:   保留 
 // 
 //   lParam:   保留 
 ////////////////////////////////////////////////////////// 
 #define   TI_TELOFFHOOK_MESSAGE   (WM_USER+712)   
 当本地话机摘机时,这个事件触发 
 我在C#   中如何使用   
 如果是方法我们可以用   
 //控制系统摘机 
 [DllImport( "TmA4Drv.dll ")] 
 private   static   extern   void      OffHook();      
 来调用。   
 还请指教!不胜感激! 
------解决方案--------------------大致把dll的代码贴出来,事件一般是客户端定义,由服务端触发, 
 #define ..... 
 可以用 
 public const int TI_TELOFFHOOK_MESSAGE 812 //我记不大清了,WM_USER好像是100 
------解决方案--------------------我是否可以这样理解你的意思: 
 硬件会触发一个事件,发送消息TI_TELOFFHOOK_MESSAGE (WM_USER+712),你需要在C#中处理这个消息,如果是这样,你可以如下试试: 
 你的类需要实现IMessageFilter接口,只有一个方法: 
          public bool PreFilterMessage(ref Message m) 
 		{ 
 			// TODO:  添加 FlashForm.PreFilterMessage 实现 
 			if (m.Msg==(WM_USER+712)) //截获消息 
 				{ 
 				  //处理此消息								} 
 				else 
 				{ 
 					DisPatchMessage(m); 
 				}  			  			 
 			return false; 
 		} 
 别忘了构造函数中加上Application.AddMessageFilter(this); 
 这样一来,就可以处理任何你想要的消息,不知道我理解的对不对。
------解决方案--------------------[StructLayout(LayoutKind.Sequential)] 
 struct DATASTR 
 { 
   int Result; 
   [MarshalAs(ByValArray,SizeConst=46)] 
   char[] prtData; 
 }   
 [StructLayout(LayoutKind.Sequential)] 
 struct TV_Event; 
 { 
   int Type; 
   DATASTR data; 
 }