« ICU を使う |
メイン
| 引数の個数 »
2008年01月11日
このエラーコードは何かなと、調べたい時がままある。
だいたい grep とかしていたけど、コマンドラインでエラーコード打ったら返してくれるのがあればいいんだと思って作った。
以下のような感じ。
Windows のエラーと DirectX 9 のエラーコードを文字列にして表示してくれる。
たぶん、DirectX 9が入っていないと起動しない。
#include <stdio.h>
#include <windows.h>
#include <sstream>
#include <string>
#include <dxerr9.h>
#pragma comment(lib,"dxerr9.lib")
int main( int argc, char* argv[] )
{
if( argc < 2 ) {
printf( "usage:\n" );
printf( argv[0] );
printf( " [error code]\n" );
printf( "\n" );
printf( "ex.\n" );
printf( "whaterror 0x01234567\n" );
} else if( argv[1] ) {
std::string valstr( argv[1] );
unsigned long errorCode;
std::stringstream stream( valstr, std::ios::in );
stream >> std::hex >> errorCode;
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
if( lpMsgBuf ) {
printf( (LPCTSTR)lpMsgBuf );
} else {
const char* dxErrStr = DXGetErrorString9( errorCode );
const char* dxErrDesc = DXGetErrorDescription9( errorCode );
if( dxErrStr ) printf( "%s\n", dxErrStr );
if( dxErrDesc ) printf( "%s\n", dxErrDesc );
}
LocalFree(lpMsgBuf);
}
}
|
他の人に聞くと、エラーコードでググるとか。
そっちのが楽かも。
whaterror.zip に置いておくので、気が向いたら使ってください。
パスが通っているところにおいておくと、すぐに使える。
16進数かどうか判定して、10進数でも使えるともう少し便利になるかも。
投稿者 Takenori : 2008年01月11日 19:53
comments powered by