Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 194
от 10.02.2003, 09:40

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 574
Отправлено ответов: 1304
Активность: 227.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

xiron
Статус: Начальный
Общий рейтинг: 117.39
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 113.77
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Ramzes
Статус: Доверительный
Общий рейтинг: 133.94
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.18
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 109.82
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 566. Здорова ALL ! У меня есть задача над которой я страдаю уже неделю. Состоит она в следующем: Есть нек... (ответов: 2)
Вопрос № 567. Здравствуйте эксперты. Как добавить в таблицу (Microsoft FlexGrid Control, version 6.0) элемент? Там... (ответов: 3)

Вопросов: 2, ответов: 5


 Вопрос № 566

Здорова ALL !
У меня есть задача над которой я страдаю уже неделю.
Состоит она в следующем:
Есть некий EXE-file. Нужно написать прогу под NT, которая бы висела в памяти и
скажем каждые 10 сек. сканировала запущенные процессы находила определенный участок исполняемого
кода принадлежащего нашему EXE-file и если этот участок обнаруживала (т.е. EXE-file запущен) то терминейтила бы его.
Я использовал функцию ReadProcessMemory. Находил стартовый адрес потока Process View-ом и читал несколько байт.
Затем смотрел exe-шник и не находил там этой строки.
Посоветуйте как решить задачку?



Вопрос отправлен: 06.02.2003, 15:02
Отправитель: [sp]_root (sproot@mail.khb.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает xiron

Доброе время суток, [sp]_root!
Я чтото не понял, так есть конкретный EXE файл
и ты должен время от времени сканировать работает он или нет
или есть у тебя шаблон кода, и ты должен сканировать память и определить загружен ли он.
Ну при случае 1 , все намного просто.
BOOL EnumProcesses(
DWORD *lpidProcess, // array of process identifiers
DWORD cb, // size of array
DWORD *cbNeeded // number of bytes returned
);
в lpidProcess получиш хендлы всех процессов.
DWORD GetModuleFileNameEx(
HANDLE hProcess, // handle to process
HMODULE hModule, // handle to module
LPTSTR lpFilename, // path buffer
DWORD nSize // maximum characters to retrieve
);
в lpFilename получиш имя файла, и сравниш с твоим ехешником.
если совпадет то киллиш
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
А при случае 2 все намного усложняется.
Удачи!

Ответ отправлен: 06.02.2003, 17:00
Отправитель: xiron


Отвечает baldr

Доброе время суток, [sp]_root!
То есть, ты хочешь, чтобы прога каждые 10 сек сканировала все твои 128 или 256 Mb памяти,
искала там кусок кода, а потом убивала ни в чем неповинный текстовый редактор, в котором
ты просматривал в hex-кодах тот exe-шник? :)))
В общем, это, конечно, шутка, но в каждой шутке только доля шутки, так что вот мое мнение:
такую прогу написать, конечно, реально, но работа ее - это абсурд. Во-первых, поиск в таком
объеме памяти - это довольно долгое занятие, когда какой-нибудь ArtMoney ищет нужный байт - это
тоже не очень быстро, а тут - целый блок! В общем, тормозить все это будет жутко!
Многие программы жутко похожи, если их рассмотреть под дебаггером... В всяком случае, начало
кода у всех, почти, виндовых прог стандартно.
В общем, чем тебе помочь я не знаю, но может, есть более легкие пути?


Ответ отправлен: 07.02.2003, 01:51
Отправитель: baldr


 Вопрос № 567

Здравствуйте эксперты.
Как добавить в таблицу (Microsoft FlexGrid Control, version 6.0) элемент?
Там, (в классе CMSFlexGrid) есть метод AddItem(LPTCSTR item, const VARIANT &index),
дак вот, что это за VARIANT? Если у кого есть ссылки(исходники) где находится описание этого
то скиньте пожалуйста на мыло (brothers@atnet.ru)
Заранее благодарен.



Вопрос отправлен: 06.02.2003, 16:01
Отправитель: KydesNik (brothers@atnet.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Приветствую Вас, KydesNik!
Ты можешъ передатъ просто int
typedef struct tagVARIANT {
VARTYPE vt;
unsigned short wReserved1;
unsigned short wReserved2;
unsigned short wReserved3;
union {
Byte bVal; // VT_UI1.
Short iVal; // VT_I2.
long lVal; // VT_I4.
float fltVal; // VT_R4.
double dblVal; // VT_R8.
VARIANT_BOOL boolVal; // VT_BOOL.
SCODE scode; // VT_ERROR.
CY cyVal; // VT_CY.
DATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal; // VT_UNKNOWN.
IDispatch FAR* pdispVal; // VT_DISPATCH.
SAFEARRAY FAR* parray; // VT_ARRAY|*.
Byte FAR* pbVal; // VT_BYREF|VT_UI1.
short FAR* piVal; // VT_BYREF|VT_I2.
long FAR* plVal; // VT_BYREF|VT_I4.
float FAR* pfltVal; // VT_BYREF|VT_R4.
double FAR* pdblVal; // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
CY FAR* pcyVal; // VT_BYREF|VT_CY.
DATE FAR* pdate; // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal; //VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
void FAR* byref; // Generic ByRef.
char cVal; // VT_I1.
unsigned short uiVal; // VT_UI2.
unsigned long ulVal; // VT_UI4.
int intVal; // VT_INT.
unsigned int uintVal; // VT_UINT.
char FAR * pcVal; // VT_BYREF|VT_I1.
unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
int FAR * pintVal; // VT_BYREF|VT_INT.
unsigned int FAR *puintVal; //VT_BYREF|VT_UINT.
};
};


Ответ отправлен: 07.02.2003, 10:45
Отправитель: Ramzes


Отвечает Gibbel

Доброе время суток, KydesNik!
VARIANT - это структура, которая, образно говоря, может принимать данные любого типа. Подробнее - MSDN.

Ответ отправлен: 07.02.2003, 10:01
Отправитель: Gibbel


Отвечает DiGiT[old]

Приветствую Вас, KydesNik!
VARIANT это их vb насколько я помню типа void*, то есть указатель неопределенного типа(хотя в VB их нет), там должен быть метод типа SetType, в нем указваешь свой тип... наверное так. А вообще все эти компоненты для VB и чтобы их юзать надо писать любые числовые значения в виде строк :))(изврат)

Ответ отправлен: 07.02.2003, 03:29
Отправитель: DiGiT[old]



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (36)
C / C++ (28)
Perl (6)
Delphi (18)
Pascal (24)
Basic / VBA (13)
Java / JavaScript (11)
PHP (9)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (26)
"Железо" (32)
Поиск информации (18)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (13)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (5)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное