Delphi常用應用函式

才智咖 人氣:2.24W
Delphi常用應用函式
得到WINDOWS的SYSTEM路徑:
   方法:
            var
                 MySysPath : PCHAR ;
            begin
                    GetMem(MySysPath,255);
                    GetSystemDirectory(MySysPath,255);
            end;
   注:MySysPath為SYSTEM路徑得到程式的路徑
 ExtractFileDir(ame);察看檔案是否存在
 FileExists(FileName:String):Boolean;改變副檔名
 ChangeFileExt(FileName:String)得到檔案的副檔名
 ExtractFileExt(FileName:String):String;如何取得Windows的臨時檔案目錄?
適合版本:Delphi 3,2.0,1.0Windows 95 & NT都指定了放置臨時檔案的目錄,然而,使用者能改變臨時目錄的位置而不使用預設的目錄。這篇文章的目的是告訴你如何得到Windows 95 & NT當前的臨時目錄位置。這個Windows API函式 GetTempPath就是解決這個問題的。其函式原形為:DWORD GetTempPath(DWORD nBufferLength, LPTSTR lpBuffer);下面的例子示範如何使用:function GetTempDirectory: String;
var
TempDir: array[0..255] of Char;
begin
GetTempPath(255, @TempDir);
Result := StrPas(TempDir);
end;備註:臨時目錄的確定原則:
1,如果有TMP環境變數則臨時目錄為TMP指定的目錄
2,如果沒有TMP環境變數而有TEMP環境變數,則為TEMP變數指定的目錄
3,如果TMP和TEMP都沒有定義,則取當前目錄為臨時目錄程式不出現在工作列
  一般Windows 95執行程式時都會在工作列上出現按鈕,如果你的程式是一個監視程式,那麼出現按鈕就不是明智之舉了。要實現該功能就要在OnCreate事件裡利用到API函式SetWindowLong
procedure Create(sender:TObject);
begin
SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;改計算機名改變計算機在網路中的名字,重新啟動後才生效
SetComputerName('Hello World');控制熱啟動
要使系統的熱啟動鍵(Ctrl+Alt+Del)失效,使用以下語句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
要恢復系統的熱啟動鍵(Ctrl+Alt+Del),使用以下語句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);臨時路徑
有時需要Windows的臨時路徑來做備份等工作,那麼就要知道路徑在哪,下面的程式幫你忙:
var aa:pchar;
begin
GetTempPath(20,aa); file://返回路徑名
:=aa;
end;返回程式執行引數
  有關 Delphi 傳入應用程式的命令列引數, 請參考以下的`說明:
用ParamCount函式取得命令引數的個數:
呼叫 ParamStr(0), 傳回執行檔的檔名(含路徑)
呼叫 ParamStr(n), 傳回第n個引數的內容
procedure Create(Sender: TObject);
var
sFileName: string;
begin
if ParamCount > 0 then begin (* 有執行引數傳入 *)
sFileName := ParamStr(1); (* 取得引數內容 *)
if FileExists(sFileName) then
FromFile(sFileName)
else
ageBox('找不到指定的檔案', '訊息', 48);
end;
end;
關閉Windows
控制WINDOWS的開關:如關閉WINDOWS,重新啟動WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是實現這一功能的API函式
首先定義常數
const
EWX_FORCE=4; file://關閉所有程式並以其他使用者身份登入
EWX_LOGOFF=0; file://重新啟動計算機並切換到MS-DOS方式
EWX_REBOOT=2; file://重新啟動計算機
EWX_SHUTDOWN=1;//關閉計算機
執行時給How賦值,讓他等於EWX_SHUTDOWN或其他,呼叫以下語句
ExitWindowsEx(How,0);關閉外部應用程式
如何在 Delphi 應用程式中, 去關閉外部已開啟的應用程式?
下面給出一段在 Delphi 中關閉"計算器"程式為例:
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := Window(nil, '計算器'); // close the exist Calculator
if HWndCalculator <> 0 then
SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
end;得到執行程式的目錄
  SysUtils 單元中有 ExtractFileDir 與 ExtractFilePath兩個類似的函式, 用哪一個?沒有太大的關係。
  不過有以下的差別: ExtractFilePath 傳回值的最後一個字元是反斜槓"/"。
procedure on1Click(Sender: TObject);
begin
ShowMessage(ExtractFileDir(ame));
// ie: c:temp
ShowMessage(ExtractFilePath(ame));
// ie: c:temp
end;
相同點: 如果執行檔案在根目錄下(如:C:)的話, 兩者的傳回值相同, 且最後一個字元都是"/"。使用GetFileVersionInfo 得到版本資訊的例子 
Samples Using GetFileVersionInfo?
回答1:
 procedure GetBuildInfo(var V1, V2, V3, V4: Word);
 var
   VerInfoSize: DWORD;
   VerInfo: Pointer;
   VerValueSize: DWORD;
   VerValue: PVSFixedFileInfo;
   Dummy: DWORD;

 begin
 VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
 GetMem(VerInfo, VerInfoSize);
 GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
 VerQueryValue(VerInfo, '', Pointer(VerValue), VerValueSize);
 with VerValue^ do
   begin
   V1 := dwFileVersionMS shr 16;
   V2 := dwFileVersionMS and $FFFF;
   V3 := dwFileVersionLS shr 16;
   V4 := dwFileVersionLS and $FFFF;
   end;
 FreeMem(VerInfo, VerInfoSize);
 end; 
TAGS:函式 Delphi