的確很難搞,真的搞不懂他到底怎麼知道原本從哪呼叫的
(或是其他因素造成 如果不從資料夾呼叫 就讀取發生錯誤??! 因為那個框框錯誤實在不像是專門防止呼叫的)
一開始我用 DDE 來測試,結果不行
後來採用 rundll32.exe 的呼叫也不行,CMD 呼叫也不行
就算層層程式呼叫好幾次,只要最源頭的程式位置不在該資料夾便會失敗 (就從 Visual Basic 6.0 編輯環境呼叫的)
不過用了 ShellExecute 終於成功了
詳細的原理以及程式的呼叫細節我不懂...只知道有此現象而已
後來我還懷疑是不是他偵測母程序是 Explorer 才能用,不過建立在同資料夾的 BAT 檔也可以執行啊
看底下這張圖,中間夾著那框是程序列表,顯示該 超?跑跑(最下面的框) 是被其他資料夾的 call.exe (就是最上面那個框) 所呼叫的,因此變成 該 call.exe 的 子程序
如果用 explorer 的執行好像沒問題的說,而該 call.exe 的母程序就是 explorer 啦
想問你,你要刻意從別的資料夾呼叫要做什麼啊?~很好奇~
VB6 專案檔以及程式附在底下
那個 Call.exe 使用方法是先把 超?跑跑 的位置貼在文字框裡頭,例如我家電腦是 C:\Documents and Settings\user\桌面\game_patcher\talesrunner.exe 然後點按鈕就可以執行了