Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
Внизузнать время начала сессии пользователя.. Найти похожие ветки
← →
istok (2010-09-20 11:00) [0]как узнать время логона юзера? (gettickcount возвращает время старта винды а не сессии...)
← →
12 © (2010-09-20 11:13) [1]LsaGetLogonSessionData
← →
istok (2010-09-20 15:19) [2]спасибо,
никак не могу получить LogonId: PLUID, не хочется делать полную энумирацию, если у меня уже есть sessionid - его в LogonId никак не конвертнуть?
← →
12 © (2010-09-20 16:01) [3]
> если у меня уже есть sessionid
откуда и как взялось?
> его в LogonId никак не конвертнуть?
формально совпадает если - прочему бы и нет :)
← →
12 © (2010-09-20 16:16) [4]не могу найти пример уже, наверное погиб смертью храбрых при смене компа
JEDI можно раскопать/погуглить, там как -то проще все это описано/импортировано было, что-то нужно было как-то сделать и не составило труда, помнится
← →
istok (2010-09-20 17:10) [5]с LogonId разобрался, заюзал всё же enum...
но вот незадача - как sessionData.LogonTime прочитать... т.е. я понимаю что .QuadPart это int64.. но как это дело в tdatetime превратить правильно?
← →
sniknik © (2010-09-20 17:47) [6]> но как это дело в tdatetime превратить правильно?
что значит "превратить правильно"? один 64бита, другой 64 бита... простое привидение типа, туда обратно значение не испортит ("превратит" и "разпревратит"), но разве ж это правильно?
посмотри в док, что за значение эта переменная представляет, тогда уж и будешь думать как преобразовать.
← →
12 © (2010-09-20 17:48) [7]да, по-хитрому, поищите в конфе борланда, кто-то писал
← →
istok (2010-09-20 18:22) [8]сделал.. через filetime:
ft: TFileTime;
st: TSystemTime;
dt: TDateTime;
...
ft.dwLowDateTime := sessionData.LogonTime.LowPart;
ft.dwHighDateTime := sessionData.LogonTime.HighPart;
FileTimeToSystemTime(ft, st);
dt := EncodeDateTime(st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
только время показывает на 4 часа раньше чем надо) а у меня gmt+3...
← →
sniknik © (2010-09-20 19:44) [9]> только время показывает на 4 часа раньше чем надо) а у меня gmt+3...
ты, что время с момента логина юзера по Гринвичу считаешь??? при чем тут это?
типа пришел на работу и залогинился 10 мин назад, но по Гринвичу... проработал уже 3 ч. 10 мин. .... клево.
← →
istok (2010-09-20 19:51) [10]а кто сказал что я по гринвичу считаю.. я просто говорю что полученное время отстает от реального на 4 часа. и к сведению сообщаю что моя зона - gmt+3 (мало ли, вдруг скажете что у меня наверно gmt+4 и надо 4 прибавлять..)
← →
Anatoly Podgoretsky © (2010-09-20 19:54) [11]> istok (20.09.2010 19:51:10) [10]
Для информации
В мире кроме часового пояса еще есть и летнее время.
← →
istok (2010-09-20 19:56) [12]о, а каким методом стабильно конвертить это время в своё локальное?
← →
istok (2010-09-20 21:29) [13]вопрос решен, всем спасибо):
function GMTToLocalTime(GMTTime: TDateTime): TDateTime;
var
GMTST: Windows.TSystemTime;
LocalST: Windows.TSystemTime;
begin
SysUtils.DateTimeToSystemTime(GMTTime, GMTST);
SysUtils.Win32Check(Windows.SystemTimeToTzSpecificLocalTime(nil, GMTST, LocalST));
Result := SysUtils.SystemTimeToDateTime(LocalST);
end;
← →
Anatoly Podgoretsky © (2010-09-21 09:30) [14]> istok (20.09.2010 19:56:12) [12]
Из справки!
UTC = local time + bias
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c