Windows API是对Windows操作系统的API函数,在C#中调用Windows API的实质是托管代码对非托管代码的调用。

主要使用的格式就是:

using System.Runtime.InteropServices;

namespace TestWinAPI1
{
class Program
{
static void Main(string[] args)
{
Beep(100, 100);
} [DllImport("kernel32", CharSet = CharSet.Ansi)]
public static extern bool Beep(int frequery, int duration);
}
}

其中的Beep就是Win API的调用,使用[DllImport("kernel32")]属性进行调用。

这个函数在MSDN中的原本定义是:

C++ 
BOOL WINAPI Beep(
__in DWORD dwFreq,
__in DWORD dwDuration
);

我们想要调用BeepAPI,就必须:

1.将DWORD对应为C#中的int,相应的参数个数和位置设置正确

2.调用的函数名和WinAPI中的函数名一致

这样,我们在C#中就可以使用Win API对Windows进行操作。

这里几个资源是使用WindowsAPI不可或缺的:

MSDN:http://msdn.microsoft.com/en-us/library/ee663300(VS.85).aspx

推荐的入门教程:http://www.docin.com/p-4510006.html

使用WINAPI的难点:

1.C++中的各个数据类型如何对应到C#中?

使用C#中的那个数据类型对应那个C++的数据类型没有唯一的规定,但是应该站在内存使用的角度,选择内存占用大小一致。

当C++中存在指针的时候,我们可以使用ref来传递指针

2.如果C++中定义了数据结构如何操作?

我们也应该在C#中定义与之存储结构一致的数据结构

以下是用WinAPI 模拟鼠标定位和单机左键的操作:

代码

简要描述:

使用了mouse_event,GetCursorPos,SetCursorPos三个API

mouse_event((uint)MouseEventFlags.LEFTDOWN|(uint)MouseEventFlags.LEFTUP, 0, 0, 0, 0);

代表了单击左键的动作

int setRight = SetCursorPos(27, 881); 中的27,881是屏幕上的绝对位置

最新文章

  1. thinkphp 添加 修改删除
  2. Java 第29章GUI
  3. BitTorrent Sync - 神奇的文件同步软件,无需服务器让多台电脑互相同步!
  4. mysql 删除重复数据保留只保留一条
  5. mysql连接查询语句示例
  6. 原生JS--Ajax
  7. photoshop:调整图层之色相/饱和度
  8. [转] 关于C++中模板中的typename和class的区别比较
  9. <转>java中静态方法和非静态方法的存储
  10. WCF中的数据契约(DataContract)
  11. OpenCV示例学习笔记(1)-contours2.cpp-通过findContours 函数实现轮廓提取
  12. SerfJ REST
  13. Vue数据双向绑定原理及简单实现
  14. 转:为什么根据IP地址查询物理所在地,而不是mac地址?
  15. layui使用记录
  16. 【BFS宽度优先搜索】
  17. OWASP TOP 10 2017中文译文
  18. 学习 ASP.NET MVC
  19. python之系统命令
  20. JavaHbase连接代码示例

热门文章

  1. 04-spring-控制反转
  2. JDBC2.0操作:结果集,更新,插入,删除,批处理语句
  3. HTML-HTML5+CSS3权威指南阅读(五、设备像素和CSS像素的概念)
  4. sqlite 小刀 初试
  5. emq(centos 7) 使用
  6. Android studio 使用心得(六)—android studio 如何加载.so文件
  7. android获取系统应用大小的方法
  8. C#Project不生成.vhost.exe和.pdb文件的方法
  9. php-fig组织psr标准
  10. Memcache应用场景介绍,说明[zz]