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

RusFAQ.ru: программирование на языке Assembler


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

RusFAQ.ru: программирование на языке Assembler

Выпуск № 535
от 03.05.2003, 22:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3122
Отправлено ответов: 9148
Активность: 293.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


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

masquer
Статус: Профессиональный
Общий рейтинг: 140.09
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.4
URL: Программирование
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 134.37
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
 
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 111.79
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 123.11
URL: моя рассылка по Protected Mode
[Подробней >>]
Hangatyr
Статус: Доверительный
Общий рейтинг: 128.39
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 115.41
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.84
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 112.36
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Илья
Статус: Опытный
Общий рейтинг: 103.95
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 109.78
[Подробней >>]
Ramzes
Статус: Опытный
Общий рейтинг: 130.57
URL: Microsoft homepage
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.35
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 108.69
URL: мощный файловый архив
[Подробней >>]


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

Вопрос № 3076. Здравствуйте! Как можно включить в свою программу поддержку картинок форматов *.gif и *.jpg? Больш... (ответов: 1)
Вопрос № 3077. Здравствуйте! Помогите, пожалуйста! У меня никак не получается работать с отдельными строками в те... (ответов: 1)
Вопрос № 3078. Здравствуйте, Maverick (извините отчества вашего не знаю)! Я в догонку к 3071-му вопросу. Так вот, и... (ответов: 1)
Вопрос № 3079. Добруй день уважаемые эксперты! До меня тут новость дошла, что тут Зубкова(правильно хоть написал - ... (ответов: 1)
Вопрос № 3080. Уважаемые эксперты! Может кто-нибудь подскажет код перехода в ring 0. То, что нашел на WASM.RU(вирус... (ответов: 5)
Вопрос № 3081. Уважаемые Эксперты! Объясните такую вещь. Как сообщения попадают в оконную процедуру? Каков их путь?... (ответов: 3)
Вопрос № 3082. Здравствуйте! Помогите пожалуйста с такой проблемой: написал я программу, она вроде работает, но оче... (ответов: 2)
Вопрос № 3083. Привет эксперты! Какие мнения о книгах: 1.Программирование для Windows 95. Автор Ч. Петзолд 2.Азбука... (ответов: 1)
Вопрос № 3084. Доброго времени суток! Возник такой вопрос, как под DOS определить конфигурацию системы т.е. тип и ч... (ответов: 4)
Вопрос № 3085. Приветствую вас, эксперты! У меня возникли сложности с программированием Win32 на FASM. Где можно до... (ответов: 2)
Вопрос № 3086. Привет, Maverick! Спасибо, что отозвался на мой вопрос(№3053). Я пробовал смотреть на AFD, но он п... (ответов: 1)
Вопрос № 3087. Здравствуйте Зксперты! Во первых большое спасибо Bob Johnson, Masquer, Vitya и Илье за присланные ва... (ответов: 5)

Вопросов: 12, ответов: 27


 Вопрос № 3076

Здравствуйте!
Как можно включить в свою программу поддержку картинок форматов *.gif и *.jpg?
Большое спасибо!
С уважением, Drahus!



Вопрос отправлен: 28.04.2003, 14:41
Отправитель: Drahus (Drahus@narod.ru)

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

Отвечает masquer

Здравствуйте, Drahus!
Вариант 1. Самому написать.
Вариант 2. Позаимствовать у того, кто уже написал.
Choice is yours

Ответ отправлен: 29.04.2003, 12:57
Отправитель: masquer


 Вопрос № 3077

Здравствуйте!
Помогите, пожалуйста! У меня никак не получается работать с отдельными строками в текстовых файлах. Имеется ввиду, открыть файл, найти определённое значение и скопировать его, к примеру, на static control. Сколько я не пробовал, ничего не получается. Но не надо советовать использовать "GetProfilent.. что-то там".
И ещё вопрос: как программно создавать ярлыки?
Большое спасибо!
С уважением, Drahus!



Вопрос отправлен: 28.04.2003, 14:46
Отправитель: Drahus (Drahus@narod.ru)

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

Отвечает Bob Johnson

Доброе время суток, Drahus!
А что ты конкретно делаешь, и что у тебя не получается? Что ты имеешь ввиду под фразой "найти значение"?.
Чтобы удобней было работать с файлом, открой его как memory mapping (CreateFileMapping и MapViewOfFile). Дальше анализируй его посимвольно в поисках того, что тебе нужно. У меня есть пример, как я сам разбираю свой ini файл, созданный в моем формате - скачай исходный код HTTP сервера с моей страницы и посмотри там файл "ini.cpp".
Создать ярлык - см. в приложении (это из MSDN).


Приложение:

Ответ отправлен: 29.04.2003, 01:18
Отправитель: Bob Johnson


 Вопрос № 3078

Здравствуйте, Maverick (извините отчества вашего не знаю)!
Я в догонку к 3071-му вопросу.
Так вот, извините, но я кажется писал название вируса, а в прочем там моголо быть неразборчиво... это ладно.
Итак, название вируса, по словам Касперского, - Trojan.JS.Seeker.
Напишите, пожалуйста, на мылу, что делать?
Воооот.
И еще, просьба ко всем экспертам: нельзя ли хотябы в скобочках указывать отчество свое, а то вроде и не знакомы... неудобно как то... хотя ребята вы все хорошие... да... Удачи вам, ура!!!


Приложение:


Вопрос отправлен: 28.04.2003, 22:28
Отправитель: Бултых (arkatov@newmsk.tula.net)

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

Отвечает Maverick

Приветствую Вас, Бултых!
У меня тоже :) Ну если комплекс такой, по отчеству называть, то можно Maverick'ович
Не, название ты его в прошлый раз не писал, видать нехило погулял? :) Вот описание твоего виря по Касперскому, думаю ясно что делать?(прил)


Приложение:

Ответ отправлен: 29.04.2003, 04:34
Отправитель: Maverick


 Вопрос № 3079

Добруй день уважаемые эксперты! До меня тут новость дошла, что тут Зубкова(правильно хоть написал - то?) без талончиков выдают :). А можно и мне попросить. Заранее благодарю и щасливо!



Вопрос отправлен: 28.04.2003, 22:41
Отправитель: Rover

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

Отвечает Bob Johnson

Здравствуйте, Rover!
Что-то до тебя новость плохо дошла :) Зубкова тут действительно выдают, но в виде ссылки (если б новость хорошо дошла, то тогда вместе со ссылкой). Можно скачать на моей странице, там сходи на страницу человека, который ее оформил (Andrew Vext) и посмотри, может у него есть более новая (полная) версия, а то тут слухи пошли... В общем вот ссылка: bobjohnson.nm.ru


Ответ отправлен: 29.04.2003, 16:31
Отправитель: Bob Johnson


 Вопрос № 3080

Уважаемые эксперты!
Может кто-нибудь подскажет код перехода в ring 0. То, что нашел на WASM.RU(вирусология) не рулит- в синий экран 98SE- выкидывает при попытке записи в таблицу idt. В исходнике CIHа аналогичный подход, но он, повторюсь, почему-то не рулит...


Приложение:


Вопрос отправлен: 29.04.2003, 01:45
Отправитель: Эндикот

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

Отвечает Bob Johnson

Приветствую Вас, Эндикот!
Он рулит и еще как. Под 98 это вполне реально. Вот тебе кусок кода из моей проги, которая основана на CIH и работает ок на 95, 98, 98 SE & Me:

cli
sidt pword ptr [m1]
mov ebx,[m2]
add ebx,3*08h+04h
mov ebp,[ebx]
mov bp,[ebx-04h]
mov [OldExc],ebp
mov esi,offset Ring0Prog
mov [ebx-04h],si
shr esi,16
mov [ebx+02h],si
sti
...
m1 dw ?
m2 dd ?



Ответ отправлен: 30.04.2003, 00:23
Отправитель: Bob Johnson


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

Добрый день, Эндикот!
А ты как думаешь почему :)). Это привелигированная команда которая может быть выполнена в ring 0. Это раз. А второе чтобы произвести это надо отрубить все прерывания, желательно еще и немаскируемые :). А то что ты нашел какой-то исходник, я предположу, что его надо запускать под досом.

Ответ отправлен: 29.04.2003, 04:07
Отправитель: DiGiT[old]


Отвечает Maverick

Здравствуйте, Эндикот!
Ну типа, а как ты используешь этот код?
В том же разделе "вирусология" есть туториал по написанию вирей под win32, там написано КАК использывать...


Ответ отправлен: 29.04.2003, 05:25
Отправитель: Maverick


Отвечает Broken Sword

Доброе время суток, Эндикот!
потому что это все канает только в 95 винде

Ответ отправлен: 29.04.2003, 06:58
Отправитель: Broken Sword


Отвечает Hangatyr

Доброе время суток, Эндикот!
Не знаю под чем ты там его тестишь, но могу со всей ответственностью сказать, что данный метод работает под Win9x (и CIH тоже работает). Под Win9x можно спокойно писать, как в IDT, так и в GDT/LDT. Попробуй вариант со шлюзом, если не прокатит, то не знаю...
ЗЫ Код в приложении был работоспособен на момент отправки.

Приложение:

Ответ отправлен: 29.04.2003, 14:44
Отправитель: Hangatyr


 Вопрос № 3081

Уважаемые Эксперты!
Объясните такую вещь.
Как сообщения попадают в оконную процедуру?
Каков их путь?
Пусть есть приложение с одним, главным, потоком.
Сначала мы регистрим класс окна, создаём окно, а потом
пускаем цикл обработки сообщений GetMessage - TranslateMessage - DispatchMessage.
Раньше я думал, что все сообщения проходят через этот цикл,
но, очевидно, это не так.
CreateWindow посылает окну, в частности, WM_CREATE, минуя цикл обработки
сообщений потока! Верно?
А если цикл уже запущен, и мы создаём новые окна - WM_CREATE для
них тоже проходит мимо цикла обработки собщений?
Резюмируя все мои сомнения, вопрос выглядит таким образом:
Каков Путь Сообщений до момента их попадания в оконную процедуру?
Заранее спасибо.



Вопрос отправлен: 29.04.2003, 02:18
Отправитель: Странные Игры

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

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

Доброе время суток, Странные Игры!
В винде есть очередь сообщений (системная). Функция GetMessage берет для конкретного хэндла, вернее извлекает оттуда имеющееся сообщение. А DispatchMessage передает его в оконную процедуру. Все предельно просто.

Ответ отправлен: 29.04.2003, 04:05
Отправитель: DiGiT[old]


Отвечает masquer

Приветствую Вас, Странные Игры!
Не верно. Добавь отработку сообщения WM_CREATE и оно будет отработано до того, как окно появится. Там такой путь - при регистрации окна регистрируется глобальный атом, с ним ассоциируется твоя обработка сообщений (правда как именно - х.з., все хочу узнать, чтобы вообще без winmain работать).

Ответ отправлен: 29.04.2003, 13:05
Отправитель: masquer


Отвечает Bob Johnson

Здравствуйте, Странные Игры!
Сообщение может быть поставлено в очередь сообщений, которая имеется у каждого потока. Когда этот поток вызовет DispatchMessage, то эта функция найдет по классу окна, которому адресовано сообщение, его оконную процедуру и передаст ей управление, после чего DispatchMessage вернется. Таким образом, обработка оконной процедуры произойдет в контексте этого потока.
Если же этот поток где либо вне DispatchMessage вызовет функцию SendMessage и попытается послать сообщение окну, которое сам же создал, то управление оконной процедуре передаст функция SendMessage сама, без всяких там DispatchMessage. Если же он попытается отправить сообщение окну, которое создал другой поток, то тогда сообщение будет поставлено в очередь другого потока а текущий поток будет блокирован до тех пор, пока сообщение не будет обработано (чтобы получить код возврата).


Ответ отправлен: 01.05.2003, 00:24
Отправитель: Bob Johnson


 Вопрос № 3082

Здравствуйте!
Помогите пожалуйста с такой проблемой: написал я программу, она вроде работает, но очень много глюков. Программа занимается тем что выводит бегущую строку из нажатых клавишь в 12 строке. Так вот, программа запускается у меня в win 98 в ФАРе, а в чистом ДОСе выводит один символ и зависает. Пробовал на других машинах, везде работает по разному. И выгрузка по off глючит. Текст программы в приложении, посмотрите пожалуйста что там криво написано, я уже замучился. Спасибо за ответы.


Приложение:


Вопрос отправлен: 29.04.2003, 10:05
Отправитель: Александр

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

Отвечает ASMодей

Добрый день, Александр!
Ошибка в твоей процедуре прерывания INT 09h.
Если ты вызвал старое прерывание, то после этого можешь уже не
считывать скан-код из порта 60 - его там уже не будет, вместо
этого код символа будет уже в буфере клавиатуры, откуда его и можно
будет забрать с помощью прерывания INT 16h.


Ответ отправлен: 30.04.2003, 09:20
Отправитель: ASMодей


Отвечает Ayl

Доброе время суток, Александр!
Нет, ну так не пойдет.
Получив аппаратное прерывание, ты не можешь из него вызывать другие прерывания, например, 16h. А что, если прерванная программа тоже ждет нажатия на клавишу? Повторный вызов прерывания BIOS или DOS - результат непредсказуем.
Тоже про прерывание от таймера и вызов 10-го прерывания.
Ну и про выгрузку. А ты не хочешь сначала проверить возможность выгрузки? Может, кто-то уже перехватил "твое" прерывание? Тогда выгружаться нельзя, можно только блокировать работу резидента.

Ответ отправлен: 29.04.2003, 13:21
Отправитель: Ayl


 Вопрос № 3083

Привет эксперты!
Какие мнения о книгах:
1.Программирование для Windows 95. Автор Ч. Петзолд
2.Азбука программирования в Win32 API. Автор П. Румянцев
3.Проектирование интерфейса пользователя средствами Win32 API. Автор Р. Ганеев
См. тут: http://www.bcbdev.ru/winapi.htm
Спасибо.



Вопрос отправлен: 29.04.2003, 12:10
Отправитель: [-=TT=-] (KunaevNA@PosolskyDom.ru)

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

Отвечает baldr

Добрый день, [-=TT=-]!
Первая - полный рул, особливо если в оригинале...
Вторую не видел. Третью тоже.

Ответ отправлен: 29.04.2003, 16:23
Отправитель: baldr


 Вопрос № 3084

Доброго времени суток!
Возник такой вопрос, как под DOS определить конфигурацию системы т.е. тип и частота процессора, обьем памяти, тип винцестера и т.д. и т.п.
Можно ссылки.
Удачи!



Вопрос отправлен: 29.04.2003, 12:30
Отправитель: Blast (blast_tm@rbcmail.ru)

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

Отвечает Илья

Здравствуйте, Blast!
Если хош, могу скинуть интеловскую мануалку по оределению процессора(модель, семейство, степпинг, поддерживаемые инструкции...). Мне было очень интересно.
З.Ы. Необходимо знание английского

Ответ отправлен: 30.04.2003, 21:11
Отправитель: Илья


Отвечает ASMодей

Добрый день, Blast!
Тип процессора начиная с Pentium можно определить с помощью команды
CPUID. Ранние процессоры можно различить по регистру флагов - у разных
процессоров определенные флаги имеют разное значение.
Объем памяти можно определить с помощью BIOS (INT 15h, AX=E820h,E801h,8800h)
или прямым тестированием.
Тип винчестера - через порты ввода-вывода.
и т.д. и т.п. :)


Ответ отправлен: 30.04.2003, 09:19
Отправитель: ASMодей


Отвечает baldr

Добрый день, Blast!
Тебе программно или просто определить? Если ты просто хочешь узнать, то скачай прогу Astra, например. А если программно, то смотри команды cpuid, например. А с винчестером - это можно через порты или BIOS. Видеокарта - через функции SVGA.

Ответ отправлен: 29.04.2003, 16:30
Отправитель: baldr


Отвечает keleb-glin

Приветствую Вас, Blast!
Скорее всего, это сохраняется в области данных БИОСа. Поэтому советую читать технические руководства производителей железа (Intel, например или поискать мануалы Ральфа Брауна)

Ответ отправлен: 29.04.2003, 19:03
Отправитель: keleb-glin


 Вопрос № 3085

Приветствую вас, эксперты!
У меня возникли сложности с программированием Win32 на FASM. Где можно достать русские доки по нему и примеры с комментариями?



Вопрос отправлен: 29.04.2003, 16:44
Отправитель: elm thasa

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

Отвечает ASMодей

Доброе время суток, elm thasa!
Вообще-то все доки и примеры идут вместе с ним, так что если нужно
могу скинуть, или посмотри на asmfanat.narod.ru


Ответ отправлен: 30.04.2003, 09:18
Отправитель: ASMодей


Отвечает Maverick

Доброе время суток, elm thasa!
Давай мыл.


Ответ отправлен: 01.05.2003, 12:40
Отправитель: Maverick


 Вопрос № 3086

Привет, Maverick! Спасибо, что отозвался на мой вопрос(№3053).
Я пробовал смотреть на AFD, но он показывает то же самое. Я бы
выслал тебе исходник, но у меня нет твоего e-mail'а. Может напишешь мне его, а то RusFag не пропускает мое приложение, типа оно слишком большое.



Вопрос отправлен: 29.04.2003, 20:38
Отправитель: Ray

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

Отвечает Maverick

Приветствую Вас, Ray!
Maverick@nightmail.ru


Ответ отправлен: 01.05.2003, 12:40
Отправитель: Maverick


 Вопрос № 3087

Здравствуйте Зксперты!
Во первых большое спасибо Bob Johnson, Masquer, Vitya и Илье за присланные вами ответы на вопрос №3043.
У меня такая проблема.
Мне нужно все окна минимизировать.
Я их перебираю EnumWindows и ссылку на окно передаю своей процедуре, которая должна посылать сообщение о минимизации окна. Что-то вроде того SendMessage(h,WM_?вот тут я не знаю какое должно быть сообщение...,0,0)
Подскажите какое сообщение минимизирует все окна?
За ранее благодарна...



Вопрос отправлен: 29.04.2003, 22:24
Отправитель: diana

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

Отвечает ASMодей

Доброе время суток, diana!
Если ты знаешь HANDLE окна, то можешь испоьзовать API функцию
ShowWindow(h, SW_MINIMIZE)


Ответ отправлен: 30.04.2003, 09:16
Отправитель: ASMодей


Отвечает Ramzes

Доброе время суток, diana!
Это делается не через SendMessage, а SetWindowLong, т.к WS_MINIMIZE это стиль окна
style="GetWindowLong(h," GWL_STYLE)
or style, WS_MINIMIZE
SetWindowLong(h, GWL_STYLE, style)

Ответ отправлен: 01.05.2003, 13:19
Отправитель: Ramzes


Отвечает Gibbel

Доброе время суток, diana!
просто вызывай ShowWindow() с параметром SW_MINIMIZE

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


Отвечает Eugene

Здравствуйте, diana!
Может быть поможет функция SendMessage при сообщении WM_SHOWWINDOW.

Приложение:

Ответ отправлен: 30.04.2003, 09:20
Отправитель: Eugene


Отвечает Bob Johnson

Здравствуйте, diana!
А вот и не угадала... Чтобы минимизировать окно, вызывается функция ShowWindow (hwnd, SW_MINIMIZE)...
Но могу тебе порекомендовать вот какой способ (вижу, что пока никто из экспертов в MSDN не лазил :):

keybd_event (VK_LWIN, 0, 0, 0);
keybd_event ('M', 0, 0, 0);
keybd_event ('M', 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_LWIN, 0, KEYEVENTF_KEYUP, 0);

Он, конечно, для С++, но переделать на асм проблем не составит... Если не поймешь, почему он работает, то пиши...


Ответ отправлен: 01.05.2003, 00:26
Отправитель: Bob Johnson



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (13)
Pascal (25)
Basic / VBA (7)
Java / JavaScript (8)
PHP (4)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (24)
"Железо" (25)
Поиск информации (12)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (10)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (5)
КоАП (4)

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




 Администрирование *** Чат *** Форумы *** Регистрация эксперта *** Задать вопрос *** Поиск в базе ***
Проект экспертов RusFAQ.ru *** Фотоальбом *** Virus.RusFAQ.ru


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

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


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

В избранное