我有基于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();
}
答案 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