添加引用、dllimport、using、命名空间和dll的区别
来源:互联网 发布:怎么知道自己淘宝等级 编辑:程序博客网 时间:2024/04/29 21:14
dll是动态链接库里面有好多方法(c语言叫函数),如果调用c语言编写的普通dll,那么就要用dllimport,典型的像windows api函数都是c语言编写的dll所以都要dllimport
com是一种与语言无关的windows规范,里面不光有方法还有一些遵照规范的描述性信息,比如有哪些方法,叫什么名字等。所以这种遵守windows统一规范的动态链接库就不需要dllimport了,就可以“添加引用”来用,而且还可以用对象浏览器来看里面都有哪些方法,而对象浏览器里的这些信息就是编写那些动态链接库的人遵照com规范写进去的,所以对象浏览器可以读出来看到。然后就可以using来用了,就像用普通的.net类库一样,因为和com的操作vs都封装好了,典型的像flash组件就是。
===========
.net下有的命名空间可以直接using,比如system.io;
有的就必须添加.net引用后才能using,比如system.drawing,必须“添加引用”找到System.drawing确定,才能using System.drawing;
怎么回事呢?
因为system.io命名空间在system.dll这个程序集里面,system.dll这个程序集包括了好多的命名空间而不只一个。
而system.io命名空间就在system.dll程序集里面,所以就不用添加引用了。
每个.net程序至少要包括一个引用”system",就是这么来的。因为system.dll程序集下面有好多常用的功能了。
而像system.drawing就不在system.dll程序集里,所以要单独添加引用“system.drawing”,其实是添加的system.drawing.dll这个程序集。
多用Reflector看看.net自带的程序集好多事情就豁然开朗了,.net framework其实是对api的封装,所以,一些程序需要api又不知道怎么用,网上也没资料的时候,就可以用Reflector看看.net的类库,看看微软是怎么用那些api的,有时就能有启发了。比如我就解决了一个问题,建立一个console程序让他不显示出来在后台运行,怎么做?
网上有2种方法一种api findwindow showwindow,这种方法还是会晃一下,放弃。
一种是process类有个createnowindow+useshellexecute,运行就可以不显示出来,很好。
但是现在我要在system账号下用CreateProcessAsUser这个api函数以administrator账号运行一个控制台程序,让他不显示出来在后台运行,而且没有administrator的密码无法直接用process类咋办呢?
所以我就用reflector看一下process类的start方法是怎么执行的,于是找到了这个,process类用的createprocess这个api,并把其中的creationFlags的值设为了0x8000000所以就可以建立不显示的console了,所以把这个flag套用到createprocessasuser,嘿嘿,在system账号下无密码以administrator账号运行程序而且不显示后台运行成功了。
- 添加引用、dllimport、using、命名空间和dll的区别
- 添加引用、dllimport、using、命名空间和dll的区别
- C#自动添加using引用命名空间
- C#自动添加using引用命名空间
- C#自动添加using引用命名空间
- C#自动添加using引用命名空间
- 引用Microsoft.Web.Preview.dll文件后不能添加using Microsoft.Web.Script命名空间
- .net 项目添加Dll成功,却无法引用其中的命名空间的现象
- .net里面“using”关键字和“添加引用”按钮的区别
- VS中,using和“添加引用”的区别
- 学习笔记十:命名空间(namespace)之四:using declarations和using directives的区别
- using命名空间的声明和使用
- using System.Linq命名空间无法引用!的解决方案
- C#命名空间的使用、添加命名空间、引用类型和值类型、字符串与char数组转换
- 关于C#引用Dll后,找不到命名空间的问题
- .net里面“using”关键字和“添加引用”按钮的区别及using的三种用途
- using namespace 引用命名空间理解
- using命名空间与引用程序集
- HTTP代理如何正确处理Cookie(1)
- linux shell 写regex pattern 识别字符串的单词
- sqlserver 动态sql语句基本语法
- 已知某个学习小组3门课程的成绩如表,使用二维数组存放该学习小组的3门成绩,计算每个学生的平均成绩和该小组每门课程的平均成绩
- HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
- 添加引用、dllimport、using、命名空间和dll的区别
- (四)、读取数据库数据并在HighCharts上显示
- Oracle创建用户并设置权限_Basic CMD
- spring 装配
- 一个JSP页面上面显示这两条信息:<% String path ..%>
- Android屏幕元素层次结构
- linux在shell脚本中调用另一个脚本
- 不错的网站
- lcd 的 osd