在win7下運行時(模塊)從不給我任何東西。我期望第一個參數始終是exe文件的路徑,但它總是空的。如何使用運行時結構獲取exe路徑?
回答
當使用WinMain
函數時(即使在調用Runtime.initialize
後),我可以確認運行時返回空值。
如果編譯器發現WinMain
函數,Druntime應嘗試調用WinAPI函數來填充成員rt_args
/rt_cArgs
。通常可以使用GetCommandLine或CommandLineToArgvW來提取參數。應該爲此提交一個bug到bugzilla。
至於當前進程的實際路徑,有一個開放的pull request應該使其進入下一個2.064版本。
C:\work\so> dmd bbasile01.d
C:\work\so> bbasile01.exe
C:\work\so\bbasile01.exe
C:\work\so> type bbasile01.d
import std.stdio;
int main(string[] args) {
writeln(args[0]);
return 0;
} // main() function
編寫跨平臺實現,讓正在運行的進程路徑的功能,不是一個簡單的任務......它已經在數百個(不d相關的)線程在這裏的StackOverflow的討論中來。
我不是在Win 7下勉強這個代碼,完全沒有給我任何代碼。我知道第一個參數是exe的路徑,但問題是:從我這邊來看並不是這樣。我不明白爲什麼。 – BBasile
通常我在Linux上工作,並且args [0]給出了我期望的可執行文件名。我打開了另一臺裝有Windows 7旗艦版的電腦。我在它上面安裝了dmd並用test.d文件名編譯了你的代碼。當我執行時,它會在屏幕上顯示「測試」,這已經是test.exe的名稱了,這是正確的。我認爲你的安裝有問題。 (Win 7,32位,DMD 2.063.2) – tcak
@BBasile:上面的例子是在Windows 7上進行的。更確切地說,VER給出了'Microsoft Windows [Version 6.1.7601]',「dmd -v」給出了'DMD32 D Compiler v2.063.2'。嘗試一些其他版本的DMD ... – DejanLekic
- 1. 在構建時或運行時獲取解決方案路徑
- 2. 如何使用ruby中的參數從unc路徑運行exe
- 3. 如何獲取運行時Web應用程序路徑?
- 4. 如何使用exe路徑使用mciSendString(「播放路徑」,0,0,0)?
- 5. 如何在運行時獲取動態路徑?
- 6. 如何在運行jar時從URL獲取路徑 - Java
- 7. 如何獲取設置輸入文件路徑運行時?
- 8. 如何使用子路徑獲取資源路徑使用NSBundle
- 9. 獲取py2exe上exe文件的路徑
- 10. 爲我的.exe獲取路徑
- 11. 如何獲取數組中元素的層次結構路徑
- 12. 如何從字符串路徑中獲取dirent結構?
- 13. 如何獲得知道exe文件路徑的物理路徑?
- 14. 如何使用java獲取規則(文件夾結構)的路徑
- 15. 如何用PHP保存路徑結構?
- 16. 在運行時獲取應用程序的路徑+ cocoa
- 17. 如何在C#中從路徑運行.exe
- 18. 從終端或命令行運行時獲取路徑
- 19. 獲取文件絕對路徑時Golang運行時錯誤
- 20. 使用manifest.mf類路徑的運行時類路徑
- 21. 如何獲取應用程序使用打印機運行的路徑?
- 22. visual studio 2013在運行.exe時修改路徑變量
- 23. 如何從exe的完整路徑獲取Innosetup腳本中exe的名稱?
- 24. 使用路徑獲取Xelement.elements()
- 25. 獲取組裝路徑,但不是裝配正在運行的臨時路徑
- 26. 如何獲取正在執行的凍結腳本的路徑
- 27. 如何獲取JSON路徑?
- 28. 如何獲取R.java路徑?
- 29. 如何使用Javascript獲取當前正在運行的腳本的路徑?
- 30. CloudBees運行時類路徑
代碼?更多上下文?鏈接到文檔/庫? – BCS
runtime.argc以勝利形式啓動後的core.runtime。就像在示例winsamp中一樣。 – BBasile