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 エラー コードが見つかりませんか? プログラムを別の方法でコンパイルする必要がありますか?
どんな助けでも大歓迎です。ありがとうございました。