当前位置:  开发笔记 > 编程语言 > 正文

从c#创建Win32事件

如何解决《从c#创建Win32事件》经验,为你挑选了2个好方法。

我想从C#创建一个内核(也称为命名事件).

我是否必须互操作服务并包装本机CreateEvent函数,或者是否已经有一个.NET类来完成这项工作?

我需要运行的函数应该是这样的:hEvent = CreateEvent(NULL,false,false,"MyCSHARPEvent");

这应该通知所有关于事件的探测myMHARPEvent的过程.

如果需要包装函数,我如何将SECURITY_ATTRIBUTES结构从C#转换为win32?



1> Stu Mackella..:

看看EventWaitHandle类.它从.Net 2.0开始支持,并允许创建命名事件.它还支持设置事件安全性,具体取决于您使用的构造函数.



2> scottm..:

如果您仍想使用互操作,可以像这样定义函数:

[DllImport("kernel32.dll")]
static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);

和这样的结构(你可能不得不使用Pack属性来使它适合):

[StructLayout(LayoutKind.Sequential)]
struct SECURITY_ATTRIBUTES{
  public int length;
  public IntPtr securityDesc;
  public bool inherit;
}

此外,这是一个将所有内容放在一起的代码示例.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有