使用BCB開啟EXE執行檔 |
答題得分者是:boss.tw
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
我有看過討論區的一些文章
並加以修改~~ 但是我嘗試了一下 卻沒有開啟我要的執行檔~~不知道是為什麼~~ [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { STARTUPINFO si; PROCESS_INFORMATION pi; LPTSTR szCmdline="smooth\\smooth.exe"; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) szCmdline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { ShowMessage(String("").cat_sprintf("CreateProcess failed (%d).\n", GetLastError())); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } [/code] |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
[code cpp] LPTSTR szCmdline="smooth\\smooth.exe"; [/code] 只有這樣的code會有個問題, 程式開始的位置可能是在別的路徑. 最好是指定完整路徑. 如取得目前Process的目錄. [code cpp] AnsiString exePath = ExtractFilePath(Application->ExeName); [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com
編輯記錄
ikk 重新編輯於 2009-02-12 17:49:40, 註解 無‧
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
我試了以下程式,可以正常運作,請參考
論壇 bug , &pi 會變成 π [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { STARTUPINFO si ={0}; PROCESS_INFORMATION pi ={0}; LPTSTR szCmdline="project1.exe"; //ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); //eroMemory( pi , sizeof(pi) ); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) szCmdline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { ShowMessage(String("").cat_sprintf("CreateProcess failed (%d).\n", GetLastError())); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } [/code]
編輯記錄
boss.tw 重新編輯於 2009-02-12 18:39:09, 註解 無‧
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
===================引 用 ikk 文 章=================== [code cpp] LPTSTR szCmdline="smooth\\smooth.exe"; [/code] 只有這樣的code會有個問題, 程式開始的位置可能是在別的路徑. 最好是指定完整路徑. 如取得目前Process的目錄. [code cpp] AnsiString exePath = ExtractFilePath(Application->ExeName); [/code] 不好意思~~我有在嘗試了一下 [code cpp] LPTSTR szCmdline="G:\smooth\smooth.exe"; [/code] 但是出現了 CreateProcess failed(2) 的字樣~~ |
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
===================引 用 boss.tw 文 章=================== 我試了以下程式,可以正常運作,請參考 論壇 bug , &pi 會變成 π [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { STARTUPINFO si ={0}; PROCESS_INFORMATION pi ={0}; LPTSTR szCmdline="project1.exe"; //ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); //eroMemory( pi , sizeof(pi) ); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) szCmdline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { ShowMessage(String("").cat_sprintf("CreateProcess failed (%d).\n", GetLastError())); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } [/code] 請問一下您的檔案路徑是放在桌面上嗎?? 因為這個程式碼妳寫的跟我的都跑出一樣的結果~~都是出現CreatProcess failed(2)的錯誤 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
LPTSTR szCmdline="G:\\smooth\\smooth.exe";
指的是絕對路徑,就是 smooth.exe 必須存在於 G:\smooth\ 目錄下 LPTSTR szCmdline="smooth\\smooth.exe"; 指的是相對路徑,就是 smooth.exe 必須存在於 執行程式的路徑\smooth\ 目錄下 LPTSTR szCmdline="smooth.exe"; 指的是相對路徑,就是 smooth.exe 必須存在於 執行程式的路徑 目錄下,也就是跟 執行的程式 同目錄 |
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
|
jazz
初階會員 發表:10 回覆:43 積分:35 註冊:2002-06-15 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
===================引 用 boss.tw 文 章=================== [code cpp] HANDLE hProg; int ret = 0; AnsiString exePath = ExtractFilePath(Application->ExeName) "xxx.exe"; ret = spawnl(P_WAIT, exePath.c_str(), exePath.c_str(), "", "", NULL); [/code] 不好意思再冒昧請問一下 這應該放在哪邊及如何使用!! |
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
放在 Button1Click 裡,取代原來Button1Click裡的東西
===================引 用 5515531 文 章=================== ===================引 用 boss.tw 文 章=================== [code cpp] HANDLE hProg; int ret = 0; AnsiString exePath = ExtractFilePath(Application->ExeName) "xxx.exe"; ret = spawnl(P_WAIT, exePath.c_str(), exePath.c_str(), "", "", NULL); [/code] 不好意思再冒昧請問一下 這應該放在哪邊及如何使用!! |
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
AnsiString exePath = ExtractFilePath(Application->ExeName) "xxx.exe";
ExtractFilePath(Application->ExeName) 指的是目前編譯的程式的目徑 "xxx.exe"; 指的是你要執行的執行檔 所以請你把要執行的檔放在同一個目錄 另外 jazz 提到的問題你要先離清,是否你要執行的檔可以正常執行有畫面 你提到的是 Warning,為什麼會有 Warning,你po 出的文字已經告訴你了,請自已翻成中文 |
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
boss.tw
高階會員 發表:15 回覆:109 積分:194 註冊:2005-05-17 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |