的原型GetCurrentDirectory
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength,
[out] LPTSTR lpBuffer
);
DWORDis unsigned long,LPTSTR是指向 Unicode 環境中 wchar 緩沖區的指標。它可以從 C 呼叫
#define MAX_BUFFER_LENGTH 256
int main() {
TCHAR buffer[MAX_BUFFER_LENGTH];
GetCurrentDirectory(MAX_BUFFER_LENGTH, buffer);
return 0;
}
我試圖用 C# 封裝這個 win32 函式,但失敗了。
[DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern uint GetCurrentDirectory(uint nBufferLength, out StringBuilder lpBuffer);
uj5u.com熱心網友回復:
您只需要洗掉引數out:StringBuilder
[DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern uint GetCurrentDirectory(uint nBufferLength, StringBuilder lpBuffer);
然后在呼叫函式時預先分配緩沖區:
const int MAX_PATH = 260;
var buffer = new StringBuilder(MAX_PATH);
var len = GetCurrentDirectory(buffer.Capacity, buffer);
var path = buffer.ToString(0, len);
話雖這么說,您可以System.IO.Directory.GetCurrentDirectory()改用:
var path = Directory.GetCurrentDirectory();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/481960.html
上一篇:熊貓讀取標題中標簽不一致的檔案
