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

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


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

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

Выпуск № 617
от 16.08.2003, 18:40

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


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

dimka
Статус: Опытный
Общий рейтинг: 146.21
Телефон: (231)-4-43-85
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 106.8
URL: мощный файловый архив
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 135.04
[Подробней >>]
 
Lynx
Статус: Опытный
Общий рейтинг: 117.59
Телефон: (8442) 750522
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.18
URL: Программирование
[Подробней >>]
Евгений Иванов
Статус: Опытный
Общий рейтинг: 148.33
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
[L2]Max
Статус: Начальный
Общий рейтинг: 113.79
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 126.52
URL: Методы оптимизации работы ПК
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 119.15
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.19
[Подробней >>]
Igoryk
Статус: Профессиональный
Общий рейтинг: 110.97
URL: CodeClimber.Com
[Подробней >>]
Алексей
Статус: Доверительный
Общий рейтинг: 104.76
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.15
[Подробней >>]
Greys
Статус: Начальный
Общий рейтинг: 125.8
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121.08
URL: мой сайт
[Подробней >>]


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

Вопрос № 3894. Здравствуйте, эксперты ! Какие программы на Ваш взгляд следует использовать при защите своих програм... (ответов: 5)
Вопрос № 3895. Здравствуйте уважаемый ЭКСПЕРТ . Меня зовут Стас, и я хотел задать вам парочку вопросов по поводу пр... (ответов: 9)
Вопрос № 3896. Где мне скачать предыдущие выпуски рассылки по програмированию на Ассемблере под Windows?... (ответов: 6)
Вопрос № 3897. Доброго всем времени суток! Для меня день сегодня действительно добрый! Сегодня, нет вообще-то вчера... (ответов: 3)
Вопрос № 3898. Уважаемые эксперты как программно добавить новый язык в индикатор Internat.exe если можно с примером... (ответов: 2)
Вопрос № 3899. Здравствуйте, эксперты. Пару месяцев назад задавал вопрос по недокументированным функциям ntdll.dll.... (ответов: 3)
Вопрос № 3900. Здравствуйте Эксперты. Посоветуйте что можно сделать в следующей ситуации. Нужно сделать скриншот эк... (ответов: 6)
Вопрос № 3901. Приветствую всех ! Ув. эксперты, у меня к вам такой вопрос: Объясните пожалуйста закономерность прео... (ответов: 4)
Вопрос № 3902. Все дело в том что окно не должно пропадать. Может что то сделать с DC? Возможно ли отклипить активн... (ответов: 2)

Вопросов: 9, ответов: 40


 Вопрос № 3894

Здравствуйте, эксперты !
Какие программы на Ваш взгляд следует
использовать при защите своих программ ? Я читал,
что лучше всего ASProtect. Так ли это ?
Стоит он 100 $ и на дисках я его не видел.
Стоит ли покупать ?



Вопрос отправлен: 11.08.2003, 19:51
Отправитель: IceWINteR (brothers@atnet.ru)

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

Отвечает dimka

Приветствую Вас, IceWINteR!
Если есть деньги, то купи, хотя её со дня на день взломают(кстати, сам пробовал С-айсом).Лючше сам напиши защиту для своей проги!!!


Ответ отправлен: 13.08.2003, 11:38
Отправитель: dimka


Отвечает Eugene

Приветствую Вас, IceWINteR!
На всякий AS.. всегда найдётся UnAS.. Это значит, что пользоваться широко распространёнными программами для защиты очень не надёжно. Гораздо надёжней почитать в инете про защиту и сделать свою.

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


Отвечает masquer

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

Ответ отправлен: 11.08.2003, 20:10
Отправитель: masquer


Отвечает Lynx

Приветствую Вас, IceWINteR!
Позволь напомнить тебе, что неломаемых программ не бывает (впрочем как и систем шифрования). Поэтому легче, проще и надёжнее защитить свою прогамму самому. Если хочешь, то можешь мне написать по этому поводу. Пообщаемся. Lynx@vlink.ru.


Ответ отправлен: 12.08.2003, 12:24
Отправитель: Lynx


Отвечает Bob Johnson

Приветствую Вас, IceWINteR!
Ты знаешь, если кто-то серьезно захочет, то все равно сломает. Если же необходимо все-таки как-то этому помешать, то лучший вариант - это придумать свой новый способ защиты. Но для этого необходимы определенные знания и немало.
Если не можешь сам - тогда уж используй то, что есть. Если ты думаешь, что потраченные 100 долларов окупятся - то покупай.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 03:07
Отправитель: Bob Johnson


 Вопрос № 3895

Здравствуйте уважаемый ЭКСПЕРТ . Меня зовут Стас, и я
хотел задать вам парочку вопросов по поводу программирования на Ассемблере.
1.Для программирования на Ассемблере подходит любая операционная система?
(WindowsXP,Me,95,98,2000,2003),а также можно ли программировать на Ассемблере в
Linux,LindowsOS.
2.Программировать на Ассемблере можно на компьютерах любой конфигурации,будь
это Pentium 1,2,3,4;AMD?
3.Можно ли написать программу на Ассемблере на одном компе и запускать на
другом и какие могут быть исключения.
4.У меня не получается откомпилировать программы на Ассемблере,подскажи
кокой кампилятор лучше и как им пользоваться и например если я компилирую
программу то она не работает появляется ошибка
например программа Hello world:
01) CSEG segment
(02) org 100h
(03)
(04) Begin:
(05)
(06) mov ah,9
(07) mov dx,offset Message
(08) int 21h
(09)
(10) int 20h
(11)
(12) Message db 'Hello, world!$'
(13) CSEG ends
(14) end Begin
Я работаю в WindowsXP.
Заранее спасибо за ответы с уважением Стас.
Мой e-mail:
STAS4may@mail.ru
И пожалуйста ответь как только сможеш.



Вопрос отправлен: 11.08.2003, 20:27
Отправитель: Стас

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

Отвечает dimka

Доброе время суток, Стас !
1) Правильно!!
2)Есть небольшие различия.
3)Зависит от типа процессора(Intel,AMD..)Если пишешь на компе с проц. типа Intel, а прогу запускаешь на компе с проц. типа,например, AMD, то получтся накладочки.
4)прога Hello.asm , Компилер Tasm 5.0
Tasm hello(Создаёшь ОBJ фаил)
Tlink hello(exe);Tlink hello /t/x(com)
Вроде всё!!!


Ответ отправлен: 13.08.2003, 11:58
Отправитель: dimka


Отвечает Евгений Иванов

Доброе время суток, Стас !
1. АГА!
В Linux есть gas, NASM.
2. АГА!
У меня например P55C (Pentium MMX 200 Mhz, up to 225 by 75*3 (not 66*3))
И не жалуюсь...
3. Никакие
4. Смотри архив рассылки... :-|


Ответ отправлен: 12.08.2003, 23:57
Отправитель: Евгений Иванов


Отвечает [L2]Max

Здравствуйте, Стас !
1. Да. Для программирования на Асме подходит любая ОС, точнее существует версии различных ассемблеров под разные ОС.
2. Если ты програмишь х86 совместимые, то да, можно на любой из перечисленных. Но. Т. к. они совместимы сверху вниз, то на более младших моделях, появляются новые инструкции.
3. Можно, исключения см. пункт 2.
4. Ты ведь не привел ключи которые использовал, ассемблер. У каждого ассемблера свои тонкости. и каждый выбирает тот, который ему более понравился. Читай доки по отдельным трансляторам

Ответ отправлен: 11.08.2003, 20:45
Отправитель: [L2]Max


Отвечает Tigran K. Kalaidjian

Доброе время суток, Стас !
На ассемблере можно программировать любые микропроцессорные системы, т.е. не только компьютеры и, естественно, под любыми ОС. Программа, написанная на одном компе может не заработать на другом. Например Вы пишете программу для процессора 8086, а на компьютерах на базе процесоров Motorolla (например фирмы Apple) она выполняться не будет(по крайней мере правильно =) ). Также не будет выполняться программа для калькулятора на мобильнике - всё из-за различия машинных команд и аппаратных средств.

Ответ отправлен: 11.08.2003, 21:12
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Приветствую Вас, Стас !
1. Да. Я бы рекомендовал НТ-системы, так как они постабильней. Под линух тоже можно писать на асме, но там с этим сложнее.
2. Да, конечно. Ты сам выбираешь младшую модель процессора, под которую пишешь программу и она будет работать на всех процах, начиная с этого. На более младщих процессорах она уже может не работать.
3. Да, конечно, ассемблер ничем не отличается от других языков программирования.
4. Я использую тасм - и под дос и под винды.

* EMan1.5: ---===*** Die young - live free ***===---


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


Отвечает _vt

Доброе время суток, Стас !
0)1)2) Ассемблер - пишется с маленькой буквы (assembly language). :-) Язык ассемблера представляет собой в простейшем случае символические представления машинных кодов процессора, причем у каждого семейства процессоров набор кодов свой. Все процессоры, которые ты перечислил относятся к семейству IA-32 (x86) и набор инструкций у них сходен, любая программа написанная для процессора 8088 (самый первый процессор из этой серии) будет работать на Pentium-4. (Есть правда ограничения, связанные с разными операционными системами...)
3) Ограничений куча... Например,
а) если программа написана для работы в среде Windows XP, а на твоем компьютере установлен MS-DOS 6.0, то работать она не будет... :-(
б) если в программе ты используешь последние инструкции процессора Pentium-4 или Athlon-XP, а у тебя процессор 80486, который многие новые инструкции не поддерживает, то программа также работать не будет...
4) Эту программу ты взял из книги О.Калашникова, и причем в этой книге еще подробней написано все то, о чем я написал... И там очень ясно сказано, что когда набиваешь текст этой программы в текстовом редакторе(или копируешь туда), то номера строк не надо набивать!!! Если ты сделал все правильно, то нужно было указать текст ошибки...

---===*** E-Man - forever! Win2k - forever! WinXP - must die!***===---


Ответ отправлен: 12.08.2003, 01:08
Отправитель: _vt


Отвечает Ayl

Приветствую Вас, Стас !
1.Для программирования на Ассемблере подходит любая операционная система?
Так как язык ассемблера есть просто мнемоническое обозначение команд процессора, то программирование на асме возможно для любой ОС. В принципе, даже само присутствие ОС не обязательно. Программирование для конкретной ОС отличается подходом к структуре выполняемого файла, использовании API данной ОС и т.п. Кроме этого, при программировании под современными ОС, использующими защиту приложений друг от друга и разделение памяти, возможны ограничения по использованию всех возможностей компа, минуя ОС.

2.Программировать на Ассемблере можно на компьютерах любой конфигурации,будь это Pentium 1,2,3,4;AMD?
Более того, также можно писать на асме для процессоров Motorola, Sun, Zilig, PDP и вообще для любого существующего процессора существует язык ассемблера. Единственное ограничение - в переносимости программ. То есть, программа, написанная на асме для процессора Intel не будет работать ни под каким другим процессором. Под процессором Intel я понимаю всю линейку процов от 8086/8088 до Pentium X. И еще. Если прога использует возможности, например, Pentium'а II, то она не будет работать на любом процессоре из этой линейки более раннего производства. Просто в ранних процах не будет используемых новым процем команд. Но любая прога, написанная для какого-либо процессора из линейки будет без изменений работать и на более новых.

3.Можно ли написать программу на Ассемблере на одном компе и запускать на другом и какие могут быть исключения.
См. п.2. Если комп (точнее, процессор) принадлежит тому же семейству и может выполнять все команды, используемые в программе - запуститься без проблем. Правда, могут быть ограничения по переферии и по ОС. То есть, прога, написанная для 8086 под ДОС может не работать на Pentium под Win XP. Ну и, есс-но, если, допустим, прога рассчитана на работу с видеоадаптером VGA, то она не пойдет под видеоадаптером CGA, пусть даже и процы будут одинаковыми.

4.У меня не получается откомпилировать программы на Ассемблере [...]
Если то, что ты привел в качестве примера и является исходным кодом, то оно и не откомпилится. В исходном коде не нужно указывать строчки. Кстати, на будущее, приводи заодно и сообщения об ошибках. В приложении - "Hello, World!" так, как должен выглядеть.
Насчет компилятора. Я использую пакет TASM. Для винды хорошо работает MASM. Для начала, я думаю, тебе вполне пойдет.
И еще замечание. Твой хеллоу - это программа для ДОС. Она использует соглашения, принятые в этой ОС. Если ты будешь ее запускать как приложение Win, то ничего не получится. Для компиляции и выполнения используй либо командную строку ДОС, либо оболочку типа FAR.

Ключи для компиляции с помощью TASM'а:
tasm /m2 /la hello.asm
tlink /t hello.obj

Приложение:

Ответ отправлен: 12.08.2003, 11:25
Отправитель: Ayl


Отвечает Lynx

Приветствую Вас, Стас !
1. Да, только под каждую ОС нужен свой компилятор. :)))
2. Все эти процесоры на базе Intel. А для других (КПК) нужон свой компилятор, т.к. у них своя система комманд.
3. Да. Если запускать в той же самой ОС для которой прога была написана.
4. А номера строк вырезать не пробовал??? :)))


Ответ отправлен: 12.08.2003, 12:24
Отправитель: Lynx


Отвечает Igoryk

Приветствую Вас, Стас !
1. Для каждой ОС можно найти свой ассемблер.
2. Да.
3. Это уже зависит от конкретной платформы и ОС.
4. Поменяйте местами строки 13 и 14.

Ответ отправлен: 15.08.2003, 17:24
Отправитель: Igoryk


 Вопрос № 3896

Где мне скачать предыдущие выпуски рассылки по програмированию на Ассемблере под Windows?



Вопрос отправлен: 11.08.2003, 22:50
Отправитель: AshTray[SC]

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

Отвечает dimka

Здравствуйте, AshTray[SC]!
subscribe.ru


Ответ отправлен: 13.08.2003, 12:00
Отправитель: dimka


Отвечает Евгений Иванов

Приветствую Вас, AshTray[SC]!
Вопрос и ответ на 3698 читай...
Весь архив доступен на Subscribe.ru
http://subscribe.ru/catalog/comp.soft.prog.faq/


Ответ отправлен: 12.08.2003, 23:56
Отправитель: Евгений Иванов


Отвечает Алексей

Добрый день, AshTray[SC]!
Смотри здесь:
http://subscribe.ru/catalog/comp.prog.assembler

Ответ отправлен: 12.08.2003, 02:54
Отправитель: Алексей


Отвечает Tigran K. Kalaidjian

Доброе время суток, AshTray[SC]!
Копайте под
http://learnasm.narod.ru

Ответ отправлен: 12.08.2003, 10:48
Отправитель: Tigran K. Kalaidjian


Отвечает Lynx

Здравствуйте, AshTray[SC]!
Я уже со счёта сбился, сколько раз задавали этот вопрос. Покопайся в архиве рассылке не RusFAQ.


Ответ отправлен: 12.08.2003, 12:24
Отправитель: Lynx


Отвечает Bob Johnson

Приветствую Вас, AshTray[SC]!
На http://subscribe.ru/catalog/comp.soft.prog.faq

* EMan1.5: ---===*** Die young - live free ***===---


Ответ отправлен: 12.08.2003, 12:38
Отправитель: Bob Johnson


 Вопрос № 3897

Доброго всем времени суток!
Для меня день сегодня действительно добрый! Сегодня, нет вообще-то вчера (че то я засиделся за компом, точнее за светыней: ASSEMBLERным кодингом) вышел приказ о зачислении в Воронежский Государственный Университет! Ну типа я в списках! В общем на ваших глазах родился новый студент, можно даже сказать произошло пополнение в ряду контразведчиков. Хотя я себя студентом еще слабо представляю. Типа физик я теперь, но специальность у меня комповская,можно сказать HARDовская:"Микроэлектроника и полупроводниковые приборы". Есть повод уделить больше времени асьме, как ни как но святыню трогать ни..ни... на то она и святыня (прямо афоризм какой-то). Я тут вот чё подумал: что я зря сюда заходил? Надо бы какой-нибудь вопросит слабать. Напрягаю извилину, медитирую и вот, о чудо, рождается вопрос("красотища то какая даже матом ругаться не хочется")!
А вопрос просто животрепещущий:
В общем представьте сначала условия в которых будет идти кодинг. Представьте что нет ОСи никакой вообще (дядя страшный спер), отсутствует сервис DOSa и BIOSa (тоже дядька наколдовал). Не думайте, что просто я не умею ими пользоваться, просто так построена задача, вставшая передо мной, явно не на путь истинный, хотя истина где-то рядом, малдер нот деад и скали из форева! И вот в такой ситуации возникает еще одно неожиданное волшебство дядьки-колдуна,а кидает он нас в защищенный режим. И кидает больно, но мы от дядьки спрятались под нулевым кольцом защиты.(Прям получилась реклама фильма "Братва и кольцо")И должны в такой страшной ситуации допереть, а как нам прочитать самолепные бинарники(это не пельмени,как думал дядька,ломая об них последние зыбы,хотя он колдун себе новые наколдует или Гарри Потера попросит, ведь он маг с больших букв П... и Г...,буквы для него подходящие) с дискеты(файловая система FAT или NTFS) и загрузить их в память куда указывают дискрипторы из GDT, на которые в свою очередь указывают селекторы, которые будут загружены в CS после соответствующих дальних переходах? Вот такая вот загогулина получается, а загогулина - слуга злого дядьки! Так что не датим злому дятьки дестроить наши компы и мозги. Все на борьбу с разгельдяйством и безолаберностью!
Всем кто смог понять суть моего вопроса плиззззззззз помогите разобраться с этой дилемой!!!!
P.S. ASSEMBLER учить - мозги лечить!!!



Вопрос отправлен: 12.08.2003, 02:18
Отправитель: Greys

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

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

Здравствуйте, Greys!
Ну что же, раз злой дядька оставил тебе дисковод, есть надежда, что прочитать файлы все-таки удастся. Для этого всего лишь нужно прочитать описание работы с контроллером дисковода через порты ввода-вывода, немного попрактиковаться в этом несложном деле и использовать полученные навыки уже применительно к защищенному режиму.
Кстати что-то я не слышал, чтобы на дискетах была система NTFS.

Ответ отправлен: 12.08.2003, 07:06
Отправитель: ASMодей


Отвечает Tigran K. Kalaidjian

Доброе время суток, Greys!
Поздравляю с поступлением! Физик - это хорошо, значит наш человек!
Что до описанной ситуации, то можно почитать способы создания и проектирования ОС(там ведь тоже "ничего нет"), а также изучить работу с накопителями через порты(см. в архивах этой рассылки).
А также снять фильм "Братсво нулевого кольца", раз уж на то пошло =)
P.S. ASSEMBLER учить - мозги сушить

Ответ отправлен: 12.08.2003, 10:59
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Здравствуйте, Greys!
Ну-ну... :)
Я тут уже как-то писал про университеты и все такое - не могу вспомнить, когда, да и найти теперь тоже не могу...
По поводу твоего вопроса - тебе надо немного отдохнуть от всяких там сорванных башен и Г. Портеров. (короче, скажи нет наркотикам).
В общем, если хочешь написать свой биос, то все, что у тебя есть - это контроллеры, которые установлены на системной плате. И с ними ты должен работать (через порты, например). Ты должен будешь сам проинициализировать их необходимым образом (а это отличается на разных платах, т.к. биос пишется под конкретную модель), после чего они уже будут работать и выполнять нужные тебе функции (например, чтение с диска).

* EMan1.5: ---===*** Die young - live free ***===---


Ответ отправлен: 12.08.2003, 12:40
Отправитель: Bob Johnson


 Вопрос № 3898

Уважаемые эксперты как программно добавить новый язык в индикатор Internat.exe если можно с примером на асме
заранее спасибо



Вопрос отправлен: 12.08.2003, 10:28
Отправитель: Vintic (asm2003@mail.kz)

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

Отвечает Greys

Доброе время суток, Vintic!
У меня однажды возникла похожая ситуация: надо было отправить письмо на украинском языке(можно было и вручную всего две буковки подправить, но мы не ищем легких путей) и одно на датском. Правда я обошелся без асьмы. Для этого я сделал следующее: на таскбаре, там где значек языковой панели кликаю правой кнопкой мыши, в сплывающем окне выбираю Properties(свойства)->keyboard properties, выбираю вкладку Language (язык). Далее жмешь Add(добавить), выбираешь язык, жмешь OK,далее заходишь в свойства данного языка и выбираешь раскладку клавиатуры, после применяешь настройки и в бой. Если вдруг понадобятся исходники, то у меня валялись где-то для Delphi может сможешь перевести на асьму, то мыль на мыло поищу.
С уважением,Greys!

Ответ отправлен: 12.08.2003, 19:29
Отправитель: Greys


Отвечает Tigran K. Kalaidjian

Добрый день, Vintic!
Только программно и можно =) Нажимаете правой клавишей мыши на ярлыке Internat'a и добавляете новый язык ;).
На самом деле, при добавлении должно ИМХО меняться какое-то значение в реестре. Точного адреса не могу написать, но логика подсказывает, что это в районе HKEY_CURRENT_USER\Keyboard Layout\
Используйте также следующие ф-ции WinAPI(подробнее читайте в MSDN):
1.Загрузить раскладку:
HKL LoadKeyboardLayout(
LPCTSTR pwszKLID, // name of layout to load
UINT Flags // keyboard layout flags
);
2.Получит имя раскладки:
BOOL GetKeyboardLayoutName(
LPTSTR pwszKLID // address of buffer for layout name
);
3.Выгрузить раскладку:
BOOL UnloadKeyboardLayout(
HKL hkl // handle of keyboard layout
);
4.Активизировать раскладку(т.е. переключить текущий язык):
HKL ActivateKeyboardLayout(
HKL hkl, // handle to keyboard layout
UINT Flags // keyboard layout flags
);
В 9x и NT хти ф-ции немного различаются, так что читайте подробнее.

Ответ отправлен: 12.08.2003, 11:45
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3899

Здравствуйте, эксперты.
Пару месяцев назад задавал вопрос по недокументированным функциям ntdll.dll. Мне ответили, что описания нигде нет.
Так вот, кому интересно, заходите на
http://undocumented.ntinternals.net/
там есть описание некоторых функций. Можно скачать его в chm-файле. Отправьте, пожалуйста в рассылку.



Вопрос отправлен: 12.08.2003, 10:52
Отправитель: Marouder (marouder@list.ru)

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

Отвечает Greys

Добрый день, Marouder!
На правильном пути, батенька. Сайт вы действительно рулезный нашли, мне с него кое-что пригодилось. Так держать!
С уважением Greys!

Ответ отправлен: 12.08.2003, 19:48
Отправитель: Greys


Отвечает dimka

Здравствуйте, Marouder!
Ну спасыбо дорогой!


Ответ отправлен: 13.08.2003, 12:26
Отправитель: dimka


Отвечает Tigran K. Kalaidjian

Здравствуйте, Marouder!
Отправил в рассылку

Ответ отправлен: 12.08.2003, 11:02
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3900

Здравствуйте Эксперты.
Посоветуйте что можно сделать в следующей ситуации.
Нужно сделать скриншот экрана,но исключить из него активное окно.
Вообще это возможно сделать?
Заранее благодарю.



Вопрос отправлен: 12.08.2003, 15:23
Отправитель: Алексей (alex_@front.ru)

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

Отвечает Tigran K. Kalaidjian

Здравствуйте, Алексей!
Да, это возможно! Ничего сложного в этом нет!
Ваши действия:
1. Прячем окно с помощью ShowWindow
Описание. Подробнее см. в MSDN.
BOOL ShowWindow(
HWND hWnd, // хендл окна
int nCmdShow // статус(в данном случаеSW_HIDE)
);
2. Делаем все окна неактивными
с помощью SetActiveWindow(0)
3. Ждем перерисовки низлежащих окон
4. Получаем контекст рабочего стола
с помощью GetDC(0)
5. Забираем картинку с помощью BitBlt
Описание. Подробнее см. в MSDN.
BOOL BitBlt(
HDC hdcDest, // handle to destination device context
int nXDest, // x-coordinate of destination rectangle's
//upper-left corner
int nYDest, // y-coordinate of destination rectangle's
//upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
HDC hdcSrc, // handle to source device context
int nXSrc, // x-coordinate of source rectangle's upper-
//left corner
int nYSrc, // y-coordinate of source rectangle's upper-
//left corner
DWORD dwRop // raster operation code
);
6. Освобождаемся от контекста, показываем окно.
Программу, которая это делает для достижния прозрачности окна, отослал на мыло. Программа написана на Delphi и хорошо откомментирована. Под MASM32 Вы ее, думаю, сможете переделать.

Ответ отправлен: 12.08.2003, 19:59
Отправитель: Tigran K. Kalaidjian


Отвечает dimka

Приветствую Вас, Алексей!
SysRq.


Ответ отправлен: 13.08.2003, 12:30
Отправитель: dimka


Отвечает Bob Johnson

Здравствуйте, Алексей!
Попробуй спрятать его (ShowWindow (.., SW_HIDE)), сделать скрин-шот, а потом снова показать.

* EMan1.5: ---===*** Die young - live free ***===---


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


Отвечает Broken Sword

Добрый день, Алексей!
ага, как раз такой таск был в каком то reme на reverser-course.de. Просто сделай Hot Key (API RegisterHotKey), сверни окно в таскбар и делай скриншот по hot key


Ответ отправлен: 12.08.2003, 15:40
Отправитель: Broken Sword


Отвечает Евгений Иванов

Доброе время суток, Алексей!
Скрываешь окно и делаешь шот.


Ответ отправлен: 13.08.2003, 00:31
Отправитель: Евгений Иванов


Отвечает Lynx

Приветствую Вас, Алексей!
Может быть я и банален, но ИМХО в каком нить фотошопе это сделать быстрее. :))) Можно конечно же поробовать направить этому окну что нить типа WM_CLOSE, но...


Ответ отправлен: 15.08.2003, 17:05
Отправитель: Lynx


 Вопрос № 3901

Приветствую всех !
Ув. эксперты, у меня к вам такой вопрос:
Объясните пожалуйста закономерность преобразования
дробных чисел в Hex код.
А именно:
Почему 0.1 = HEX(3D CC CC CD)
Почему 0.2 = HEX(3E 4C CC CD)
Почему 0.3 = HEX(3E 99 99 9A)
Почему 0.4 = HEX(3E CC CC CD)
Почему 0.5 = HEX(3F 00 00 00)
Почему 0.6 = HEX(3F 19 99 9A)
Почему 0.7 = HEX(3F 33 33 33)
Почему 0.8 = HEX(3F 4C CC CD)
Почему 0.9 = HEX(3F 66 66 66)
И как переводить из 10 с.с. в 16 с.с. и обратно !
Заранее всем огромное спасибо !



Вопрос отправлен: 12.08.2003, 18:07
Отправитель: Fantomas

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

Отвечает Ayl

Добрый день, Fantomas!
Учите матчасть! В компе вещественные числа представляются в виде:
SPP...PMM...M, где S - знак числа (1 бит), PP...P - приведенный порядок, MM...M - нормализованная мантисса. Само число имеет вид R = (0,1M)2*10^P, где M - мантисса в двоичном виде, P - порядок.
приведенный порядок считается следующим образом. Пусть для порядка выделено K разрядов. Т.е. старший бит обозначает 2^(K-1). Тогда порядок булет представлен как 2^(K-1) + P. Соответственно порядок может принимать значаения от -2^(K-2) до (2^(K-2))-1.
Так как нормализованная мантисса всегда имеет старший бит равный 1, эта единица не сохраняется и используется значение без старшей единицы.
Переводить - целые числа с помощью деления с остатком, дробные - с помощью умножения. Числа, имеющие и целую, и дробную части переводятся по отдельности, сначала целая, потом дробная.
Например, число 367,875 в 16-ю с.с. переводится так (см.Приложение).

Приложение:

Ответ отправлен: 12.08.2003, 18:34
Отправитель: Ayl


Отвечает Tigran K. Kalaidjian

Доброе время суток, Fantomas!
Что касается математического перевода HEX->DEC, то это можно сделать следующим образом:
Возьмем 16-ричное число. Сумма=0.
Берем последнюю цифру и умножаем на 16 в степени 0(т.е. на 1). Прибавляем к сумме.
Берем предпоследнюю цифру и умножаем на 16 в степени 1. Прибавляем к сумме.
Берем предпредпоследнюю цифру и умножаем на 16 в степени 2, Прибавляем к сумме.
.
.
.
Берем первую цифру и умножаем на 16 в степени (n-1), где n-число разрядов
16-ричного числа. Прибавляем к сумме.
В сумме будет лежать 10-чное число, эквивалентное данному.
Единственное, что ещё надо будет прописать-соответствие "цифр" > 9:
A->10
B->11
C->12
D->13
E->14
F->15
Пример: F1A->10*16^0+1*16^1+15*16^2=3866
Для преобразования в HEX формат следует последовательно делить число на степени 16-ти, при этом понижая показатели степени.
Например:
a=456
a div 256 = 1 -> 1
a:=a mod 256
a div 16 = 12 -> C
a:=a mod 16
a div 1 = 8 -> 8
Итого: 456->1C8
Подробнее смотрите в архиве на RusFaq.ru

Ответ отправлен: 12.08.2003, 20:32
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Здравствуйте, Fantomas!
Этот вопрос неоднократно поднимался в рассылке - см. предыдущие выпуски.
Здесь же скажу вот что - 16-ричная система счисления полностью эквивалентна двоичной, т.к. четыре двоичные цифры образуют одну 16-ную, так что перевод дробных чисел в двоичную систему тебе помог бы.
Кстати, твои результаты точно не правильны, т.к. 0,5 = 0.8 в 16-й системе!
Ну а вообще алгоритм прост - берем дробную часть, умножаем ее на 16. Целая часть результата будет являться очередной 16-й цифрой, а дробная - дальше умножается на 16 и т.д. Вот пример с 0,1:
0,1*16 = 1,6 (первая цифра - 1)
0,6*16 = 9,6 (вторая - 9)
0,6*16 = 9,6 (третья - 9) и т.д.
т.е.
0,1 = 0,199999..h
И это правильно, т.к. первая цифра имеет вес 1/16, вторая - 1/256, третья - 1/4096 и т.д.,
т.е. 1/16 + 9/256 + 9/4096 = 0,09986, а если ряд продолжать до бесконечности, то получится как раз 0,1.

* EMan1.5: ---===*** Die young - live free ***===---


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


Отвечает Евгений Иванов

Доброе время суток, Fantomas!
Это наверное ты привёл раскладку у плав. точки...
Там есть мантисса и порядок.
Вот из книги от Intel:
178.125 = Ordinary Decimal
1.78125_E10_2 = Scientific Decimal
1.0110010001_E2_111 = Scientific Binary
1.0110010001_E2_10000110 = Scientific Binary (Biased Exponent)
IEEE Single-Precision Format:
Sign = 0
Biased Exponent = 10000110
Normalized Significand = 01100100010000000000000
^
|- 1. (Implied)
Single Precision Floating Point =
bit 31 - знак
биты 0...22 - (23 шт.) - Significand
биты 23...30 - (8 шт.) - Biased Exponent


Ответ отправлен: 13.08.2003, 00:31
Отправитель: Евгений Иванов


 Вопрос № 3902

Все дело в том что окно не должно пропадать.
Может что то сделать с DC?
Возможно ли отклипить активное окно ?



Вопрос отправлен: 12.08.2003, 18:24
Отправитель: Алексей

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

Отвечает Broken Sword

Здравствуйте, Алексей!
ниче не понимаю. Ты ж сказал сначал что нужно сделать скриншот, но шоб самого окна там не было. А теперь - оно не должно пропадать. Это как так

Ответ отправлен: 12.08.2003, 21:09
Отправитель: Broken Sword


Отвечает Bob Johnson

Доброе время суток, Алексей!
Вся проблема в том, что print screen и alt-print screen просто копирует данные из видеобуфера и если на твоем окне будет свехру какое-либо always on top, то оно тоже попадет в буфер.
Чтобы получить screen-shot того, что находится под активным окном, это все надо заново нарисовать (собственно это и делает виндовс если ты это окно вдруг сделаешь невидимым), так что видимо других вариантов нет.

* EMan1.5: ---===*** Die young - live free ***===---


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



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (37)
C / C++ (28)
Perl (3)
Builder / Delphi (21)
Pascal (28)
Basic / VBA (12)
Java / JavaScript (8)
PHP (7)
Криптография (10)
WinAPI (18)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (55)
"Железо" (42)
Поиск информации (26)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (11)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (7)
КоАП (5)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


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

В избранное