try
{
pConnect = sess->GetFtpConnection(ftpArgs.host, ftpArgs.userName, ftpArgs.password, port, FALSE );
}
catch (CInternetException* pEx)
{
loginErrCode = GetLastError();
printf("loginErrCode: %d\n", loginErrCode);
if(loginErrCode == 12013)
{
printf("Incorrect user name!\n");
exit(0);
}
else if(loginErrCode == 12014)
{
printf("Incorrect password!\n");
exit(0);
}
else if(loginErrCode == 12007)
{
printf("Incorrect server name!\n");
exit(0);
}
else //display all other errors
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
printf("ERROR! %s\n, sz);
pEx->Delete();
exit(0);
}
当此代码使用故意不正确的用户名从 Visual Studio 运行时,GetLastError() 返回 12014(预期)。
但是,当从命令行运行相同的代码时(使用完全相同的错误用户名)GetLastError() 返回 2?(GetErrorMessage()确实返回了错误的密码)
我不明白有什么区别。
此外,我从命令行运行程序,同时在 Visual Studio 中将进程附加到它以进行调试。我收到了 12014。
每当涉及调试器时,我都会得到 12014。当我使用相同的参数“正常”运行可执行文件时,我会得到 2。
在调试器之外运行程序时是否找不到 WinInet 错误代码?我需要以不同的方式编译程序吗?
任何帮助表示赞赏。谢谢你。