Code
Код: Выделить всё
interface
const
STEAM_MAX_PATH = 255;
type
eDetailedPlatformErrorType = (eNoDetailedErrorAvailable, eStandardCerrno,
eWin32LastError, eWinSockLastError, eDetailedPlatformErrorCount);
eSteamError = (eSteamErrorNone = 0, eSteamErrorUnknown = 1,
eSteamErrorLibraryNotInitialized = 2,
eSteamErrorLibraryAlreadyInitialized = 3, eSteamErrorConfig = 4,
eSteamErrorContentServerConnect = 5, eSteamErrorBadHandle = 6,
eSteamErrorHandlesExhausted = 7, eSteamErrorBadArg = 8,
eSteamErrorNotFound = 9, eSteamErrorRead = 10,
eSteamErrorEOF = 11, eSteamErrorSeek = 12,
eSteamErrorCannotWriteNonUserConfigFile = 13, eSteamErrorCacheOpen = 14,
eSteamErrorCacheRead = 15, eSteamErrorCacheCorrupted = 16,
eSteamErrorCacheWrite = 17, eSteamErrorCacheSession = 18,
eSteamErrorCacheInternal = 19, eSteamErrorCacheBadApp = 20,
eSteamErrorCacheVersion = 21, eSteamErrorCacheBadFingerPrint = 22,
eSteamErrorNotFinishedProcessing = 23, eSteamErrorNothingToDo = 24,
eSteamErrorCorruptEncryptedUserIDTicket = 25,
eSteamErrorSocketLibraryNotInitialized = 26,
eSteamErrorFailedToConnectToUserIDTicketValidationServer = 27,
eSteamErrorBadProtocolVersion = 28,
eSteamErrorReplayedUserIDTicketFromClient = 29,
eSteamErrorReceiveResultBufferTooSmall = 30, eSteamErrorSendFailed = 31,
eSteamErrorReceiveFailed = 32,
eSteamErrorReplayedReplyFromUserIDTicketValidationServer = 33,
eSteamErrorBadSignatureFromUserIDTicketValidationServer = 34,
eSteamErrorValidationStalledSoAborted = 35,
eSteamErrorInvalidUserIDTicket = 36,
eSteamErrorClientLoginRateTooHigh = 37,
eSteamErrorClientWasNeverValidated = 38,
eSteamErrorInternalSendBufferTooSmall = 39,
eSteamErrorInternalReceiveBufferTooSmall = 40,
eSteamErrorUserTicketExpired = 41,
eSteamErrorCDKeyAlreadyInUseOnAnotherClient = 42,
eSteamErrorNotLoggedIn = 101, eSteamErrorAlreadyExists = 102,
eSteamErrorAlreadySubscribed = 103, eSteamErrorNotSubscribed = 104,
eSteamErrorAccessDenied = 105, eSteamErrorFailedToCreateCacheFile = 106,
eSteamErrorCallStalledSoAborted = 107, eSteamErrorEngineNotRunning = 108,
eSteamErrorEngineConnectionLost = 109, eSteamErrorLoginFailed = 110,
eSteamErrorAccountPending = 111, eSteamErrorCacheWasMissingRetry = 112,
eSteamErrorLocalTimeIncorrect = 113, eSteamErrorNetwork = 200);
pSteamError = ^TSteamError;
TSteamError = record
eSteamError: eSteamError;
eDetailedErrorType: eDetailedPlatformErrorType;
nDetailedErrorCode: integer;
ErrDescription: pChar;
szDesc: array [0 .. (STEAM_MAX_PATH - 1)] of char;
end;
function IsSteamLogin: ShortInt;
implementation
function IsSteamLogin: ShortInt;
var
pbIsLoggedIn: integer;
pError: TSteamError;
SteamDll: Hmodule;
SteamIsLoggedIn: function(pbIsLoggedIn: pInteger;
pError: pSteamError): integer;
cdecl;
begin
Result := -1;
pbIsLoggedIn := 0;
SteamDll := LoadLibrary('Steam.dll');
if SteamDll <> 0 then
begin
try
@SteamIsLoggedIn := GetProcAddress(SteamDll, 'SteamIsLoggedIn');
if @SteamIsLoggedIn <> nil then
begin
Result := SteamIsLoggedIn(@pbIsLoggedIn, @pError);
end;
finally
FreeLibrary(SteamDll);
end;
end;
end;