<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用Delphi編碼完成程序自打開

      [摘要]作者: 吳淑華 程序自啟動的原理 程序自啟動有以下兩種方式: 1. 利用Win.ini文件實現程序的自動啟動 Win.ini是系統保存在“C:Windows”目錄下的一個系統初始化文件,系統在啟...
      作者: 吳淑華

        程序自啟動的原理

      程序自啟動有以下兩種方式:

      1. 利用Win.ini文件實現程序的自動啟動

      Win.ini是系統保存在“C:Windows”目錄下的一個系統初始化文件,系統在啟動時會檢索該文件中的相關項,以進行系統環境的初始設置。在該文件中的“[windows]”數據段中,有兩個數據項“load=”和“run=”,它們的作用就是在系統啟動之后自動地裝入和運行相關的程序。如果我們需要在系統啟動之后立即裝入并運行一個程序,只需要將運行文件的全文件名添加在該數據項的后面,系統啟動后就會自動運行該程序,系統也會進入特定的操作環境中。

      2. 利用注冊表實現相關程序的自動啟動

      系統注冊表保存著系統的軟件、硬件及其他與系統配置有關的重要信息,一個計算機系統的系統注冊表一旦遭到破壞,整個系統將無法運行。在計算機系統注冊表中有HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Current_Version/Run子鍵,如果要讓程序在系統啟動的過程中啟動該程序,就可以向該目錄添加一個子鍵。具體的過程是在注冊表中右擊該項,選中其中的“新建”項目,然后選中其中的“串值”,建立新的串值后將它改成相應的名稱,雙擊新建的串值,輸入新的數值,自動啟動程序的過程就設置完成。

      編程實例

      在Delphi 5.0中同時具有對注冊表和INI文件操作的函數。下面是筆者編寫的一個簡單程序,該程序通過修改注冊表和INI文件,使系統自動啟動,相關程序的設置工作比較簡單可靠。

      1. 程序功能概述

      程序的主界面是對話框,在主界面對話框中有兩個編輯框、一個按鈕組、一個打開文件對話框、兩個普通按鈕(Button)組成。操作者先在編輯框中添加需要自動加載的程序全文件名(也可以通過瀏覽按鈕來完成),然后通過按鈕組中兩個按鈕完成加載方式的選擇(注冊表方式或者修改Win.ini文件的方式),最后操作者通過點擊“應用”按鈕實現程序的自動加載,同時系統會提示操作者是否將計算機重新啟動,以便觀察程序的具體功能完成情況。

      2. 程序代碼

      procedure TForm1.Button1Click(Sender: TObject);

      {瀏覽按鈕的功能代碼}

      begin

      if (OpenDlg.Execute) then

      {當操作者選擇OK時,程序取得選擇文件的全路徑名(包括文件的路徑及文件名稱),并將相應的數值傳輸給相關的控件變量。}

      Edit2.Text := OpenDlg.FileName;

      end;

      procedure TForm1.OKBtnClick(Sender: TObject);

      {應用按鈕的功能代碼}

      Var

      lKey: HKey;

      i,len: integer;

      title, data_set: LPCTSTR;

      ret0,ret1: longint;

      filename: String;

      begin

      if (edit1.Text =‘’) THEN

      {如果操作者沒有填寫要設置項的標題,程序顯示對話框,提示操作者進行相關內容的填寫。}

      begin

      Application.MessageBox(‘Please input the title name’,‘提示’,MB_OK);

      EXIT;

      end;

      title:=PChar(edit1.Text);

      if (edit2.text =‘’)THEN

      {如果操作者沒有選擇要設置的程序全路徑文件名,程序顯示對話框提示操作者進行相關的選擇。}

      begin

      Application.MessageBox(‘Please input the programe file name’,‘提示’,MB_OK);

      exit;

      end;

      if (RadioGroup1.ItemIndex = 0) then

      {如果操作者選擇注冊表方式,程序修改系統的注冊表。}

      begin

      data_Set:=‘Software\Microsoft\

      Windows\CurrentVersion\Run’;

      {設置注冊表中相關的路徑}

      ret0:=RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_WRITE, lKey);

      //打開注冊表中的相應項

      if (ret0<>ERROR_SUCCESS) then

      Application.MessageBox(‘錯誤0’,‘提示’,MB_OK);

      len := Length(Trim(Edit2.text))+1;

      filename := Trim(Edit2.text);

      for i:=0 to Length(filename) do

      if(filename[i]=‘\’)then

      len:=len+1;

      ret1:=RegSetValueEx(lKey,PChar(title),0,REG_SZ,Pchar(filename),len);

      //將相關的信息寫入注冊表。

      if(ret1<>ERROR_SUCCESS) then

      //判斷系統的相關注冊是否成功?

      Application.MessageBox(‘錯誤1’,‘提示’,MB_OK);

      RegCloseKey(lKey);

      //關閉注冊表中的相應的項

      end

      else begin

      WritePrivateProfileString(‘windows’,‘load’, PChar(filename),‘c:\windows\win.ini’);

      WritePrivateProfileString(‘windows’,‘run’, PChar(filename),‘c:\windows\win.ini’);

      end;

      VerifyDlg.ShowModal;

      {顯示對話框,提示操作者是否需要重新啟動計算機,以便驗證程序的功能。}

      end;

      procedure TVerifyDlg.OKBtnClick(Sender: TObject);

      {重新啟動按鈕的功能代碼}

      var

      OsVerInfo:OSVERSIONINFO;

      //保存系統版本信息的數據結構

      Begin

      OsVerInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);

      GetVersionEx(OsVerInfo);

      //取得系統的版本信息

      if(OsVerInfo.dwPlatformId=VER_PLATFORM

      _WIN32_WINDOWS) then

      ExitWindowsEx(EWX_REBOOT,0);

      //重新啟動計算機

      end;

      (本程序在Win98、Delphi 5.0環境下調試通過) 


      日韩精品一区二区三区高清