全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2723
推到 Plurk!
推到 Facebook!

如何一開機即啟動程式且執行自己的ini檔

尚未結案
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-16 12:06:51 IP:210.59.xxx.xxx 未訂閱
各位大大; 我希望在一開機即啟動程式且執行自己的ini檔,若把程式放在啟動的 Group 或更改HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionRun ,是可以啟動程式,但卻無法將ini檔案也讀進去,請問各位大大,有 沒有甚方法,可改進此問題.
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-16 19:56:15 IP:211.22.xxx.xxx 未訂閱
有!連成一氣~ 程式被啟動後,使用TiniFile類別方法去讀取ini檔裏的資料。 搜尋一下站裡面TiniFile的用法吧!有很多。 ----------------------------------------------
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-17 09:57:25 IP:59.115.xxx.xxx 未訂閱
mtyen 您好:    這個狀況有可能是在讀取 .ini 檔案時,沒有設定欲讀取檔案的所在路徑,或者設定的路徑是相對路徑,試著將讀檔時的動作加上絕對路徑試看看。 7 天天敲鍵盤 v 時時按滑鼠 8
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-19 13:27:09 IP:210.59.xxx.xxx 未訂閱
ini(aa.ini)檔與我的exe檔是放在某一個directory(例如: C:\Jack\Exe),程式是 利用getcwd api得到C:\Jack\Exe路徑,從此路徑,C:\Jack\Exe\aa.ini讀此ini 檔,若此exe file,由檔案總管執行,就可抓到ini file,若放在啟動的Group,exe file執行起來,getcwd就取不到C:\Jack\Exe,有沒有辦法可改進此缺失.
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-19 14:00:50 IP:59.115.xxx.xxx 未訂閱
mtyen 您好:    不是很清楚您實際的寫法為何?不過我仍覺得您的方式可能有誤,您可以試著在程式內讀取 .ini 檔案之前加上一個顯示現行路徑的敘述,看看路徑是否正確?    我建議您不要使用 getcwd 的方式來取得路徑資料,因為在不同目錄啟動程式時 (例如:在 C:\ 目錄直接執行 C:\test\ptog1.exe 程式),使用該方法所取得的目錄位置會超出您的預期,試著改用 ExtractFilePath(ParamStr(0)) 或是 ExtractFilePath(Application->ExeName) 來直接抓取執行檔的所在位置,然後再將 .ini 檔的名稱組合成含有完正路徑的檔案名稱,然後再去讀取它,這樣子應該就不會出問題了,例如:
AnsiString ProgPath = ExtractFilePath(Application->ExeName);
AnsiString IniFile = ProgPath   "aa.ini";
TIniFile *SavedQueries = new TIniFile(IniFile);
.... 其它動作 ....
7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/19 14:20:42
wyx828ty
一般會員


發表:0
回覆:2
積分:0
註冊:2005-09-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-19 15:46:34 IP:221.218.xxx.xxx 未訂閱
你是要将自己定义的.ini文件读入吗? 你可以把.ini文件放在你的工程目录下,在你的工程的OnShow事件中打开。 这是我前几工作中写的,希望对你有帮助: ////////////////////////////////////////////////////// //  函数名:AnsiString readIni(char *key)   // //  输入: .ini文件[]中的关键字              // //  输出: 关键字值                                // //  代码描述:从指定.ini文件中根据输  // //            入的关键字获取关键字值        // //  代码编写:王延鑫                             // ////////////////////////////////////////////////////
AnsiString readIni(char *key)                  //输入关键字
{         int  keysize;                       //关键字长度
     long filelen;
     char *strFile;                      //文件长度
     char keyValue[20];
     char *keyStart;                     //关键字开始位置
     char *keyValueEnd;                  //关键字值结尾位置
     FILE *fp;         if((fp=fopen("RemoteManage.ini", "r "))==NULL)      //按路径打开文件
     {
        ShowMessage("文件不存在或文件有问题");
        exit(0);
     }         fseek(fp,0,SEEK_END);
     filelen= ftell(fp);                 //获取文件长度
     fseek(fp,0,SEEK_SET);         if((strFile = (char *)malloc(filelen))==NULL)
     {
        ShowMessage("Not enough memory to allocate buffer");
        exit(0);
     }
     fread(strFile,filelen, 1, fp);         //读数据         keysize=strlen(key);                //获取关键字长度         keyStart=strstr(strFile,key);
     char *end=strstr(strFile,"/n/n/n/n/n");
     if(keyStart==end)
     {             ShowMessage("关键字不正确");
         Application->Terminate();
     }
     else
     {
         keyValueEnd = strstr(keyStart,"\n");             if(!keyValueEnd)
         {
             ShowMessage(".ini文件书写有问题");
             exit(0);
         }
         else
         {
             memset(keyValue,0,sizeof(keyValue));
             strncpy(keyValue,keyStart keysize 1,keyValueEnd-keyStart-keysize-1);
         }
         free(strFile);
         return keyValue;
     }
}
我的.ini文件格式时自定义的,你也可以自己写。 你也可以用TIniFile读.ini文件,不过格式是固定的。
系統時間:2024-05-04 13:12:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!