Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отловить подключение к компьютеру по сети [D5, NT4, Win2k]


Страницы:   1 2

sel ©   (2002-12-19 08:50:00) 

Здравствуйте, уважаемые мастера.
Сначала проблема: шеф не разрешает использование icq на работе, проверяет по radmin.
В связи с этим у меня такой вопрос:
Как можно отловить подключение к моему компу по радмину и если оно произошло, то найти и закрыть окно icq.
Если можно, напишите подробнее, так как тут, понимаю, всего несколько строк кода. Есть ли различия при использовании 2К и НТ?
Буду очень признателен за ответ, спасибо.


Dr.Dron   (2003-01-16 08:54:00) [1]

ShowWindow(FindWindow(nil,"Диспетчер задач Windows"),SW_HIDE);
Ето дело по таймеру....
И "Дспетчер задач Windows" в W2K отпадает...


[AsP]-UncoNNecteD   (2002-12-21 17:14:00) [2]

Не проще ли установит опцию в Р-Админе - Ask User Permission и просто отрубать асю и нажимать yes ?


msts   (2002-12-19 16:00:00) [3]

>Reindeer Moss Eater
Тогда только свою аську писать - для простых разговоров, без хистори, относительно просто, в инете есть апи с примерами ICQ2002 протокола.
Замаскировать под какой нибудь текстовый редактор - например ворд,
т.е. вызвать ворд как оле объект и в нем писать/читать сообщения - дешево и сердито :)


sel   (2002-12-19 15:20:00) [4]

ПОлучив хэндл окна от класса окна на своей машине, не удается получить нужный хэндл от такого же окна на другой, хотя ws32 показывает, что класс тот же.


sel   (2002-12-19 14:28:00) [5]

В том-то и дело, что не получается узнать в winsight32, а кроме того, вопрос про радмин остается открытым


sel   (2002-12-19 14:27:00) [6]

В том-то и дело, что не получается узнать в winsight32


Digitman   (2002-12-19 13:47:00) [7]

а что пробовать-то ? запусти какой-нибудь SPYXX.EXE (MS Visual Studio) или WS32.EXE (Borland Delphi) да посмотри класс и имя гл.окна процесса ICQ.EXE.
То аськино окно, что ты видишь на экране, вовсе не обязательно д.б. гл.окном приложения


sel   (2002-12-19 13:41:00) [8]

Ищу функцией FindWindow , а вот в качестве параметров перепробовал много разного, но не могу найти нужных.


Digitman   (2002-12-19 13:25:00) [9]


> sel (19.12.02 12:27)
> Закрыть нужно главное окно, ест-но.
> Как процесс в 2К скрыть? Не знаю.
> И что это даст, само приложение не будет видно на панели
> задач, например? Как его потом искать.


Ну так как же ты ищешь гл.окно ? Поясни.

Как процесс в 2К скрыть ? Как минимум - перехватить snapshot
-вызовы и NtQuerySystemInformation() со стороны всех существующих и вновь стартующих процессов. Сложно, но - можно и решаемо в принципе.

Как искать ? Ну ты перехватил сист.вызовы и подставил, например, вместо ICQ.EXE какую-нибудь хрень наподобие MSIE8.EXE. В TaskManager"е будешь видеть свой процесс под этим именем


C2H5OH   (2002-12-19 13:11:00) [10]

а можно в аську через веб-интерфейс лазить http://go.icq.com


sel   (2002-12-19 12:27:00) [11]

Закрыть нужно главное окно, ест-но.
Как процесс в 2К скрыть? Не знаю.
И что это даст, само приложение не будет видно на панели задач, например? Как его потом искать.


Digitman   (2002-12-19 12:06:00) [12]

>sel


> получить хэндл окна icq


У клиента ICQ не одно окно. Какое ищешь, по каким признакам ?


> мне нужно закрыть приложение, а не просто скрыть его


А чем тебе сокрытие процесса не нравится ? Какие сомнения ?


sel   (2002-12-19 12:00:00) [13]

На самом деле интересует принцип работы 2-х вещей:
1) получить хэндл окна icq (у меня не получилось), чтобы его закрыть
2) контролировать подключение к моему компу (конкретно использования программы радмин - когда remote administrator server говорит, что кто-то приконнектился).
2 digitman - мне нужно закрыть приложение, а не просто скрыть его. Хотя процессы смотреть вряд ли кто будет.


Anatoly Podgoretsky   (2002-12-19 11:49:00) [14]

Шеф просто терпеливый, но я думаю на явные попытки саботаже отреагирует должным образом


Digitman   (2002-12-19 11:40:00) [15]

>sel
Я так понимаю, что для шефа признак работы ICQ-клиента - это обнаружение с помощью RAdmin"а присутствия в системе на твоей машине среди прочих процессов процесса с именем ICQ.EXE ? Так ?


Reindeer Moss Eater   (2002-12-19 11:27:00) [16]

Фигня все это.

Sel хочет в рабочее время использовать ICQ.
Но его контролирует шеф с помошью RAdmina.
Sel подумал, что если сумеет определить момент подключения шефа к его машине и закрыть приложение, то наступит счастье, и задача будет решена (в рабочее время использовать ICQ)
Шеф подключился к машине sel"а, программа sel"а погасила icq.
Шеф ничего не увидел. Замечательно.
Но шеф не спешит отключаеться от машины sel"а, и sel не может пользоваться ICQ в рабочее время не рискуя быть пойманным.
Задача не решена.


msts   (2002-12-19 11:18:00) [17]

чтото в тему
_________________________________________________________________________________________
Q: [API] Как узнать кто висит на моей (или не моей) машине?
A: Эта вещица написана на С++, но может сгодиться
_________________________________________________________________________________________


#define STRICT
#include
#include
#include
#include

void UserEnum()
{
BOOL keepGoing = TRUE ;
DWORD entriesRead, totalEntries ;
USER_INFO_2 * pInfo = NULL ;
DWORD resumeHandle = 0 ; // must be 0 to start with
char nameBuf[ UNLEN + 1 ] ; // constants defined in LMCONS.H
char commentBuf[ MAXCOMMENTSZ + 1 ] ;
WCHAR serverName[ 100 ] ;
lstrcpyW( serverName, L"\\\\PDC" ) ; //L"" ) ;
while ( keepGoing )
{
NET_API_STATUS ret = NetUserEnum(
serverName, //NULL,
2,
0, //FILTER_NORMAL_ACCOUNT,
(LPBYTE *)&pInfo, // Important: ADDRESS of POINTER
sizeof( USER_INFO_2 ) * 100, // requested buffer size; it may not
actually allocate this much
&entriesRead,
&totalEntries,
&resumeHandle ) ;

keepGoing = ( ret == ERROR_MORE_DATA ) ;

if ( ret == 0 || ret == ERROR_MORE_DATA )
{
DWORD i ;
for ( i = 0 ; i < entriesRead ; i++ )
{
// Note that strings in the INFO structures
// will ALWAYS be Unicode, regardless of
// your settings! Even though they"re declared
// as LPTSTR, they"re always LPWSTR.
// I"m compiling for non-Unicode, so I
// convert them to ANSI strings...
// Check for NULL pointers in the INFO structure
LPWSTR pName = (LPWSTR)pInfo[ i ].usri2_name ;
LPWSTR pComm = (LPWSTR)pInfo[ i ].usri2_comment ;
if ( pName == NULL )
{
lstrcpy( nameBuf, "(no name!)" ) ;
}
else if ( lstrlenW( pName ) == 0 )
{
lstrcpy( nameBuf, "(empty name!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pName, -1,
nameBuf, UNLEN,
NULL, NULL ) ;
}
if ( pComm == NULL )
{
lstrcpy( commentBuf, "(no comment!)" ) ;
}
else if ( lstrlenW( pComm ) == 0 )
{
lstrcpy( commentBuf, "(empty comment!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pComm, -1,
commentBuf, MAXCOMMENTSZ,
NULL, NULL ) ;
}
cout


sel   (2002-12-19 10:24:00) [18]

понятно, внятного ответа не добиться, спасибо


Игорь Шевченко   (2002-12-19 09:45:00) [19]

А шеф потом по попе ремнем больно настучит.
Не надо страдать ерундой, плз.


sel   (2002-12-19 09:33:00) [20]

Тем более, это нужно не мне


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо