.net API 与win32API
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net API 与win32API相关的知识,希望对你有一定的参考价值。
.net API 是不是封装了所有的win32API。 如果不是的话,这有什么意义。不如直接调用win32API 好了,干嘛又来个.net API
这个兄弟对API这个词的理解有误,我个人觉得.首先,API的意思是Application Program Interface,应用程序接口.
实际上,只要是程序,都可以对外提供API,比如你写一个网站.然后对外提供API,任何人都可以通过你提供的API获取到对应的信息.例如你网站中的数据.
win32 API是windows系统提供的API,
.NET 也可以提供API
虽然提供的作用可能会有重合,但是不影响说,其实这是两个不同程序提供的API.
不能因为说windows提供了API,那么.NET就不能提供API了.
而且.NET的API虽然很多是对WINDOWS的封装,但是这样可以避免一个人要学习.NET.还必须要去学习WINDOWS的API. 参考技术A 首先,前提是你打算面向.NET Framework开发。
那么如果要调用Windows系统提供的功能,有两种方式,直接调用win32API, 或者使用.NET帮你封装好的框架类库。
直接调用win32API,要做的工作包括:
1.知道所调用的功能在哪个Dll;
2.在.NET程序里面写引入语句,这里面要解决C类型参数、返回值,和.NET基本类型之间的对应和转换问题;
3.如果某个操作需要多次调用API,需要了解其具体做法。
这里面如果不是很熟Win32的人,处理起来很困难。所以.NET提供的框架类库,简化了程序员这方面的工作,而且用友好的组织形式(命名空间)提供。
当然,如楼上所说,有些功能,.NET的框架类库没有封装到,这就必须自己来做上面那3个工作了,所以如何直接调用Win32API,也是一个.NET程序员需要掌握的。 参考技术B 人拉出来的屎是不是都是由饭菜变来的. 不过不是的话,这有什么意义.不如直接吃屎好了,干嘛要吃饭菜!
简单说调用API运行更快 更简洁追问
问题是C#能直接调用 win32API . 你能直接吃那个吗?
追答我不吃 dan'shi 没有人规定不能吃 OK ? 我的意思是 存在即合理 你一行.net的代码 就直接完成了api N个 函数的功能 你说那个更容易懂 如果.NET代码无法完成还是要借助api的 代码怎么写无所谓 关键是要达到目的
追问我这个问题就是想知道这个.net API存在的合理性。想比较了解这些的人说解下而已。想知道.net API 有多强大。
一行.net的代码 就直接完成了api N个 函数的功能(这句话的意思是 .net API 优化了 win32 API ?)
有Q吗
追问80131490
追答截取自身的界面的图片 C# GDI+ 图片内容是API C#的更简洁一些 不容易出错
private Bitmap getMainFormImage()
Screen scr = Screen.PrimaryScreen;
Bitmap img = new Bitmap(Width, Height);
Graphics g = Graphics.FromImage(img);
g.CopyFromScreen(new Point(Location.X, Location.Y), new Point(0, 0), new Size(Width, Height));
g.Dispose();
return img;
Pywinauto常用02--pywin32(Python调用win api)
pywin32(Python调用win api)
pywin32是一个第三方模块库,主要的作用是方便python开发者快速调用windows API的一个模块库。
- Win32gui: Windows图形界面接口模块。
- 主要负责操作窗口切换以及窗口中元素id标签的获取
- Win32api: Windows开发接口模块。
- 主要负责模拟键盘和鼠标操作,对win32gui获取的标签进行点击/获取值/修改值等操作
- Win32con:全面的库函数。
- 提供Win32gui和Win32api需要的操作参数
安装
pip install pywin32
一、Win32gui 函数
1、FindWindow(ClassName,Title)查找窗体
hld=win32gui.FindWindow(ClassName,Title)
- ClassName:窗口的类名
- Title:窗口的标题名称,即左上角的文字描述信息
- hld:返回结果为当前窗口的句柄信息
1)判断窗口是否打开
import win32gui
winClass = "Notepad"
winTitle = "test001.txt - 记事本"
dialog = win32gui.FindWindow(winClass, winTitle)
# dialog返回0,则为记事本未打开;dialog返回数值,则为窗体的句柄NativeWindowHandle的值2564730
print(dialog)
if dialog:
print("test001.txt记事本窗口,已打开")
else:
print("test001.txt记事本窗口,未打开")
2) 返回Windows【另存为】窗口句柄
hld=win32gui.FindWindow("#32770",u"另存为")
Title: 另存为 #这里就是上面的Title
Class: #32770 #这里就是上面的ClassName
Handle: 0x001E03A0 #这里就是上面函数返回值
二、win32api 函数
1、弹出提示框,展示提示信息
import win32con, win32api
win32api.MessageBox(0, "提示框--提示信息内容展示", "MessageBox", win32con.MB_OK | win32con.MB_ICONWARNING)
以上是关于.net API 与win32API的主要内容,如果未能解决你的问题,请参考以下文章