看板 C_and_CPP 關於我們 聯絡資訊
很挫折...再練習win32的API使用 卻一直都遇到怪問題 我使用CreateProcess 想開啟PCMAN 如下 PROCESS_INFORMATION pi; bool isCreate = CreateProcess(L"\"c:\\Program Files\\PCMan Combo\\PCMan.exe\"", L" ", 0, 0, false, 0, NULL, NULL, NULL, &pi); 一直出現run time error~Access violation 明明傳入的資訊應該沒錯 但是一直搞不定 LPSTARTUPINFO lpStartupInfo這欄 我沒有填入 就算填入也是無法成功開啟 加入後如下 STARTUPINFO si; memset(&si,0,sizeof(si)); si.cb= sizeof(si); bool isCreate = CreateProcess(L"\"c:\\Program Files\\PCMan Combo\\PCMan.exe\"", L" ", 0, 0, false, 0, NULL, NULL, &si, &pi); 我是哪裡搞錯了= = 覺得學win32 快吐血了 一堆東西也記不住 用成功了也不懂原理.... 謝謝各位 == -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66
Kerlifw:把 "\"c:\\Program Files\\PCMan Combo\\PCMan.exe\""換成 01/04 17:55
Kerlifw:"c:\\Program Files\\PCMan Combo\\PCMan.exe"看看 01/04 17:57
QQ29:可以開了= = 不過疑問也來了 我是之前都用system()去開 01/04 19:09
QQ29:#1Az1fYbJ 這篇我問的 那時會有遇到空格就停的情況 01/04 19:12
QQ29:但是這裡為啥不需要這樣 是因為unicode和char*的差別嗎?? 01/04 19:12
UNARYvvv:建議用 GetStartupInfo () 01/04 19:56
UNARYvvv:另外對 CreateProcessW 的第二參數 lpCommandLine 01/04 19:57
UNARYvvv:不該傳入一個 const string literal 請見 MSDN 01/04 19:58
UNARYvvv:跳出 access violation 的原因應該就是因為那樣吧 01/04 19:59
cplusplus:你覺得system跟CreateProcess是一模一樣的東西? 如果 01/04 20:37
cplusplus:你覺得不是,那你覺得處理字串的規則一定會一樣? :P 01/04 20:37
cplusplus:當然有可能不一樣...查一下MSDN吧...有很詳細的說明 01/04 20:37
QQ29:to U大 我發現是沒傳si 就會出現violation....不知道為啥 01/04 22:06
cookiesgreat:有一個函數是 GetLastError() 什麼的,可看錯誤碼。 01/04 22:26
cookiesgreat:if(!CreateProcess()){ GetLastError(); } 01/04 22:27
cookiesgreat:接著去 Google "System Error Code" 01/04 22:27
aecho:覺得win32就是不斷的看MSDN和論壇啊 Orz 01/04 22:27
cookiesgreat:耶... 突然發覺原 PO 的問題已經解決了= =" 01/04 22:30
QQ29:也不算解決 我其實對 cplusplus大的那推文不了解.... 01/04 22:49
cplusplus:orz 查一下msdn啦~我是說system跟CreateProcess處理參數 01/04 23:30
cplusplus:的方法不同....怎麼突然不能連續推文了... 01/04 23:37
VictorTom:簡單的說, 就是什麼時候檔案路徑要加""避免被空白隔開, 01/04 23:41
VictorTom:什麼時候不需要; 這些東西就要仔細查文件了....:) 01/04 23:44
QQ29:喔我以為是unicode那個我不懂的東西@@ 01/05 00:07
QQ29:超久的推文間隔.... 其實MSDN我每次看的都更頭大....好痛苦 01/05 00:11