SysFn54/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Функция 54 - работа с буфером обмена

Подфункция 0 - узнать количество слотов в буфере обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 0 - номер подфункции

Возвращаемое значение:

  • eax = количество слотов в буфере
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_GET_SLOT_COUNT (0)

Подфункция 1 - считать данные из буфера обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 1 - номер подфункции
  • eсx = номер слота

Возвращаемое значение:

  • eax = если успешно - указатель на область памяти с данными
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Замечания:

  • буфер, на который указывает eax, содержит следующую информацию:
  • +0: dword: общая длина данных
  • +4: dword: определяет тип данныx:
  • 0 = Текст
  • 1 = Текст с блочным выделением
  • 2 = Изображение
  • 3 = RAW
  • 4 и выше зарезервировано
  • +8: более детально смотрите файл clipboard_container_rus.txt
  • Функция должна использоваться совместно с 68.11. Приложение должно
предварительно проинициализировать локальную кучу вызовом 68.11.

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_READ_CB (1)

Подфункция 2 - записать данные в буфер обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 2 - номер подфункции
  • eсx = количество копируемых байт
  • edx = указатель на буфер под копируемые данные

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_WRITE_CB (2)

Подфункция 3 - удалить последний слот с данными в буфере обмена

Параметры:

  • eax = 54 - номер функции
  • ebx = 3 - номер подфункции

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_DEL_SLOT (3)

Подфункция 4 - аварийный сброс блокировки буфера

Параметры:

  • eax = 54 - номер функции
  • ebx = 4 - номер подфункции

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = -1 - отсутствует область главного списка или нет блокировки

Замечания:

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

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_UNLOCK_BUFFER (4)

Содержимое контейнера буфера обмена

1. Первый dword содержит общую длину данных в контейнере

2. Второй dword указывает тип данныx:

0 = Текст
1 = Изображение
2 = RAW
3 = путь для файлового менеджера Eolite
4 и выше зарезервировано

2.1 Текст

Данные в третьем dword содержат тип:
0 = UTF
1 = 0866::
2 = 1251
3 и выше зарезервировано

2.2 Изображение

Третий dword - размер по X
Четвертый dword - размер по Y
Пятый dword - глубина цвета в битах (8, 16, 24, 32, 48, 64)
Шестой dword - Указатель на палитру (смещение от начала файла).
Если палитры нет то значение 0
Седьмой dword - Размер области палитры, максимальное значение 256*4=1024байт.
Если палитры нет то значение 0
Восьмой dword - Указатель на данные пикселей для R, G, B.
Девятый dword - Размер области данных для пикселей.

2.3 RAW

Может содержать любые данные, т.к. содержимое на усмотрение программиста

2.4 Путь для файлового менеджера

В отличии от остальных данных, для файлового менеджера используется word содержащий константу 0x0001, после этого значения находится путь к копируемой директории или файлу