从windows gui程序输出到命令行

时间:2013-06-14 14:52:32

标签: c windows cmd

我有基于GDI的基于win32 gui的exe -

程序在启动时接受命令行参数,并且 如果命令行不正确,我需要一种打印消息的方法。

目前,我正在使用MessageBox显示错误消息, 并想知道如何打印出此错误消息 用户从dos命令行启动程序。 -

:)

确定这可以做我想要的,但它要求我按enter否则我不会看到当前路径显示..

         void RedirectIOToConsole()
         {
         int hConHandle;
         FILE *fp;
         AttachConsole(-1);
         hConHandle=_open_osfhandle(GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT);
         fp=_fdopen(hConHandle,"w");
         fprintf(fp,"\ntesting\n");
         fflush(fp);
         _close(hConHandle);
         FreeConsole();
         }

1 个答案:

答案 0 :(得分:1)

大多数需要完成此操作的应用程序将创建其应用程序的* .com版本(将与.exe一起放置)。所有快捷方式都将指向.exe,但如果用户碰巧在命令行上键入名称,则.com版本将最终执行(因为CMD将在.exe文件之前搜索.com文件).com版本通常是一个瘦的包装器,它将调用.exe并等待它完成或使用共享.dll文件,但它纯粹存在,输出可以汇集到正确的控制台窗口,并且不会“释放”它直到应用程序饰面。

例如,Microsoft的Visual Studio使用这种方法:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE>dir devenv.*
 Volume in drive C has no label.
 Volume Serial Number is A482-59BA

 Directory of C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

07/26/2012  05:05 PM             7,680 devenv.com
07/26/2012  07:08 PM           406,976 devenv.exe