在C++ Builder3下實現程式自動執行的方法 (轉)
在C++ Builder3下實現程式自動執行的方法 (轉)[@more@]現在很多應用後都可以實現開機自動執行,大大方便了使用。想當初我就對這項功能羨慕至極。能否在我們自己編寫的中實現程式自動執行呢?答案當然是肯定的。利用Borland公司出品的C++ Builder3我們就可以很方便地做到這一點。
---- C++ Builder3是由Borland公司於近年推出的新產品,支援視覺化設計。喜歡使用BC3.1的人使用C++ Builder3真是輕車熟路。它的斷點以及Watch功能都承襲了BC3.1的優良傳統,除錯程式很方便。眾多熱鍵都沿用了BC3.1的方案,上手十分容易。難怪它在測試階段就獲得了眾多的好評呢!
---- 有了好的開發工具,下面就要切入正題了。首先,我們來看看在95、98環境下,程式實現開機自動執行的方法。根據有關資料,大致有以下三種方法:
利用"開始"選單中的"啟動"程式項。凡是拖入該程式項的程式都可以實現自動執行。
利用Win.ini中的run變數。編輯Win.ini,為run變數賦值。如run= 某程式, 可以使某程式實現自動執行。
利用登錄檔。透過修改登錄檔中相關項,實現程式自動執行。
---- 看上去,第一種方法是最容易實現的。由於所謂的"開始"程式選單實際上是一個特殊目錄下的特殊檔案。其目錄一般在C: Windows
Start Menu Programs下。"啟動"程式項的目錄一般為C: Windows Start Menu
Programs 啟動。這樣程式只要在把自身複製到此目錄下就可以實現程式自動執行了。然而這裡有個問題,如果出現特殊情況,"啟動"程式項的目錄不在理想目錄下呢?自動執行顯然無法實現了。要解決這個問題,我們可以利用登錄檔得到有關資訊。在登錄檔HKEY_USERS.Default
SoftwareWindows CurrentVersion TRegister *Test; Test = new TRegister(); Test- >Key = HKEY_USERS; if(Test- >OpenKey(".DefaultSoftware MicrosoftWindowsCurrentVersion Explorer Folders",false)) Path = Test- >ReadString("Startup"); //獲得"啟動"程式項準確目錄 delete Test;
---- 對於第二種方法,關鍵在於對Win.ini的讀寫。Win.ini為WINDOWS啟動時初始檔案,存放在目錄下。系統目錄可以在登錄檔HKEY_LOCAL_MACHINE SOFTWAREWindows
CurrentVersion下,透過讀取SystemRoot值得到。程式自身的存放路徑可以利用C++ Builder3中Application類的ExeName變數得到。使用C++ Builder3提供的TIniFile類,我們可以十分方便地對INI檔案進行操作。程式如下:
TRegister *Test;
TIniFile *IniFile;
Test = new TRegister();
Test- >RootKey = HKEY_LOCAL_MACHINE;
if(Test- >OpenKey
("SOFTWAREWindowsCurrentVersion",false))
Path = Test- >ReadString("SystemRoot");
//獲得WINDOWS系統目錄
delete Test;
Path = Path + "Win.ini";
//獲得Win.ini的完整路徑
IniFile = new TIniFile(Path);
IniFile- >WriteString
("windows","run",Application- >ExeName);
// run = 檔名
delete IniFile;
---- 對於第三種方法,實現起來最為隱蔽。如果不瞭解登錄檔,想去掉自動執行都不行哦。在登錄檔HKEY_LOCAL_MACHINE SOFTWARE
Microsoft Windows CurrentVersion Run下的所有程式項都可以被WINDOWS自動執行。因此,我們可以透過新增新程式項實現自動執行功能。程式如下:
TRegister *Test;
Test = new TRegistry();
Test- >RootKey = HKEY_LOCAL_MACHINE;
if(Test- >OpenKey
("SOFTWAREMicrosoftWindows
CurrentVersionRun",false))
Test- >WriteString
("My Program",Application- >ExeName);
delete Test;
怎麼樣?用C++ Builder3實現程式自動執行夠簡單的吧。利用C++ Builder3的TRegister類,我們可以方便地實現對登錄檔的讀寫,從而完成很多強大功能。使用TIniFile類可以很容易地實現對INI檔案的讀寫操作,對於儲存自己程式的配置相當有效。自己動手用C++ Builder3,感覺真不錯!
---- C++ Builder3是由Borland公司於近年推出的新產品,支援視覺化設計。喜歡使用BC3.1的人使用C++ Builder3真是輕車熟路。它的斷點以及Watch功能都承襲了BC3.1的優良傳統,除錯程式很方便。眾多熱鍵都沿用了BC3.1的方案,上手十分容易。難怪它在測試階段就獲得了眾多的好評呢!
---- 有了好的開發工具,下面就要切入正題了。首先,我們來看看在95、98環境下,程式實現開機自動執行的方法。根據有關資料,大致有以下三種方法:
利用"開始"選單中的"啟動"程式項。凡是拖入該程式項的程式都可以實現自動執行。
利用Win.ini中的run變數。編輯Win.ini,為run變數賦值。如run= 某程式, 可以使某程式實現自動執行。
利用登錄檔。透過修改登錄檔中相關項,實現程式自動執行。
---- 看上去,第一種方法是最容易實現的。由於所謂的"開始"程式選單實際上是一個特殊目錄下的特殊檔案。其目錄一般在C: Windows
Start Menu Programs下。"啟動"程式項的目錄一般為C: Windows Start Menu
Programs 啟動。這樣程式只要在把自身複製到此目錄下就可以實現程式自動執行了。然而這裡有個問題,如果出現特殊情況,"啟動"程式項的目錄不在理想目錄下呢?自動執行顯然無法實現了。要解決這個問題,我們可以利用登錄檔得到有關資訊。在登錄檔HKEY_USERS.Default
SoftwareWindows CurrentVersion TRegister *Test; Test = new TRegister(); Test- >Key = HKEY_USERS; if(Test- >OpenKey(".DefaultSoftware MicrosoftWindowsCurrentVersion Explorer Folders",false)) Path = Test- >ReadString("Startup"); //獲得"啟動"程式項準確目錄 delete Test;
---- 對於第二種方法,關鍵在於對Win.ini的讀寫。Win.ini為WINDOWS啟動時初始檔案,存放在目錄下。系統目錄可以在登錄檔HKEY_LOCAL_MACHINE SOFTWAREWindows
CurrentVersion下,透過讀取SystemRoot值得到。程式自身的存放路徑可以利用C++ Builder3中Application類的ExeName變數得到。使用C++ Builder3提供的TIniFile類,我們可以十分方便地對INI檔案進行操作。程式如下:
TRegister *Test;
TIniFile *IniFile;
Test = new TRegister();
Test- >RootKey = HKEY_LOCAL_MACHINE;
if(Test- >OpenKey
("SOFTWAREWindowsCurrentVersion",false))
Path = Test- >ReadString("SystemRoot");
//獲得WINDOWS系統目錄
delete Test;
Path = Path + "Win.ini";
//獲得Win.ini的完整路徑
IniFile = new TIniFile(Path);
IniFile- >WriteString
("windows","run",Application- >ExeName);
// run = 檔名
delete IniFile;
---- 對於第三種方法,實現起來最為隱蔽。如果不瞭解登錄檔,想去掉自動執行都不行哦。在登錄檔HKEY_LOCAL_MACHINE SOFTWARE
Microsoft Windows CurrentVersion Run下的所有程式項都可以被WINDOWS自動執行。因此,我們可以透過新增新程式項實現自動執行功能。程式如下:
TRegister *Test;
Test = new TRegistry();
Test- >RootKey = HKEY_LOCAL_MACHINE;
if(Test- >OpenKey
("SOFTWAREMicrosoftWindows
CurrentVersionRun",false))
Test- >WriteString
("My Program",Application- >ExeName);
delete Test;
怎麼樣?用C++ Builder3實現程式自動執行夠簡單的吧。利用C++ Builder3的TRegister類,我們可以方便地實現對登錄檔的讀寫,從而完成很多強大功能。使用TIniFile類可以很容易地實現對INI檔案的讀寫操作,對於儲存自己程式的配置相當有效。自己動手用C++ Builder3,感覺真不錯!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000517/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在Vb下實現多執行緒 (轉)執行緒
- redhat 9.0 中任務自動執行的實現方式 (轉)Redhat
- 編輯cron實現自動執行
- 編寫隨Windows啟動自動執行的程式 (轉)Windows
- c++實現程式與執行緒的同步互斥C++執行緒
- 10分鐘實現dotnet程式在linux下的自動部署Linux
- 禁止 Windows 98 自動執行應用程式(轉)Windows
- 用Delphi在工業控制和自動化實現多執行緒進行資料採集 (轉)執行緒
- 動態執行緒池在轉轉平臺的實踐執行緒
- 實現FTP多執行緒下載 (轉)FTP執行緒
- 在Red Hat Linux中自動執行程式(轉)Linux行程
- VC++中實現程式互斥執行 (轉)C++
- Nohup命令讓Linux下的程式在後臺執行 - 轉Linux
- Oracle 10g在solaris 10下的自動執行指令碼薦Oracle 10g指令碼
- php實現自動化執行環境檢測PHP
- 使用執行緒實現“到點自動辦理”執行緒
- 自動現代化C++程式碼C++
- 利用VC++程式設計實現程式自動啟動 (轉)C++程式設計
- Linux 下讓程式在後臺可靠執行的幾種方法Linux
- 在Linux下兩種方法完整執行最新的QQ和MSN(轉)Linux
- windows 下建立自動執行任務Windows
- Android客戶端apk自動檢測更新自動下載自動安裝的實現方法Android客戶端APK
- win10 禁止任務自動執行方法 win10自動執行程式怎麼禁止Win10行程
- WIN下動態註冊碼實現方法 (轉)
- java實現多執行緒的方法Java執行緒
- Java多執行緒的實現方法Java執行緒
- 在C++程式中匯出Word文件的方法(轉)C++
- JS+PHP實現登入後自動執行之前的操作JSPHP
- 在unix下定時執行oracle的sql方法(轉)OracleSQL
- 在VC中實現程式在啟動時隱藏 (轉)
- 在IDEA上執行成功,打包成jar包後,執行報錯,程式自動退出IdeaJAR
- 託管C++執行緒鎖實現C++執行緒
- 02 #### `__call__` ,物件(),自動執行call 方法物件
- 在Windows NT/2000下實現"軟"RAID的方法(轉)WindowsAI
- ZendFramework自動載入類的實現方法Framework
- 自動化測試應該如何實現多執行緒?執行緒
- Ios+appium自動化多裝置執行實現iOSAPP
- 用java的jwindow實現程式執行出的splash畫面。 (轉)Java