Difference between revisions of "SysFn54/ru"
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
|||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | '''Функция 54 - работа с буфером обмена | + | '''Функция 54''' - работа с буфером обмена |
=== Подфункция 0 - узнать количество слотов в буфере обмена. === | === Подфункция 0 - узнать количество слотов в буфере обмена. === | ||
Параметры: | Параметры: | ||
− | * eax = 54 - номер функции | + | :* eax = 54 - номер функции |
− | * ebx = 0 - номер подфункции | + | :* ebx = 0 - номер подфункции |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = количество слотов в буфере | + | :* eax = количество слотов в буфере |
− | * eax = -1 - отсутствует область главного списка | + | :* eax = -1 - отсутствует область главного списка |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CLIPBOARD (54) | ||
+ | ::ebx - SSF_GET_SLOT_COUNT (0) | ||
=== Подфункция 1 - считать данные из буфера обмена. === | === Подфункция 1 - считать данные из буфера обмена. === | ||
Параметры: | Параметры: | ||
− | * eax = 54 - номер функции | + | :* eax = 54 - номер функции |
− | * ebx = 1 - номер подфункции | + | :* ebx = 1 - номер подфункции |
− | * eсx = номер слота | + | :* eсx = номер слота |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = если успешно - указатель на область памяти с данными | + | :* eax = если успешно - указатель на область памяти с данными |
− | * eax = 1 - ошибка | + | :* eax = 1 - ошибка |
− | * 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 - записать данные в буфер обмена. === | === Подфункция 2 - записать данные в буфер обмена. === | ||
Параметры: | Параметры: | ||
− | * eax = 54 - номер функции | + | :* eax = 54 - номер функции |
− | * ebx = 2 - номер подфункции | + | :* ebx = 2 - номер подфункции |
− | * eсx = количество копируемых байт | + | :* eсx = количество копируемых байт |
− | * edx = указатель на буфер под копируемые данные | + | :* edx = указатель на буфер под копируемые данные |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = 0 - успешно | + | :* eax = 0 - успешно |
− | * eax = 1 - ошибка | + | :* eax = 1 - ошибка |
− | * eax = -1 - отсутствует область главного списка | + | :* eax = -1 - отсутствует область главного списка |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CLIPBOARD (54) | ||
+ | ::ebx - SSF_WRITE_CB (2) | ||
=== Подфункция 3 - удалить последний слот с данными в буфере обмена === | === Подфункция 3 - удалить последний слот с данными в буфере обмена === | ||
Параметры: | Параметры: | ||
− | * eax = 54 - номер функции | + | :* eax = 54 - номер функции |
− | * ebx = 3 - номер подфункции | + | :* ebx = 3 - номер подфункции |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = 0 - успешно | + | :* eax = 0 - успешно |
− | * eax = 1 - ошибка | + | :* eax = 1 - ошибка |
− | * eax = -1 - отсутствует область главного списка | + | :* eax = -1 - отсутствует область главного списка |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CLIPBOARD (54) | ||
+ | ::ebx - SSF_DEL_SLOT (3) | ||
=== Подфункция 4 - аварийный сброс блокировки буфера === | === Подфункция 4 - аварийный сброс блокировки буфера === | ||
Параметры: | Параметры: | ||
− | * eax = 54 - номер функции | + | :* eax = 54 - номер функции |
− | * ebx = 4 - номер подфункции | + | :* ebx = 4 - номер подфункции |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = 0 - успешно | + | :* eax = 0 - успешно |
− | * eax = -1 - отсутствует область главного списка или нет блокировки | + | :* eax = -1 - отсутствует область главного списка или нет блокировки |
Замечания: | Замечания: | ||
− | * Используется в исключительных случаях, когда зависшее или убитое приложение заблокировало работу с буфером обмена. | + | :* Используется в исключительных случаях, когда зависшее или убитое приложение заблокировало работу с буфером обмена. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CLIPBOARD (54) | ||
+ | ::ebx - SSF_UNLOCK_BUFFER (4) | ||
− | Содержимое контейнера буфера обмена | + | === Содержимое контейнера буфера обмена === |
1. Первый dword содержит общую длину данных в контейнере | 1. Первый dword содержит общую длину данных в контейнере | ||
Line 56: | Line 88: | ||
:1 = Изображение | :1 = Изображение | ||
:2 = RAW | :2 = RAW | ||
+ | :3 = путь для файлового менеджера Eolite | ||
:4 и выше зарезервировано | :4 и выше зарезервировано | ||
Line 78: | Line 111: | ||
2.3 RAW | 2.3 RAW | ||
::Может содержать любые данные, т.к. содержимое на усмотрение программиста | ::Может содержать любые данные, т.к. содержимое на усмотрение программиста | ||
+ | 2.4 Путь для файлового менеджера | ||
+ | :: В отличии от остальных данных, для файлового менеджера используется word содержащий константу 0x0001, после этого значения находится путь к копируемой директории или файлу | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 22:25, 6 September 2022
Функция 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, после этого значения находится путь к копируемой директории или файлу
|