C#调用windows api 函数GetShortPathName
2013-05-28 10:25
531 查看
其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法:
1. 直接调用从 DLL
导出的函数。
2. 调用 COM
对象上的接口方法
我主要讨论从dll中导出函数,基本步骤如下:
1.使用 C#
关键字static和extern声明方法。
2.将DllImport属性附加到该方法。DllImport属性允许您指定包含该方法的 DLL
的名称。
3.如果需要,为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET Framework 的默认封送处理。
好,我们开始
1.首先我们查询MSDN找到GetShortPathName的定义
The GetShortPathName function retrieves the short path form of the specified path.
DWORD GetShortPathName(
LPCTSTR lpszLongPath,
LPTSTR lpszShortPath,
DWORD cchBuffer
);
public class CShortPath { [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern int GetShortPathName( [MarshalAs(UnmanagedType.LPTStr)]string path, [MarshalAs(UnmanagedType.LPTStr)]StringBuilder short_path, int short_len ); public static string GetShortPath(string name) { int lenght = 0; lenght = GetShortPathName(name, null, 0); if (lenght == 0) { //new nghmp.GenericErrorForm("Can't get short path name", name, true); return name; } StringBuilder short_name = new StringBuilder(lenght); lenght = GetShortPathName(name, short_name, lenght); if (lenght == 0) { //new nghmp.GenericErrorForm("Can't get short path name", name, true); return name; } return short_name.ToString(); }//GetShortPath }//class CShortPath
相关文章推荐
- 函数GetFullPathName的调用细节
- GetShortPathName函数
- C#中调用windows API函数总结
- GetFullPathName.GetLongPathName 和GetShortPathName
- 使用GetShortPathName解决unicode路径无法访问
- C#工具---使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- Windows API一日一练(72)GetUserName函数
- Windows API一日一练(72)GetUserName函数
- Windows API一日一练(72)GetUserName函数
- 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- c#调用API(GetModuleFileName)获取程序路径返回乱码有关问题
- Windows API一日一练(71)GetComputerName函数
- 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- Windows API一日一练(71)GetComputerName函数
- getsockname()/getpeername()函数第一次被调用得到0.0.0.0结果
- Windows API一日一练(72)GetUserName函数
- Windows API一日一练(71)GetComputerName函数
- Flex反射:通过调用getDefintionByName函数动态创建按钮等控件的例子
- Windows API一日一练(71)GetComputerName函数
- C#代码调用js函数,js函数中的document.getElementById("对象ID")得null值解决办法