【发布时间】:2012-04-05 09:21:44
【问题描述】:
我正在尝试使用 winapi 函数打招呼。这有点工作,但我希望以正确的方式完成它。
所以我得到了这样的代码:
int main(){
HANDLE std_out;
int i;
char *error_msg;
std_out = GetStdHandle(STD_OUTPUT_HANDLE);
if(std_out == INVALID_HANDLE_VALUE){
MessageBox(NULL,"stdout not available","Error",MB_OK);
return 1;
}
AttachConsole(ATTACH_PARENT_PROCESS);
if(!WriteConsoleA(std_out,"hhh\n",4,&i,NULL)){
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,GetLastError(),0,&error_msg,4,NULL);
MessageBox(NULL,error_msg,"Error",MB_OK);
}
return 42;
}
我也在做一些实验,所以我链接到 /entry:main /subsystem:windows
输出如下:
%PATH_TO_WORKING_DIR%>hhh(CRLF)
然后它会一直等到我按 RETURN 然后程序终止,您可能同意这是非常糟糕的“hello world”。非常欢迎任何关于如何摆脱 PWD 和按下返回键的想法,谢谢阅读。
【问题讨论】:
-
您可能想了解
main的返回值约定。 -
您将需要使用 start.exe /wait yourapp.exe 来启动您的程序,调用 AllocConsole 而不是 AttachConsole 或将子系统设置为控制台。
-
@MikeKwan:这不是这里的问题。