Delphi開發中Windows API函式的應用

2021-04-06 20:12:05 字數 1924 閱讀 9108

delphi作為快速開發windows95/nt下應用程式的工具,已經為越來越多的開發者採用。但是,如果要開發出專業的windows應用軟體,還需要使用大量的windows api函式,以下是筆者開發管理軟體中的幾個應用例項。

一、判定windows版本

眾所周知,windows95/

nt某些地方有些差別,為了使應用程式避免出現因為系統不符合而導致的錯誤,有必要自動判定系統版本。這可以通過api函式getversion實現。

tform1.formcreate(sender:tobject);

var ver:integer;//版本號  major:integer;//主版本號  minor:integer;//次版本號

begin

ver:=getversion();//獲得版本號

major:=ver and 255;//獲得主版本號

minor:=(ver and 255*256)div 256;

//獲得次版本號

showmessage(『系統版本號是:』+inttostr(ver));

//顯示版本號

showmessage(『系統主版本號是:'+inttostr(major));//顯示主版本號

showmessage(『系統次版本號是:'+inttostr(minor));//顯示次版本號

end;

二、判定windows安裝目錄

一般delphi開發出來的程式需要知道系統的安裝目錄,以便將幫助檔案、動態鏈結庫等系統部分拷貝到系統目錄下,為了使安裝程式能夠在使用者任意設定安裝目錄的情況下均能正常執行,需要使用api函式getwindowsdirectory、getsystemdirectory來實現。

procedure tform1.formcreate(sender:tobject);

var windir:pchar;

sysdir:pchar;

begin

getmem(windir,256);//獲得記憶體

getmem(sysdir,256);//獲得記憶體

getwindowsdirectory(windir,128);//獲得安裝目錄

getsystemdirectory(sysdir,128);//獲得系統目錄

showmessage(『windows目錄是:'+windir);

//顯示安裝目錄

showmessage(『system目錄是:'+sysdir);

//顯示系統目錄

freemem(windir,256);//釋放記憶體

freemem(sysdir,256);//釋放記憶體

end;

三、在程式中重新啟動windows系統

通常在程式中需要將系統重新啟動,這時可以使用exitwindow***函式來實現。

procedure tform1.button1click(sender:tobject);

begin

exitwindow***(ewx_force or ewx_logoff,0);

//強行結束當前登入的使用者程序

exitwindow***(ewx_force or ewx_poweroff,0);

//強行關機

exitwindow***(ewx_force or ewx_reboot,0);

//強行重新啟動機器

end;

四、呼叫其他程式

通常,使用者希望能夠在乙個應用程式中直接呼叫外部程式,這可以通過winexec函式來實現。

procedure tform1.button1click(sender.tobject);

begin

winexec(『c:/pwin97/notepad.exe c:/config.dos',9);

end

delphi中為自定控制項繪製windows按鈕

若要自定工具攔,但也要保留windows樣式的按鈕時 下面給出一種實現 procedure tmybutton.defaultdraw var arect,r trect wpos,hpos integer details tthemedelementdetails begin hpos 0 are...

delphi 中的Mapx 開發

一 安裝好mapx後,選擇delphi的 ponent import active 選單新增,mapinfo mapx組 件。新增完成後,在activex面板上,將會出來乙個tmap控制項。二 拖乙個tmap控制項到工程中改名為mainmap,這樣就產生了乙個tmap的物件。三 在地圖上建立圖層使用...

DELPHI中DBCHART開發中的幾個小問題

1,在delphi的實際開發中,我們都需要在程式中繫結資料來源,以便更好的適應實際的開發需求,這裡只是簡單的做個介紹 我用的是fastline,裡面需要動態的繫結x,y軸,在dbchart中可以直接設定,那麼在程式中如何設定呢?ssql select scan start time,sum trim...