Новые книги

Эта книга даст читателю понимание того, как устроена криптоэкономика, что представляют собой криптовалюты и чем обусловлен ажиотаж вокруг криптоинвестиций. Вы узнаете всё, что необходимо для того, чтобы начать зарабатывать на криптовалютах: зачем нужен инвестиционный портфель, как устроен майнинг, что стоит учитывать при трейдинге, почему популярны ICO и многое другое.
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.

Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.



Это, наверное, самая простая программа.
Используются всего две функции:
   MessageBoxA  из USER32.DLL и
   ExitProcess  из KERNEL32.DLL.
Суффикс A у MessageBox означает, что функция работает с однобайтовыми
ANSI строками. Для двубайтных Unicode строк - суффикс W, e.g. MessageBoxW.
Сама функция MessageBox выводит сообщение в отдельном оконе, ее прототип:

int MessageBox(
  HWND hWnd,
  LPCSTR lpText,
  LPCSTR lpCaption,
  UINT uType
);

Параметры:
 hWnd - идентификатор окна, из которого вызывается MessageBox
 lpText - указатель на null-terminated строку, содержущая  текст сообщения
 lpCaption - указатель на null-terminated строку, содержущая  заголовок сообщения
 uType - вид диалогового окна

Функция ExitProcess заканчивает процесс и все образованные процессы из этого процесса.

VOID ExitProcess(
  UINT uExitCode,
);

 uExitCode - код выхода

Параметры функции передаются по следующей схеме:

    AnyFunction(first_param, second_param, third_param);

    push    [third_param]
    push    [second_param]
    push    [first_param]
    call    AnyFunction
или
    call    AnyFunction, [first_param], [second_param], [third_param]

Вот сама программа:

.386
.model flat

extrn            MessageBoxA:proc
extrn            ExitProcess:proc

.data

mb_text          db 'Hello, World!',0
mb_caption       db 'My first program',0

.code
start:
                 push   0
                 push   offset mb_caption
                 push   offset mb_text
                 push   0
                 call   MessageBoxA
                 push   0
                 call   ExitProcess

ends
end start

Программу можно взять здесь