1

我有一个基于 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();
         }
4

1 回答 1

0

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

例如,微软的 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
于 2013-08-14T21:32:53.490 回答