您的位置:首页 > 编程语言 > C#

C#调用windows api 函数GetShortPathName

2013-05-28 10:25 531 查看
  
其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法:
1.  直接调用从 DLL
导出的函数。
2.  调用 COM
对象上的接口方法
我主要讨论从dll中导出函数,基本步骤如下:
1.使用 C#
关键字staticextern声明方法。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: