用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(); 来调用。还请指教!不胜感激!
如果在API中有一个自定义事件;
//////////////////////////////////////////////////////////
// MsgName: TI_TELOFFHOOK_MESSAGE
//
// Function: 本地话机摘机
//
// wParam: 保留
//
// lParam: 保留
//////////////////////////////////////////////////////////
#define TI_TELOFFHOOK_MESSAGE (WM_USER+712)当本地话机摘机时,这个事件触发
我在C# 中如何使用如果是方法我们可以用//控制系统摘机
[DllImport("TmA4Drv.dll")]
private static extern void OffHook(); 来调用。还请指教!不胜感激!
解决方案 »
- linq to sql返回指定列
- 求助关于WinForm背景图片的问题
- Lucene.net 列出所有索引数据?
- 怎么锁定一个窗体,然后点击窗体什么地方都无效,只弹出对话框
- 求助 初学c#有什么好的资料吗? 还有什么好建议吗?
- 急!!!如何在windows程序中嵌入HTML网页?
- 用到数据库软件安装的问题
- FileMode各成员之间的区别!
- c#,vs2005工程文件怎么转化成2003的?有什么自动工具?急
- 历史遗留问题收集(2):请将你的没有解决但是还想解决的问题贴在这儿,请各路高手关注讨论啊。
- 郁闷了,DDL就是不显示嘛,哪里有问题,我的数据库有数据的
- 如何写一个带参数的windows服务 ,如何使用,给个简单的例子,谢谢
public delegate vod OnOffHook();
那么怎么和API中的
#define TI_TELOFFHOOK_MESSAGE (WM_USER+712)
关联起来呢?
还望指教!
#define .....
可以用
public const int TI_TELOFFHOOK_MESSAGE 812 //我记不大清了,WM_USER好像是100
只有二次开发文档
就是上面贴得还请个位大侠指教.
急!谢谢!
这些我都不太懂!如果知道了UM_USER是多少后怎么做呢?怎么在C# 中使用是我最想知道的问题。谢谢!
问题还是没有解决啊!To: hdt(倦怠)
ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconcallbacksample.htm怎么用啊?
定义了代理,但是什么时候触发,
触发的代码在哪添加啊?
定义了代理,但是什么时候触发,
触发的代码在哪添加啊?
===============
触发是由dll里代码来进行的
如:
///定义一个代理
public delegate bool TELOFFHOOK(int value);
myClass
{public myClass()
{
HookUp(new TELOFFHOOK(Bridge.HookUp),817);
}//控制摘机
[DllImport("*.dll")]
private static extern void HookUp(int value);
}上面可能写得有点问题,
我先接着说吧!我在另一个类中引用myClass (如果要出发应该myClass中要有一个事件才行,这个事件写在哪?怎么写?)谢谢!
这个函数的作用是什么?
硬件会触发一个事件,发送消息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);
这样一来,就可以处理任何你想要的消息,不知道我理解的对不对。
获取消息没问题了。
但我又遇到新的问题了。
[DllImport("*.dll")]
TV_GetEvent(TV_Event *event);其中 TV_Event 是一个结构体
public struct TV_Event
{
public long Type;
public object data;
}参数是地址我用
TV_GetEvent(ref TV_Event event);然后调用TV_Event event = new TV_Event();
TV_GetEvent(ref event);这样获取不到不知道怎么处理
还望大家不吝赐教!
{
public long Type;
public object data;?????object怎么来的?
}能不能把这个结构体原型写出来?
long Result;
char ptrData[MaxDataLen]; ///还有这个怎么写???
}DATASTR;typedef struct {
long Type;
DATASTR data;
}TV_Event;谢谢!
struct DATASTR
{
int Result;
[MarshalAs(ByValArray,SizeConst=46)]
char[] prtData;
}[StructLayout(LayoutKind.Sequential)]
struct TV_Event;
{
int Type;
DATASTR data;
}
TV_GetEvent(ref TV_Event event);然后调用TV_Event event = new TV_Event();
TV_GetEvent(ref event);怎么调用啊?