| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Мониторинг сессий сервера |
| Автор: alcogol 11.3.2008, 14:01 |
| Добрый день люди добрые. Я новичок, хочу задать вам вопрос. Только сразу не ругайтесь, я давно не занимался Делфи, многое забыл, да и когда помнил тоже не ахти какие знания, всё сам, пог книжке без частички помощи. Короче ближе к телу: требуется найти либо компоненту, либо ещё как отмониторить сессии на большом терминальном сервере, где висит штук 50 пользователей. найти надо по имени пользователя. к примеру evtulenev имя пользователя. надо найти есть ли такая сессия на сервере и если есть, то хотелось иметь возможность её оттуда сбросить. Собственно найти и при желании сбросить сессию с удалённого сервера. Либо на нём расположить серверную часть. |
| Автор: MetalFan 11.3.2008, 14:10 |
о, я знаю такую компоненту - называется Hands&Head Components Suite p.s.простите - не удержался. |
| Автор: alcogol 11.3.2008, 14:42 | ||
Понимаешь,я ещё раз говорю что я новичок. Неужели так тяжело без приколов объяснить? Если бы я знал то не обращался к вам,а так уж извините, нужда. Я не первый день ищу информацию, но всё не то. |
| Автор: dumb 12.3.2008, 01:49 |
| http://msdn2.microsoft.com/en-us/library/aa383464(vs.85).aspx: WTSOpenServer, WTSEnumerateSessions, WTSQuerySessionInformation(..., WTSUserName,...), WTSLogoffSession... примеры кода искать по этим словам. |
| Автор: alcogol 12.3.2008, 02:00 |
| пасип, начал поиски инфы |
| Автор: alcogol 13.3.2008, 12:13 |
| procedure EnuSessions(const List: TStrings); var pInfo, p: PWtsSessionInfo; Len, BufSize: Cardinal; pBuf: PChar; n: integer; begin if List = nil then begin SetLastError(ERROR_INVALID_PARAMETER); Exit; end; if not WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE , 0, 1, pInfo, Len) then Exit; try p:=pInfo; for n:=0 to Pred(Len) do begin if WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, p.SessionId, WTSUserName, Pointer(pBuf), BufSize) then try List.Values[IntToStr(p.SessionId)]:=pBuf; finally WTSFreeMemory(pBuf); end; Inc(p); end; finally WTSFreeMemory(pInfo); end; end; Я ещё раз с вопросом. Код приведённый выше узнаёт пользователей на том компе, где собственно запущена программа. Но когда я вместо WTS_CURRENT_SERVER_HANDLE пытаюсь поставить WTSopenServer('terminal server1').... Показывает только первую сессию. ЧТо не так? Люди,е сли можно покажите примером,я просто до этого API вообще не касался, для меня это сложновато сейчас, а код этот нужен |
| Автор: alcogol 13.3.2008, 15:31 |
| всё вопрос снят, это проблема в серваке была. всё получилось |