啓動Windows應用程序VS控制檯應用程序我運行從Cmd的應用程序時,直接調用的exe關於控制檯VS Windows應用程序好奇的問題。
如果應用程序被編譯爲控制檯應用程序(將把它作爲我ConApp),通過CMD運行應用程序時,該應用的提示等待完成後再繼續行駛。但是,如果應用程序已被編譯爲一個Windows應用程序(將指它作爲我WinApp),通過CMD的提示將發射後不管的WinApp,可以理解這是預期的行爲開始應用。
要讓WinApp停止發射和遺忘cmd,必須在cmd中啓動應用程序,例如「start \ wait WinApp.exe」,這將導致Cmd提示符等待WinApp在繼續之前停止運行。
我解決這個問題是如何控制檯應用程序通知Cmd的,或如何Cmd的知道,它需要保持開放,而不是發射後不管的ConApp?而且是可以調用相同的行爲有點在我WinApp即,使得我沒有叫「開始\等待」嗎?
注:
我WinApp使用AttachConsole(-1)時,我身邊有使用AllocConsole和AttachConsole,但是出場,Cmd的還是發射後忘記了WinApp但是WinApp似乎只需打開一個新的控制檯窗口。通過Cmd的
Q
通過Cmd的
12
A
回答
7
此信息存儲爲EXE二進制格式的PEOptHeader
部的一部分。具體地,Subsystem
字段告訴操作系統的應用程序類型,這是並且可以具有以下值
- 1:母語
- 2:視窗/ GUI
- 3:視窗非GUI
- 5 :OS/2
- 7:POSIX
這是告訴窗口什麼類型的節目也因此賦予它使不同的能力如cmd所做的選擇。
3
撇開技術細節(JaredPar did a really good job of doing that),如果你想你的程序Windows/GUI
模式更改爲Windows non-GUI
所有你需要做的就是去到您的項目設置和更改從「Windows應用程序的下拉「到‘控制檯應用程序’
你可以有一個窗口的應用程序運行作爲控制檯應用程序,它會給你你期望的行爲。 (但是請注意,現在,如果雙擊程序的圖標,它將打開一個控制檯窗口,該窗口在打開程序時保持打開狀態。)
相關問題
- 1. 通過CMD
- 2. Linux的CMD通過列名
- 3. 通過Java的CMD操作
- 4. 如何通過CMD打印?
- 5. 通過PhP運行cmd
- 6. 錯誤上通過CMD
- 7. 通過CMD安裝lxml
- 8. postgres通過cmd登錄
- 9. Mongoimport CMD不會通過
- 10. 通過cmd更新Windows 7
- 11. 通過過程psexec通過cmd給出不同的退出碼比psexec通過cmd
- 12. Java的級聯通過CMD輸入
- 13. 通過Windows的LDAP查詢CMD
- 14. FTP通過CMD不同的服務器
- 15. 通過Windows CMD的Oracle虛擬箱
- 16. 通過TCP客戶端向CMD發送CMD
- 17. 使用cmd通過ftp傳輸文件
- 18. 從瀏覽器運行cmd - 通過JS
- 19. 通過cmd運行硒獨立腳本
- 20. c#通過cmd運行命令
- 21. 通過使用ProcessBuilder啓動CMD
- 22. 通過cmd刪除註冊表項
- 23. 如何通過cmd執行C文件
- 24. 通過CMD /註冊表禁用IPv4
- 25. 無法登錄通過CMD到Sybase
- 26. 使用Windows cmd時記住通過(git)
- 27. 通過cmd獲取網速(Windows)
- 28. 通過CMD下載網頁內容
- 29. 通過CMD從Java發送XML
您感興趣的技術細節或如何將程序從發射後不管模式更改爲等待模式? –
可執行文件是否爲控制檯模式應用程序或本機Windows應用程序是否記錄在EXE文件的標頭中。 Cmd.exe看它知道該怎麼做。這不會幫助你解決任何問題。 –