Общесистемный буфер обмена

Internal structure and you change requests/suggestions
  • Это же только кириллица. А как насчет остальных языков? Лучше библиотеку, считаю.
  • Думаю что данный буфер подходящий момент чтобы подправить fn eax=10 eax=11 чтобы они возвращали также и основные параметры событий. Ведь сейчас после ring0->ring3 switch происходит гарантированое и незамедлительное ring3->ring0->ring3

    Сообщение(fn eax=10) о заполненом только-для-чтения буфере(ядро создало его нужного размера) приходит. Обработчик сообщения копирует куда ему надо(mov инструкции). И fn eax=10 выполняют чистку (в даном случае удаляют буфер если ctrl+c была кде-то ещё нажата.
  • Albom wrote: 1) Поместить данные в буфер. Через структуру.
    dd type
    dd size
    dd address
    По-моему, туда еще надо добавить dd custom_type, чтобы получилось:

    Code: Select all

      dd type
      dd custom_type
      dd size
      dd address
    
    В API и callback-функциях обычно предусматривают дополнительное поле, хранящее "пользовательские данные". Вот туда и можно будет класть кодировку для типа CF_TEXT. ОС его никак обрабатывать не будет, а приложениям рано или поздно придется цеплять всякие конверторы, раз проект выходит за рамки Рунета.

    Поле кодировки может заполняться, например, строками '866', 0, или '1251', или 'UTF8', или даже 'Big5' или 'SJIS'. Встанет вопрос о регистре. А можно и числовые коды Windows класть, которые очень продуманны, скажу я вам. Будет преемственность.

    Например, кто из вас знает, что числовые значения всяких STD_INPUT и STD_OUTPUT, прописанные в SDK большинства ОС, мало того что совпадают, так еще и не изменились еще со времен перфокарт и терминального вывода на бумажную ленту? Преемственность.
  • Freeman wrote:По-моему, туда еще надо добавить dd custom_type, чтобы получилось:
    Хорошо для расширяемости.
    Freeman wrote:А можно и числовые коды Windows класть
    А можно и свои числовые коды (0 - 866, 1 - 1251, 2 - utf8, ...) - вполне достаточно. И копировать не придётся.
  • Albom wrote:А можно и свои числовые коды (0 - 866, 1 - 1251, 2 - utf8, ...) - вполне достаточно.
    Ну, это уже известный спор натуральных ключей против искусственных. Спорить не будем.
  • ilya

    Code: Select all

    Ядро создаёт буфер и передаёт во владение приложению. Когда буфер будет ненужен приложение освободит его. Такое технически возможно в даный момент?
    Это то же самое о чём я и писал.
    Нельзя давать право приложению дёргать ф-цию для чтения буфера когда хочет. Только когда пользователь нажал ctrl+c в одном окне и ctrl+v вдругом.
    А ещё когда пользователь выдрал пункт в меню, а ещё когда нажал кнопочку "Скопировать" и т.д. Не надо вводить ненужные ограничения. Ни в одной системе этого нет. Есть устоявшийся набор правил и все их применяют.
  • Приложение должно иметь доступ к буферу обмена если пользователь этого захотел. Как ты это собираешся определять?
    Иначе приложение прочитает любую инфу не предназначеную для него, по таймеру, чем меньше промежуток тем лучше.
    С остальным согласен, только, ядро никогда его не увеличит буфер, потому как посылающие приложение знает истиный размер и соответсвено его передаст.
  • Приложение должно иметь доступ к буферу обмена если пользователь этого захотел. Как ты это собираешся определять?
    Так, как и везде. В обработчике событий от клавиатуры. В приложении разумеется.
    Last edited by Serge on Tue Dec 11, 2012 2:13 am, edited 1 time in total.
  • Так как и везде. В обработчике событий от клавиатуры. В приложении разумеется.
    Опрос по таймеру попрежнему возможен так понимаю.
  • Serge wrote:И про кодировку текста. Использовать unicode или нет ?
    Я за принудительную UTF8-изацию вообще всего.
    Сделаем мир лучше!
  • CleverMouse wrote:Я за принудительную UTF8-изацию вообще всего.
    Я тоже.
  • CleverMouse wrote: Я за принудительную UTF8-изацию вообще всего.
    думаю многие за это
    to infinity and beyond
  • ilya wrote:Опрос по таймеру по прежнему возможен так понимаю.
    Оно нигде не запрещено. Вопрос зачем ?
    Я за принудительную UTF8-изацию вообще всего.
    Кодировка переменной длины неудобна в обработке. Да и какой смысл, кириллица и всё не латинское ведь всё равно будет двумя байтами кодироваться.

    Code: Select all

    Unicode UTF-8:
    0x00000000 — 0x0000007F: 0xxxxxxx
    0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx
    0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
    0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    . На цифрах и пробелах сэкономим немного и только.
  • Дело не в экономией. UTF-8 обратно совместима с ANSI. (например FASM прекрасно компилирует UTF-8 исходник с кириллических текстах внутри) Большая часть кода не меняется вообще.
    А UTF-16, если обрабатывать правильно на самом деле тоже является переменной длины и тоже неудобна в обработке.
  • Who is online

    Users browsing this forum: No registered users and 5 guests