作者kyokb (傻傻)
看板C_and_CPP
標題Re: [問題] DOS視窗程式問題
時間Thu Dec 17 21:48:32 2009
※ 引述《kyokb (傻傻)》之銘言:
: dear all,
: 我有一個程式test.exe,這個程式本身是用dos畫面來操作
: 當我在命令提示字元打上test後即可開啟這個程式
: 開啟test後畫面如下面,跟一般軟體一樣只是他的視窗是dos畫面
: _________________________
: File|Edit|View|Run|.... |
: |
: |
: |
: |
: ________________________|
: 在操作上的話
: ex:要開啟file案alt+f
: 我的問題是類似這種dos畫面操作的程式
: 我是否有辦法用c語言直接把test上的功能
: 轉成我自己寫的gui介面來使用?
: 舉例來說,就有點像borland C++ builder的IDE環境在執行compiler,debug
: 但背後是在跑bcc32這個程式或turbo debugger
: 有類似經驗的大大麻煩指點迷津一下小弟會很感謝.....
============================================================
可能標題不夠好所以誤會我要寫dos的程式@@"
應該說我要寫一個gui介面,但實際上在跑的是呼叫那個dos程式在跑
ex:我可以在cmd內下指令
gcc -c -o test.o test.c
來進行編譯並產生執行檔
相對的我也可以在gui介面上寫一個button叫compile
而做的事情也是gcc -c -o test.o test.c同樣的事
表面上是那個button在動作,但實際上是gcc.exe這個程式在跑
只是我目前要用的那個DOS程式並不像gcc可以用command方式來執行
而是用熱健(ex: ALT+F, Ctrl+B,或方向鍵...etc.)來操作它提供的功能
我個問題是如果遇到像熱健這種情況,有沒有辦法可以把那個dos程式的功能
轉成我在gui上面操作一樣,如果可以該怎下手寫...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.3.38
1F:→ VictorTom:我有一點不明白, 如果那個test.exe本身是DOS GUI, 你要 12/17 21:52
2F:→ VictorTom:怎麼讓你的Win GUI的內容和DOS結果同步?? 12/17 21:53
3F:→ VictorTom:要GUI掛一個console核心不是問題, DevCPP看起來就是這樣 12/17 21:53
4F:→ VictorTom:包裝的; 但是你的console本身有DOS GUI, 你又沒有DOS程 12/17 21:54
5F:→ VictorTom:式的source code; 如果你真的要硬幹, 變成要去研究找找 12/17 21:54
6F:→ VictorTom:看DOS event與Win GUI的event有沒有辦法互通. 12/17 21:54
7F:→ VictorTom:所以才會說, 最好可以直接用你的GUI搭DOS核心, 而中間 12/17 21:55
8F:→ VictorTom:DOS GUI的部份最好可以整個抽離掉....@_@" 12/17 21:55
9F:→ kyokb:所以v大的意思是開發一個給別人開發程式的程式 12/17 22:05
10F:→ kyokb:不適合用bcc32搭配turbo debugger嗎@@" 我也是卡在turbo 12/17 22:05
11F:→ kyokb:因為我不會有那個debugger的source code 這樣滿難處理 12/17 22:08
12F:→ saxontai:何不用gcc+gdb?都是命令列工具,front-end 比較好寫。 12/17 22:15
13F:→ saxontai:甚至根本不用寫,一堆現成的。 12/17 22:15
14F:推 VictorTom:推樓上; 另外, bcc32是bcb的嗎??bcb應該也有debugger吧? 12/17 22:16
15F:→ saxontai:bcc32是DOS的Borland C/C++ Compiler,其Turbo Debugger 12/17 22:18
16F:→ saxontai:是支TUI(ncurse-like)程式 12/17 22:19
17F:→ kyokb:感謝各位指導,我馬上改gcc+gdb 不過這樣我遇到另一個問題 12/17 22:26
18F:→ kyokb:我原本的gui是bcb寫的, 所以我原先的compiler功能其實是 12/17 22:29
19F:→ kyokb:將別人寫的code先存成.cpp檔然後在用這個cpp編譯成dll 12/17 22:31
20F:→ kyokb:然後再從我的gui上動態呼叫dll來達到執行別人編譯後的code 12/17 22:33
21F:→ kyokb:而debug功能是在cmd上打 gdb xxx.exe =>exe就是我寫的gui 12/17 22:34
22F:→ kyokb:我知道gdb沒有辦法執行一個bcb所寫的exe 這樣我是不是 12/17 22:36
23F:→ kyokb:寫gui的程式不能用bcb? 12/17 22:36
24F:→ kyokb:如果我的gui改用有支援GNU的編譯器與GDB的QT寫會比較適合? 12/17 22:39
25F:→ saxontai:我想釐清一下,你的 GUI 程式是要拿來做 gdb 的圖型介面 12/17 22:41
26F:→ saxontai:還是說你的GUI程式是被debug的標的? 12/17 22:42
27F:→ kyokb:我要debug標的是那個dll檔,只是那個dll有被我的gui執行 12/17 22:49
28F:→ kyokb:而且debug不是只能.exe 或.com嗎@@ 所以我才會在gdb內 12/17 22:50
29F:→ kyokb:輸入我的gui.exe 12/17 22:51
30F:→ kyokb:小弟學的不夠,所以不知道一般程式開發環境是如何讓使用者 12/17 22:53
31F:→ saxontai:那你的 GUI/DLL 必須用能支援 gdb 的 compiler 編譯才行 12/17 22:53
32F:推 sunneo:那可以嘗試假造一個跟dll有著一樣symbol的dll 12/17 22:54
33F:→ kyokb:可以讓使用者寫完程式又可以在ide環境上直接執行 12/17 22:54
34F:→ kyokb:所以會想到將使用者寫的程式先存成cpp檔在轉dll 12/17 22:55
35F:→ saxontai:咦?推 sunneo 大的方法 :D 不過 DLL 有 source code 換 12/17 22:55
36F:→ saxontai:個 compiler 編譯吧。 12/17 22:55
37F:→ kyokb:直接讓那個dll在我的gui上執行@@ 不然我也沒別招了 12/17 22:56
38F:→ sunneo:讓dll一面做事一面log event 因此gui可以透過event知道狀態 12/17 22:56
39F:→ saxontai:kyokb 你的疑惑在那些 open source 的 IDE 裡自有解答呀 12/17 22:56
40F:→ kyokb:sun大的方法小弟不太懂@@, 不過至少讓我找到方向,感謝各位 12/17 23:09
41F:→ kyokb:也感謝sa大提醒, 我先去找找open source IDE看看 12/17 23:10