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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 844
от 04.09.2007, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 394, Экспертов: 21
В номере:Вопросов: 1, Ответов: 1


Вопрос № 100200: Добрый день, уважаемые эксперты! Пожалуйста, помогите мне с одной вещью: Когда вызывается MessageBoxA, на окно выводится MsgBoxA и ждет нажатия клавиши "ОК"... а как сделать, чтобы он не ждал нажатия, а программа выполнялась далее?....

Вопрос № 100.200
Добрый день, уважаемые эксперты!
Пожалуйста, помогите мне с одной вещью:
Когда вызывается MessageBoxA, на окно выводится MsgBoxA и ждет нажатия клавиши "ОК"... а как сделать, чтобы он не ждал нажатия, а программа выполнялась далее?.. Или чтобы MsgBox вызывался всего на несколько секунд, чтобы через пару секунд он пропал и программа выполнялась далее?...

Я сам пробовал по разному , но постоянно не получается( Я вообще программирование под WINDOWS недавно начал изучать (дней 5 назад...), Дос я изучил так себе... Даже не знаю... стоит ли его полностью изучить, или нет, или учиться писать и под WIn32 и Dos...
Спасибо!
Удачи!
P.S. И если не сложно, объясните, пожалуйста, "в двух словах" что значат команды типа jmp @@3, метки @@: просто постоянно в программах такое вижу, а понять, зачем "@" не могу... И в учебниках не встречал.....

Огромное Вам спасибо за то что прочитали мой некороткий вопрос...:)
Отправлен: 30.08.2007, 07:37
Вопрос задал: Покритюк Виталий Леонидович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: IceWolf
Здравствуйте, Покритюк Виталий Леонидович!
Есть такая недокументированная функция MessageBoxTimeoutA (W), именно она выводит MessageBox на указанное время.

int MessageBoxTimeoutA(
HWND hWnd, // хэндл окна-родителя
LPCTSTR lpText, // адрес строки с текстом окна
LPCTSTR lpCaption, // адрес строки с заголовком окна
UINT uType, // стиль (см описание MessageBoxEx в Win32.hlp)
WORD wLanguageId // идентификатор языка (см описание MessageBoxEx в Win32.hlp)
dwMilliseconds: DWORD //время существования окна в миллисекундах
);

Описания этой функции нет в win32.hlp, данных о ней нет ни в .lib'ах не в .inc'ах из MASM32, поэтому вызывать её будем получая адрес с помощью GetProcAddress (пример в приложении). Если всё же хотите использовать .lib'ы прочитайте статью.

@:, @label:, etc.-это локальные метки, т.е это обычные метки только их действие ограничивается определённым участком кода. Каждый ассемблер обрабатывает их по-разному. Например "@@:" применяется следующим образом: Вы расставляете их по коду в нужных местах, а затам ссылаетесь на предыдущую метку (выше по коду) как @B, а на следующую (ниже по коду) как @F. Таким образом, если пишете, например, цикл не нужно выдумывать лишние имена.
Также:
Локальные метки в FASM,
Локальные метки в ТASM и MASM.
Удачи!

Приложение:

---------
И да поможет вам F1, и да сохранит вас F2!

Ответ отправил: IceWolf (статус: Студент)
Ответ отправлен: 30.08.2007, 17:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное!!!
Теперь все понял!
Наконец-то я понял о метках!!))
да, все работает!)
а я не знал, почему некоторые функции, у RadASMе не подсвечиваются такие как MessageBoxTimeoutA
теперь знаю, что надо получить адресс процесса...:)
я просто в туториалах ICZELION'а пока еще не дошел к этому...:)
жаль надо через call, я привык все делать с invoke
хотя это может было бы и лучше если бы все с помощью call
а то я когда вижу свою программу в отладчике я ее даже не узнаю...
мне этим и не нравится писать под Win32...
А еще из-за того, что там есть LOCAL... я не понимаю, как эта переменная возникает, смотрю под отладчиком свою программу, там куча всякого, которое я не писал....
.IF, .WHILE... это уже как язык высого уровня...
мне нравился дос, потому что дам Ассемблер был намного чище...Спасибо за ответ! Удачи!:)


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное