Jump to content

Вставка текста из буфера обмена в dxeditbox


Recommended Posts

@alastair2k17, к вам встречный вопрос точно такой же. Как там сделали?

Можно подставить поле ввода стандартного гуи, при этом можно поверх этого гуи нарисовать свое dx функциями. Далее человек после активации этого невидимого гуи(видимым оно не обязано при этом становиться), человек должен нажать ctrl+v, и вы сможете ессно считать из того gui текст, и написать в своем. Если гуи не скрыто то возможно сделать распознавание, но это вариант теоретический и никому не нужный.

Любые другие варианты насколько я понимаю, слежка, воровство, и наверное стоит обратиться непосредственно к MTA Team, дабы они знали об этом, дали соответствующую оценку и при необходимости пресекли подобные действия в будущем.

Link to comment

@alastair2k17, я не говорил о том что нужно делать особый gui-элемент, я говорил о том что он, не обязан становиться видимым пользователю. Невидимым его должно было сделать, наложенное сверху dxgui. Без такого костыля, содержимое буфера обмена вряд ли удастся получить. Конечно при каких-то багах или недоработках, стандартное окно ввода может вылезти наружу. Тут уж ничего не поделаешь, красоты требуют жертв, и уже каждому выбирать каких, то ли расстроенных игроков, то ли более тщательной проработки, тестов, а следовательно и времени.

Для реального проекта, я бы задался вопросом, а надо ли? Многие же и иначе решают задачу, делая интерфейс браузером, не всё конечно, но вот то что прямо таки является окнами, вполне нормально.

Link to comment
  • 4 weeks later...

Сталкивался с подобной проблемой, решение костыльное но рабочее

Вырезал сразу код из своего чата для понимания логики

CLIPBOARD = guiCreateEdit(1.1,1.1, 0.0001,0.0001,'',true)
guiSetEnabled(CLIPBOARD,false)

if key == 'v' and getKeyState('lctrl') then
  if isTimer(self.clipTimer) then
    return
  end
  guiSetText(CLIPBOARD,'')
  guiSetEnabled(CLIPBOARD,true)
  guiBringToFront(CLIPBOARD)
  self.clipTimer = setTimer(function()
      self.text = self.text..guiGetText(CLIPBOARD)
      self.carretIndex = utf8.len(self.text)
      guiSetText(CLIPBOARD,'')
      self.clipTimer = false
    end,50,1)
  guiSetEnabled(CLIPBOARD,false)
  return
end

 

  • Like 1
Link to comment
55 minutes ago, Dr.Deft said:

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

Это типо копирует в буффер? Или как? Т.е выполняет действие Ctrl+C?)))

Edited by alastair2k17
Link to comment
5 minutes ago, alastair2k17 said:

Это типо копирует в буффер? Или как? Т.е выполняет действие Ctrl+C?)))

Да.  Это что то типо CTRL+C

1 hour ago, Space_Unicorn said:

>В смысле ставка вашего текста В буфер обмена?
>setClipboard


не знаю, как можно было понять это по другому

 

Автору нужно не вставить в буфер, а получить из него

Link to comment

@Dr.Deft, то что автору нужно получить, было сразу понятно.

И на это ответил @TheNormalnij, что прямую функцию не создавали, в виду того что тогда буффер обмена становится небезопасным.

Но при этом игрок может вставить нажатием ctrl-v в любое стандартное гуи, будь то хоть меню мта, хоть созданное на конкретном игровом сервере. Наделить кастомное поле ввода таким свойством нельзя. Но т.к. главная цель кастомного гуи обычно визуальное отличие от стандартного, то можно создать стандартное поле ввода, и останется лишь спрятать его и активировать ввод в него когда активируется ввод в кастомное поле.

Причем @Space_Unicorn сделал одно стандартное поле ввода в своем коде и ждет когда будет нажата ctrl-v. Я же предлагал просто прятать под каждое поле ввода, стандартное, что может быть и хуже. Но с другой стороны, активировать ввод можно при активации кастомного поля, а не тогда когда будет нажата ctrl-v, что я и предполагал в своем первом ответе, может быть это будет в чем-то лучше, может быть и хуже, тут уже по месту надо смотреть, но этот вариант может вообще упростить работу с кастомными полями ввода.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...