Delphi中調用API函數經驗點滴(三)

3、防止屢次載入應用程序實例
  某些應用程序須要禁止用戶載入屢次實例。好比,控制面板中的應用程序,無論用戶打開多少次,同一應用程序只有一個實例,並且每一次試圖重複打開都會自動激活已經存在的實例。

  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函數

相關文章
相關標籤/搜索