三、防止多次載入應用程式例項
某些應用程式需要禁止使用者載入多次例項。比如,控制面板中的應用程式,不管使用者開啟多少次,同一應用程式只有乙個例項,而且每一次試圖重複開啟都會自動啟用已經存在的例項。
windows api 提供了函式findwindow,可以是應用程式在啟動時檢查自己是否已經存在。
該函式在delphi中的語法是:
function findwindow(lpclassname: pchar, lpwindowname: pchar): hwnd;
其中,引數lpcalssname 是要查詢的視窗的類的名稱,引數lpwindowname是要查詢的視窗的標題(caption)。 如果找到了相應的視窗例項,將返回乙個非0 的該視窗控制代碼的整型值,否則返回0 。因此,只要判斷應用程式的主視窗(或者伴隨著應用程式存在而存在的視窗)是否存在就可以判斷是否已經有例項存在了。
例如:h := findwindow('tform1', nil);
if h = 0 then begin
showmessage('沒有發現相同的應用程式例項。');
//加入載入應用程式的語句
//...
end else begin
showmessage('應用程式已經載入。');
setactivewindow(h);
end;
其中,引數lpwindowname的位置以delphi保留字nil 代替,是因為視窗的標題可能在應用程式中是變化的。windows api 函式setactivewindow 用於指定活動視窗。**bbs.sendsms.cn
Delphi函式呼叫效率測試
delphi在給函式傳參的時候,可以在引數前加上var const out做修飾,或者也可以使用指標引數。這幾種方式的應用場景都很清晰了,但是他們的執行效率有什麼差別呢?為此我做了乙個測試,定義乙個整數陣列aints array 0.10000 of integer 並將其作為引數傳給乙個空函式。迴...
VB VB中呼叫MSN 6 2 API函式
vb中呼叫msn 6.2 api函式 了解這方面內容的起因是早上有位朋友讓我看一段關於msn開發程式,現在無法執行,我開啟工程發現是針對4.7編寫的,而他的計算機安裝的6,2,因為我也用6.2所以我在vb中檢視了一下,發現是缺少messenger type library。但是多了messenger...
DELPHI中建立呼叫DLL
一,新建 new other dll wizard 二,library new uses sysutils,classes,dialogs procedure dll begin showmessage delphi end exports dll begin end.三,儲存,四,project ...