<Return[G]><Top>

GetLastError

Declare Function Api_GetLastError& Lib "kernel32" Alias "GetLastError" ()

Declare Function GetLastError Lib "kernel32" Alias "GetLastError" () As Long

呼び出し側のスレッドが持つ最新のエラーコードを取得する。エラーコードは、スレッドごとに保持されるため、複数のスレッドが互いの最新のエラーコードを上書きすることはない。

パラメータ
    パラメータはなし。

戻り値
    呼び出し側のスレッドが持つ最新のエラーコードが返る。(F-Basic では、全て 0 が返るようである。)

    他の関数は、SetLastError 関数を呼び出して、内部でこのエラーコードを設定する。

    各関数の「戻り値」では、各関数がどのような条件で最新のエラーコードを設定するのか説明している。
    Windows 95/98:SetLastError は 32 ビット専用の関数なので、Win32 の関数のうち実際は 16 ビットコードで実装されているものは、最

    新のエラーコードを設定しない。このような関数を呼び出した後は、最新のエラーコードを無視するべきである。

    ウィンドウ管理関数、GDI 関数、マルチメディア関数がこれに該当する。
    F-Basic では 戻り値が必ず 0 になるので使えないようである。VB では
Err.LastDllError で取得できるが、F-Basic では???


解説
    システムエラーコードに対応するエラー文字列を取得するには、FormatMessage 関数を使う。
    関数の戻り値から、その関数の呼び出し結果が有効なデータであることがわかった場合、すぐに GetLastError 関数を呼び出すべきであ

    る。特定の関数は成功したときに SetLastError(0) を呼び出して、直前に失敗した関数が設定したエラーコードを消去してしまうからであ

    る。ほとんどの Win32 関数は、関数が失敗したときにエラーコードを設定するが、特定の関数は、関数が成功したときにエラーコードを設

    定する。

    通常は、関数が失敗した場合の戻り値は、0、NULL、-1 のいずれかである。

    特定の関数は、成功したときに SetErrorCode を呼び出す。