複製鏈接
請複製以下鏈接發送給好友

GetCurrentDirectory

鎖定
是一個系統參數,在一個緩衝區中裝載當前目錄,Long,裝載到lpBuffer的字節數。如nBufferLength的長度不夠,不足以容納目錄,則返回值是必要的緩衝區長度(要求至少這個長度),其中包括空中止字符。零表示失敗。會設置GetLastError。
中文名
GetCurrentDirectory
表達式
一個系統參數
適用領域
運存
應用學科
計算機

GetCurrentDirectoryVB聲明

Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectoryA" (ByVal nBufferLength As Long,ByVal lpBuffer As String) As Long

GetCurrentDirectory説明

在一個緩衝區中裝載當前目錄

GetCurrentDirectory返回值

Long,裝載到lpBuffer的字節數。如nBufferLength的長度不夠,不足以容納目錄,則返回值是必要的緩衝區長度(要求至少這個長度),其中包括空中止字符。零表示失敗。會設置GetLastError

GetCurrentDirectory參數表

參數 類型及説明
nBufferLength Long,lpBuffer緩衝區的長度
lpBuffer String,指定一個預定義字串,用於裝載當前目錄。

GetCurrentDirectoryVC聲明

DWORD GetCurrentDirectory(
  DWORD  nBufferLength,
  LPTSTR lpBuffer
);

GetCurrentDirectory函數功能

獲取當前進程的當前目錄。
注意當前目錄這東西有點怪異,本來確實是可執行文件的所在目錄,但是當用文件對話框成功打開一個文件後,該目錄就被修改為被打開的文件所在目錄。比如在程序中使用"123.txt"這樣的文件名,希望將它存儲在exe文件所在目錄中,但是當用户用文件對話框打開一個文件"F:\456.txt"後,這個123.txt會被存儲到F盤下。(VC2005下的情況,其他VC版本待驗證)

GetCurrentDirectory參數説明

參數 類型及説明
nBufferLength 緩衝區的長度
lpBuffer 指定一個預定義字串,用於裝載當前目錄

GetCurrentDirectory返回值

調用成功 返回裝載到lpBuffer的字節數。
使用GetLastError函數可獲得錯誤信息。

GetCurrentDirectoryAda聲明

函數定義於WIN32庫,當然,也可以自己在需要時隨時創建聲明,聲明如下:
typeDWORDismod2**32;--DWORD是無符號32位類型
functionGetCurrentDirectory(
nBufferLength:DWORD;--指定目錄緩衝的長度(多少字節)
lpBuffer:accesscharacter--給定字符串首個字符的訪問值(指針)
)returnDWORD;

pragmaimport(stdcall,GetCurrentDirectory,"GetCurrentDirectoryA");--從庫中導入該函數
們接着來創建一個Ada版本的函數。
functiongetCurrentDirectoryreturnstringis
functiongetCurrentDirectory(nBufferLength:DWORD;lpBuffer:accesscharacter)returnDWORD;
pragmaimport(stdcall,getCurrentDirectory,"GetCurrentDirectoryA");

len:dword:=getCurrentDirectory(0,null);--首先利用系統函數來獲取必要的字符串長度
s:string(1..integer(len));
begin
len:=getCurrentDirectory(len,s(1)'unrestricted_access);
returns(s'first..s'last-1);--C字符串以NUL結尾,去除
endgetCurrentDirectory;

GetCurrentDirectory函數位置

VC下包含該函數的頭文件 windows.h