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

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


Служба Рассылок Subscribe.Ru

"Ассемблер? Это просто! Учимся программировать (FAQ)"

Выпуск № 230
от 29.03.2002, 02:05

Администратор: Калашников Олег
Сайт Администратора: Программирование на Ассемблере


Старейшины рассылки
(по состоянию на 29.03.2002, 02:05)

1. Broken Sword - ответов: 414.
2. Painbringer (нечто наподобие домашней страницы) - ответов: 378.
3. Sensey - ответов: 340.
4. DiGiT - ответов: 294.
5. Dron (Операционная система с нуля!) - ответов: 291.


Новости

[28.03] Эксперту vitya присвоен статус "Профессиональный".


 Вопрос № 403

Please! Обьясните, как можно в делфи получить строчку из эксплорера (когда наводишь на ссылку, в строке состояния отображается адрес), есть ли какая-то готовая функция, а если нет то как это можно обойти.
И ещё можно ли эту строчку, автоматически помещать в буфер обмена, например если там есть какое-то слово ключевое. Заранее благодарен /ALastorZ

Отправитель: ALastorZ
Вопрос отправлен: 24.03.2002, 03:33
Подгруппа: Оптимизация программ

_______________

Отвечает masquer
Здравствуйте, ALastorZ!
Можно попробовать установить хук на мышку, потом парсить то, что находится в активном контроле. Можно перехватить функцию эксплорера, которая отвечает за это, но ее еще определить нужно. Вообще все эти методики для начинающего достаточно сложны. У Рихтера описывается второй способ (перехват апи-функций).


Отправлено: 24.03.2002, 23:09
Отправитель: masquer (регистрация: 16/01/2002, ответов на счету: 64)
Украина, Николаев

_______________

Отвечает Артём Шегеда
Добрый день, ALastorZ!

Зайди на сайт http://filebye-mail.nsys.by/article.php?story=20011011212710560. Там есть ссылка на маленькую утилитку. Если ты серьёзно интересуешься этим вопросом, посмотри её. Это просто java-script, но вполне понятный.


Отправлено: 25.03.2002, 11:46
Отправитель: Артём Шегеда (регистрация: 28/12/2001, ответов на счету: 90)
URL: http://www.shegeda.chat.ru/ - Пристанище неодинокого программиста
x-USSR, Харьков




 Вопрос № 404

Не подскажите подробный алгоритм резидентирования прог и подвешивания их на прерывания (функциии)в Windows, аналогичный
как в Dos.

Отправитель: Speedy Gonsalez (kiselevo@mtu-net.ru)
Вопрос отправлен: 24.03.2002, 06:57
Подгруппа: Общие вопросы по программированию на Ассемблере под Win32

_______________

Отвечает LAO
Здравствуйте, Speedy Gonsalez!
Резиндентных программ для Windows не существует. Поскольку Windows мультизадачная система, т.е. в ней можно запустить сразу несколько приложений, то любое приложение, запущенно в Windows условно можно считать резидентной.
Прерывания в Windows тоже не перехватывают. Если Вам необходимо отслеживать и как-то реагировать на какие-то события в Windows, то следует либо написать собственный драйвер под Windows, используя DDK (Device Development Kit), либо отслеживая процессы Windows (см. книги типа "Windows для профессионалов"). Возможны другие решения задачи.


Отправлено: 24.03.2002, 07:16
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 70)
Россия, Москва

_______________

Отвечает Blackeye
Доброе время суток, Speedy Gonsalez!
Насчет отсавления программы резидентной как в ДОС int 27h (если не ошибаюсь), я не знаю. Но можно пойти другим путем просто остваить ее запущенной, предварительно скрыв форму а также отображения в панели задач, переключения на нее с помощью Alt-TAB и также из списка задач в Ctrl-alt-del. Мне кажеться что это самый рациональный способ, хотя я могу и ошибаться.


Отправлено: 24.03.2002, 12:22
Отправитель: Blackeye (регистрация: 15/02/2002, ответов на счету: 55)
URL: http://www.soft4master.h1.ru - Delphi, my programms...
Украина, Запорожье

_______________

Отвечает Mr. BuS
Приветствую Вас, Speedy Gonsalez!
Не существует такого алгоритма!!! Суть резиденции в том, что ты можешь запускать другие проги, не закрывая свою. Но ведь Windows и так позволяет это делать. Это называется мультизадачность. А вешать проги на прерывания вообще невозможно - прерывания могут обрабатываться ТОЛЬКО драйверами. Если хочешь обрабатывать прерывания - пиши драйвер какого-нибудь несуществующего (виртуального) устройства и пропиши его в реестре, чтобы он загружался при каждой загрузке Windows.


Отправлено: 24.03.2002, 23:25
Отправитель: Mr. BuS (регистрация: 19/03/2002, ответов на счету: 18)
Syros
РФ, Татарстан, Казань

_______________

Отвечает DiGiT
Здравствуйте, Speedy Gonsalez!
В винде резидентов нет. Есть трояны. Как это не прискорбно.
А там с хуками разбирайся. В частности win32.hlp. Там много полезного.


Отправлено: 25.03.2002, 04:28
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 294)
ICQ:133534725
Russia(),Student

_______________

Отвечает vitya
Доброе время суток, Speedy Gonsalez!

В windows, это хук.Для того, что бы это сделать
Вам придется сделать следующие вещи.
1. Написать функцию для обработки события. Как она выглядит зависит от message, который вы собираетсь обрабатывать. Точнее, формат одинаковый, разные значения у параметров. Смотрите в хелпах.
2. Закинуть эту функцию в DLL.
3. Написать клиент, который подгрузит dll с помощью LoadLibrary, найдет вашу функцию с помощью GetProcAddress()
4. Вызовер функцию HookWindowsEx(), и подсадит ваш обработчик.
5. В конце работы надо вызвать UnhookWindowsEx().
Вот вроде и все. Для примера, правда на C++, смотри на www.sources.ru, там есть хуки.


Отправлено: 25.03.2002, 13:23
Отправитель: vitya (регистрация: 03/01/2002, ответов на счету: 53)
HPLA
103935193
Armenia, Yerevan




 Вопрос № 405

Привет Всем!
вопрос такой: есть переменная, есть ее значение, есть сообщение, которое используется для вывода на печать. Как сделать, что бы после сообщения выводилось значение переменной? Кусок кода в приложении, подправте пожалуйста, что бы после слов "значение переменной равно" вываливалось содержимое переменной.Можно конечно прицелиться и метнуть в видеобуфер в нужное место, но мне кажется это гимор. Заранее благодарен

Приложение:


Отправитель: Sergey
Вопрос отправлен: 24.03.2002, 08:20
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Топор
Доброе время суток, Sergey!

Я так понимаю, что переменная уже найдена и переведена в символьную ASCII-форму. Тогда нужно точно знать, сколько знаков в числе. Если, например, два, то смотри пример.


Приложение:


Отправлено: 24.03.2002, 08:28
Отправитель: Топор (регистрация: 15/03/2002, ответов на счету: 42)
Радио "Эхо Москвы в Самаре"
Адрес: 443011, Самара, ул. Советской Армии, 217
Тел.: (8462)160302, 162918
URL: http://listen.to/btemple - Хорошая Русская Металлическая команда
Россия, Самара

_______________

Отвечает LAO
Доброе время суток, Sergey!
Даю код для вывода в значения переменной десятичной форме (см. приложение). Если интересует 16-ричная - посмотри старые рассылки, там где-то я уже давал пример. Алгоритм простой - делишь число на 10, скидываешь остаток (dl) в строку до тех пор пока делимое не равно нулю. Выводишь получившуюся строку на экран.


Приложение:


Отправлено: 25.03.2002, 12:39
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 70)
Россия, Москва

_______________

Отвечает Beeblebrox
Приветствую Вас, Sergey!
Нужно перевести число в ax в текстовый вид (шестнадцатиричный либо десятичный). Пару-тройку-пятерку выпусков назад я приводил пример, поищи внимательно.


Отправлено: 25.03.2002, 13:27
Отправитель: Beeblebrox (регистрация: 13/03/2002, ответов на счету: 34)
URL: http://beeblbrx.narod.ru - Beeblebrox / TMA HomePage
ICQ #75393045
Ukraine, Kharkov




 Вопрос № 318

Здравствуйте уважаемые Эксперты. Вопрос такой:
- как определить начальный кластер файла.
Принимаются любые варианты. Заранее спасибо.

Отправитель: Odin (vikingodin@yandex.ru)
Вопрос отправлен: 19.03.2002, 15:57
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Ayl
Добрый день, Odin!

Вариантов несколько.

Во-первых, можно "тупо" пройтись по дереву каталогов, найти запись о файле и прочитать номер первого кластера. Это единственный документированный способ получения первого кластера.
Во-вторых, можно использовать информацию из блока управления файлом. В этом блоке имеется такая информация как последний прочитанный кластер файла. Соответственно, нужно открыть файл и считывать из него данные порциями, равными размеру кластера (для получения всех кластеров, распределенных файлу). Для получения первого кластера достаточно прочитать 1 первый байт. Проблема в этом методе состоит в том, что адрес блока управления файлами нельзя получить стандартными способами, а нужно воспользоваться недокументированной функцией 52h прерывания 21h.

Других способов получения номера первого кластера я не встречал.


Отправлено: 19.03.2002, 17:13
Отправитель: Ayl (регистрация: 28/12/2001, ответов на счету: 187)
Россия, Санкт-Петербург

_______________

Отвечает GL
Доброе время суток, Odin!
Насколько я помню, этот кластер указывается в области каталога диска. Запусти diskedit и посмотри там.


Отправлено: 19.03.2002, 17:56
Отправитель: GL (регистрация: 02/03/2002, ответов на счету: 42)
Амурская обл., Благовещенск

_______________

Отвечает baldr
Здравствуйте, Odin!

Привет великому Odin'у от сына его baldr'а! :))
А вообще, нужно это делать через FAT. там не только начальный, там и все остальные его кластеры.
Точнее сказать затрудняюсь, но где-то была инфа по FAT32...


Отправлено: 20.03.2002, 00:04
Отправитель: baldr (регистрация: 28/12/2001, ответов на счету: 135)
URL: http://www.dospage.far.ru - Сайт об ОС DOS. Всем, кто любит эту ОС!
Россия, г. Семенов, Нижегородская обл.

_______________

Отвечает Dron
Добрый день, Odin!

Нет ничего проще.. :)
берешь запись в директории, там храниться номер первого кластера. по смещению 1ah - 2 байта.


Отправлено: 20.03.2002, 11:22
Отправитель: Dron (регистрация: 28/12/2001, ответов на счету: 291)
Информзащита
Адрес: Москва
URL: http://asmdev.narod.ru/asmos.html - Операционная система с нуля!
2144510
Россия, Москва

_______________

Отвечает LAO
Приветствую Вас, Odin!
На диске сразу после таблиц FAT располагается корневой каталог. На каждый файл в нем выделяется сектор из 32 байт. В байтах 1ah и 1bh размещается номер начального кластера файла (для файлов) или другого каталога (для каталогов). Более подробно посмотри в TechHelp'е или какой либо соответствующей литературе ("внутренняя структура диска")


Отправлено: 20.03.2002, 15:17
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 70)
Россия, Москва

_______________

Отвечает Mr. BuS
Здравствуйте, Odin!
Надо лезть в каталог. Это тоже такой файл. У каталога есть определенная структура - для каждого файла там указано имя, номер начального кластера и другая инфа. Для того, чтобы обратиться к каталогу не как к каталогу, а как к файлу, чтобы читать в нем данные, нужно опять же знать его кластеры. И т. д. Алгоритм такой - ищешь в корневом каталоге (он расположен в фиксированном месте) подкаталог первого уровня, читаешь его, т. е. находишь в нем имя подкаталога второго уровня, потом читаешь подкаталог второго уровня и т. д., до тех пор пока не дойдешь до нужного файла.


Отправлено: 22.03.2002, 12:17
Отправитель: Mr. BuS (регистрация: 19/03/2002, ответов на счету: 18)
Syros
РФ, Татарстан, Казань




 Вопрос № 319

Доброго всем времени суток.
У меня такой вопрос: имеется 2 компа в локалке, возможно ли обьеденить их вычислительные мощности скажем для работы с 3D графикой или например для взлома паролей перебором ?

Отправитель: Yevgeniy
Вопрос отправлен: 19.03.2002, 17:19
Подгруппа: Пользовательская работа с Windows

_______________

Отвечает StiGGeR
Добрый день, Yevgeniy!

вряд ли такое возможно, хотя бы потому что скорость передачи жанных между компами очень низкая.


Отправлено: 19.03.2002, 17:57
Отправитель: StiGGeR (регистрация: 02/01/2002, ответов на счету: 31)
ICQ: 125704802, FIDO: 2:5011/133
Россия, Уфа

_______________

Отвечает freeseacher
Доброе время суток, Yevgeniy!
при работе с 3d графикой IMHO нет, а вот при переборе это как реализуешь... дампить например!


Отправлено: 19.03.2002, 20:34
Отправитель: freeseacher (регистрация: 03/02/2002, ответов на счету: 51)
Тел.: 8(3832)366362
Новосибирск

_______________

Отвечает Frank
Добрый день, Yevgeniy!
Это должна поддерживать искомая программа. 3D MAX например может рендерить используя ресурсы локальной сети. Все зависит от программы. А универсальных прог по-пойму нету (поправьте и дайте ссылку если я не прав).


Отправлено: 19.03.2002, 21:38
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 130)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев

_______________

Отвечает mr.hedgehog
Доброе время суток, Yevgeniy!

Имхо нет, поскольку процесс один. это раз.
Два: скорость передачи данных м/д компами не позволит..


Отправлено: 20.03.2002, 06:43
Отправитель: mr.hedgehog (регистрация: 05/02/2002, ответов на счету: 28)
Russia, Saint-Petersburg

_______________

Отвечает DivX
Здравствуйте, Yevgeniy!
Только если сама программа поддерживает это. И только для действительно многозадачных систем типа Windows NT, а для большей масштабируемости лучше ОСы класса UNIX. В том же 3D Max уже давно реализованна функция "сетевого" рендеринга так что если есть желание и ОСь типа NT можете поэксперементировать.


Отправлено: 20.03.2002, 07:15
Отправитель: DivX (регистрация: 28/12/2001, ответов на счету: 238)

_______________

Отвечает v4D
Приветствую Вас, Yevgeniy!

Конечно же можно... это уже давно используется крупными фирмами
Например, производительность в 3DS Max составляет более 90%
от суммы производительности каждого компа в локалке...


Отправлено: 20.03.2002, 22:19
Отправитель: v4D (регистрация: 17/03/2002, ответов на счету: 11)
Ukraine, Kiev

_______________

Отвечает jc
Здравствуйте, Yevgeniy!
Теоритически можно все. Тебе только придеться каким либо образом распределять вычислительные ресурсы между машинами. С уважениме...



Отправлено: 21.03.2002, 10:02
Отправитель: jc (регистрация: 05/02/2002, ответов на счету: 45)
Россия, Йошкар-Ола




 Вопрос № 320

Привет, эксперты!

Ребята, очень нужна ваша помощь! [Может и не совсем по теме рассылки, просто обратиться-то больше не к кому :(( ]. Пожалуйста, не отвечайте через форму, чтобы не засорять рассылку, а мой е-маил упадет к вам вместе с вопросом.
Ситуация такая:
Имею сишный исходник (написан на borland c), требуется откомпилить его в win32 dll. Никогда не ставил С, и даже не знаю, как там склеивать *.с и *.h файлы. Поможете? Или даже можно было бы оттранслировать в асм - там я хотя бы примерно знаю, что делать.

Отправитель: Dmitry (dmitry_m@kmr.kuzbass.net)
Вопрос отправлен: 19.03.2002, 18:26
Подгруппа: Оптимизация программ

_______________

Отвечает Топор
Доброе время суток, Dmitry!

Насколько я знаю, у командно-строчного компилера bcc.exe есть какой-то ключ (его можно узнать, вызвав компилятор с /?), по которому он не делает экзешник, а перегоняет в асм. Кажется, я даже его знаю - /Fa .


Отправлено: 19.03.2002, 22:58
Отправитель: Топор (регистрация: 15/03/2002, ответов на счету: 42)
Радио "Эхо Москвы в Самаре"
Адрес: 443011, Самара, ул. Советской Армии, 217
Тел.: (8462)160302, 162918
URL: http://listen.to/btemple - Хорошая Русская Металлическая команда
Россия, Самара

_______________

Отвечает v4D
Добрый день, Dmitry!

А для чего их склеивать ?
Когда вы добавляете *.h в прогу (Например: #include ), всё его содержимое копируется в эту прогу, после чего вызываются нужные функции...


Отправлено: 20.03.2002, 22:23
Отправитель: v4D (регистрация: 17/03/2002, ответов на счету: 11)
Ukraine, Kiev




 Вопрос № 321

Доброе время суток Эксперты. У меня такой вопрос: есть монитор ViewSonic Professional Series PF775, но почемуто изображение нечеткое, цвета, краски отличные но при разрешении 1600-1200, буквы слегка расплывчатые и границы рабочей области экрана кривоваты, в чем проблемс? Video-карта вроде нормальная, ATI Xpert 16Mb. В чем проблемс, зараие сенкс.
Отправитель: Zmey
Вопрос отправлен: 19.03.2002, 18:59
Подгруппа: Модели, виды и типы компьютеров (hard)

_______________

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


Отправлено: 19.03.2002, 20:41
Отправитель: Den (регистрация: 28/12/2001, ответов на счету: 28)
Россия, СПб, Ломоносов

_______________

Отвечает DivX
Здравствуйте, Zmey!
Если буквы и все-такое расплывчато при любом разрешении, то монитор скорее всего был плохо настроен и как следствие - плохая фокусировка лучей. А если это только при 1600х1200 - то это не беда, ухудшение фокусировки пр таких высоких разрешениях наблюдается у каждого 17" монитора.


Отправлено: 20.03.2002, 07:15
Отправитель: DivX (регистрация: 28/12/2001, ответов на счету: 238)

_______________

Отвечает Dr_NO
Доброе время суток, Zmey!
По моему, дело как раз в Вашей видеокарте. Дело в том, что на больших разрешениях возможен эффект "замыливания", что Вы и наблюдаете (как правило этим грешат встроенные видеокарты). Просто поставьте разрешение поменьше или же поменяйте видеокарту.


Отправлено: 20.03.2002, 07:46
Отправитель: Dr_NO (регистрация: 19/03/2002, ответов на счету: 4)
140323114
Россия, Люберцы




Форма отправки сообщения
(действительна до момента выхода следующего выпуска рассылки)

Заполните приведенную ниже форму для того, чтобы отправить вопрос. Дополнительную информации по пользованию формой для подписчиков и экспертов можно получить, нажав на знак вопроса в соответствующем разделе, при этом информация будет отображена в отдельном окне.

В почтовых программах форма не работает!!! Открывайте рассылку в браузере Internet Explorer, где и набирайте Ваш вопрос.



 Персональные данные
Ваше имя:
Пароль (экспертам):
E-mail (подписчикам):
Опубликовать мой e-mail в рассылке


 Текст сообщения

Текст вопроса:

Приложение (если необходимо: программа, выдержка из закона и т.п.):



 Выбор подгруппы

Отправить всем экспертам выбранной подгруппы


SpyLOG be number one SUPERTOP

© 2000 - 2002 Россия, Москва. Авторское право: Калашников О. А.


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

В избранное