[Delphi] Определение полного захода в Steam

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#1 Сообщение 06.07.2010, 18:00

Для работы Team Fortress 2 Items Visibility Tool в Cracked Steam нужно определять логин в Steam. Но я не знаю, как его опредилить программно.
В принципе, можно определять по иконке Steam в трее или по SteamAPI, но как?

Это нужно для Steam Patching Utility (т.е. мне и [user]).

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#2 Сообщение 06.07.2010, 18:49

то есть проверить залогинен ли стим или нет ?

ну тогда используй steamislogin

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#3 Сообщение 06.07.2010, 19:18

fire64
А можно поподробнее о steamislogin?

[user]
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 3501
Зарегистрирован: 18.07.2008
Благодарил (а): 2 раза
Поблагодарили: 17 раз
Контактная информация:

#4 Сообщение 06.07.2010, 19:26

Добавлю ещё от себя вопрос.
Как определить программно, что steam запускает приложение с некоторым appid?
Если точнее, то нам надо из внешней программы определить залогинен ли steam и запущен ли TF2.
© [user]

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#5 Сообщение 06.07.2010, 21:05

я про экспортную функцию int SteamIsLoggedIn(int &loged,TSteamError &error)

[user]
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 3501
Зарегистрирован: 18.07.2008
Благодарил (а): 2 раза
Поблагодарили: 17 раз
Контактная информация:

#6 Сообщение 06.07.2010, 21:18

fire64
Подскажи, где можно найти руководство по steamapi "для начинающих"...
© [user]

Аватара пользователя
Snakeus
Полковник
Полковник
Сообщения: 1213
Зарегистрирован: 03.05.2006
Контактная информация:

#7 Сообщение 06.07.2010, 21:39

[user]
вот очень хорошая статья, правда на дотнетах http://cs.rin.ru/forum/viewtopic.php?f= ... 26&start=0

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#8 Сообщение 06.07.2010, 21:42

[user] писал(а):fire64
Подскажи, где можно найти руководство по steamapi "для начинающих"...
такого увы нет :)
я тебе отправил в личку ссылку на код класса CSteamFunc
там чистый winapi так что думаю проблем с портом на Delphi быть не должно

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#9 Сообщение 06.07.2010, 21:59

fire64
А мне послать :-D? [user] не в сети.

eldest
Разработчик
Разработчик
Сообщения: 302
Зарегистрирован: 17.03.2008
Откуда: такие как я?
Поблагодарили: 2 раза
Контактная информация:

#10 Сообщение 06.07.2010, 22:57

Код: Выделить всё

int (__cdecl * SteamIsLoggedIn_t)(int *pbIsLoggedIn, TSteamError *pError);

STEAM_API int STEAM_CALL SteamIsLoggedIn (int *pbIsLoggedIn, TSteamError *pError);

int MySteamIsLoggedIn(void) {
    int iReturn = 0;
    int pbIsLoggedIn = 0;
    TSteamError pError = new TSteamError;
    try {
        //HMODULE steamDLL = GetModuleHandle("steam.dll"); //LoadLibrary("steam.dll");
        //SteamIsLoggedIn_t(GetProcAddress(steamDLL, "SteamIsLoggedIn"))(&pbIsLoggedIn, &pError);
        SteamIsLoggedIn(&pbIsLoggedIn, &pError);
        iReturn = pbIsLoggedIn;
    } catch(int a) {
        //MessageBox(NULL, pError.szDesc, "MySteamIsLoggedIn Error", MB_OK | MB_ICONHAND | MB_ICONERROR);
        iReturn = -1;
    }
    return iReturn;
}

int IsLoggedIn = MySteamIsLoggedIn(); // 1 - logged in, 0 - not logged in, -1 - Error
такого увы нет :)
Документации писать не моё призвание, но сегодня постараюсь написать ексэмлы для использования функций steam.dll

кстате, естли кому надо последний OSW вчера качал OpenSteamWorks-Revision-235.zip

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#11 Сообщение 06.07.2010, 23:36

eldest
Спасибо. Но как вот это

Код: Выделить всё

int (__cdecl * SteamIsLoggedIn_t)(int *pbIsLoggedIn, TSteamError *pError);
STEAM_API int STEAM_CALL SteamIsLoggedIn (int *pbIsLoggedIn, TSteamError *pError);
перевести в Delphi?

А лучше всё.

Аватара пользователя
Dr_Quake
Майор
Майор
Сообщения: 654
Зарегистрирован: 10.03.2008
Поблагодарили: 6 раз
Контактная информация:

#12 Сообщение 06.07.2010, 23:52

Проще надо быть - костыль в данном случае запущенный exe + пункт 1.

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#13 Сообщение 06.07.2010, 23:57

Dr_Quake
Тогда уж-костылём будет Си-библиотека.

eldest
Разработчик
Разработчик
Сообщения: 302
Зарегистрирован: 17.03.2008
Откуда: такие как я?
Поблагодарили: 2 раза
Контактная информация:

#14 Сообщение 07.07.2010, 00:43

Darth Revan
Вот так наверное

Код: Выделить всё

type
    SteamIsLoggedIn_t = function(pbIsLoggedIn: Integer; pError: TSteamError): int; virtual; cdecl;

const
    SteamIsLoggedIn: SteamIsLoggedIn_t = nil;

var
    steamDLL: THandle;
 
steamDLL := LoadLibrary('steam.dll');

try
    @SteamIsLoggedIn := GetProcAddress(steamDLL, 'SteamIsLoggedIn');
    SteamIsLoggedIn(<pbIsLoggedIn>, <pError>);
finally
    FreeLibrary(steamDLL);
end;
[user] писал(а):Добавлю ещё от себя вопрос.
Как определить программно, что steam запускает приложение с некоторым appid?
Если точнее, то нам надо из внешней программы определить залогинен ли steam и запущен ли TF2.
По идее можно просто мониторить список процессов, если запущен Steam.exe ждать когда запустится TF2
А проверить запущен ли TF2 из под стима сравнив HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam\SteamPID
Или я не прав?

Аватара пользователя
Dr_Quake
Майор
Майор
Сообщения: 654
Зарегистрирован: 10.03.2008
Поблагодарили: 6 раз
Контактная информация:

#15 Сообщение 07.07.2010, 01:45

Вы вообще про что? Какая на фиг библиотека, можно тупо сделать импорт и не извращаться даже с динамической загрузкой.

Ответить