CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

怎C#中如何调用API函数?

楼主wjc_lionking(wjc_lionking)2002-05-22 14:30:55 在 .NET技术 / C# 提问

怎C#中如何调用API函数? 问题点数:20、回复次数:3Top

1 楼apower511(等价交换的不完美世界)回复于 2002-05-22 14:36:28 得分 10

DllImport   属性用于指定包含外部方法的实现的   dll   位置。  
   
  namespace   System.Runtime.InteropServices  
  {  
        [AttributeUsage(AttributeTargets.Method)]  
        public   class   DllImportAttribute:   System.Attribute  
        {  
              public   DllImportAttribute(string   dllName)   {...}  
              public   CallingConvention   CallingConvention;  
              public   CharSet   CharSet;  
              public   string   EntryPoint;  
              public   bool   ExactSpelling;  
              public   bool   PreserveSig;  
              public   bool   SetLastError;  
              public   string   Value   {   get   {...}   }  
        }  
  }  
  准确地说,DllImport   属性具有下列行为:    
   
  它只能放置在方法声明上。    
  它具有单个定位参数:指定包含被导入方法的   dll   名称的   dllName   参数。    
  它具有五个命名参数:    
  CallingConvention   参数指示入口点的调用约定。如果未指定   CallingConvention,则使用默认值   CallingConvention.Winapi。    
  CharSet   参数指示用在入口点中的字符集。如果未指定   CharSet,则使用默认值   CharSet.Auto。    
  EntryPoint   参数给出   dll   中入口点的名称。如果未指定   EntryPoint,则使用方法本身的名称。    
  ExactSpelling   参数指示   EntryPoint   是否必须与指示的入口点的拼写完全匹配。如果未指定   ExactSpelling,则使用默认值   false。    
  PreserveSig   参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有   HRESULT   返回值和该返回值的一个名为   retval   的附加输出参数的签名。如果未指定   PreserveSig,则使用默认值   true。    
  SetLastError   参数指示方法是否保留   Win32“上一错误”。如果未指定   SetLastError,则使用默认值   false。    
  它是一次性属性类。    
  此外,用   DllImport   属性修饰的方法必须具有   extern   修饰符。  
   
  例如:  
  [DllImport("KERNEL32.DLL",   EntryPoint="MoveFileW",     SetLastError=true,  
  CharSet=CharSet.Unicode,   ExactSpelling=true,  
  CallingConvention=CallingConvention.StdCall)]  
  public   static   extern   bool   MoveFile(String   src,   String   dst);Top

2 楼blp(★★★)回复于 2002-05-22 16:44:41 得分 5

http://www.aspcn.com/Show.aspx?id=445  
  http://www.aspcn.com/Show.aspx?id=446  
  http://www.aspcn.com/Show.aspx?id=447Top

3 楼OMyDoG(-:)回复于 2002-05-22 16:51:32 得分 5

举个离子:  
   
  //声明一个API函数  
  [   System.Runtime.InteropServices.DllImportAttribute   (   "gdi32.dll"   )   ]  
  private   static   extern   bool   BitBlt   (  
  IntPtr   hdcDest   ,   //   目标   DC的句柄  
  int   nXDest   ,    
  int   nYDest   ,    
  int   nWidth   ,    
  int   nHeight   ,    
  IntPtr   hdcSrc   ,     //   源DC的句柄  
  int   nXSrc   ,    
  int   nYSrc   ,    
  System.Int32   dwRop     //   光栅的处理数值  
  )   ;  
       
   
  Top

相关问题

  • c中能调用API函数吗?
  • c#中可以调用api函数吗?
  • c可以调用api函数吗?
  • c++ builder 如何调用 win api 函数
  • C#如何调用API 函数?????????
  • c#中如何去调用api函数?
  • C#中如何调用Windows API函数?
  • c#怎么调用api函数GetDeviceCaps呀
  • C#函数调用问题
  • 在c语言下可以调用api函数吗

关键词

  • 函数
  • 指示
  • 属性
  • 转换
  • api
  • dll
  • 未指定
  • 参数
  • callingconvention
  • 调用

得分解答快速导航

  • 帖主:wjc_lionking
  • apower511
  • blp
  • OMyDoG

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo