purebasic.info

PureBasic forum
Текущее время: Вт янв 16, 2018 2:19 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 8:05 am 
Не в сети
доцент

Зарегистрирован: Сб янв 28, 2012 12:38 pm
Сообщений: 43
Откуда: Russia
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Првиет ребят, назрел очередной вопрос, на этот раз по работе с буфером обмена. Хочу отслеживать изменения в нем. Сам вопрос такой - есть ли в PB штука, которая запомнит в какую-нибудь переменную то что было до. Объясняю: В буфере обмена у меня находится цифра 2, затем я копирую в буфер цифру 3. Хочу сравнивать до и после, то есть сравнить что 2 <> 3. Как запомнить цифру 2 чтобы в дальнейшем ее сравнить с новым значением ??? Спасибо!

_________________
123


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 8:23 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Считать из буфера и присвоить переменной
Код:
1
OldNumber = Val (GetClipboardText ())


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 8:31 am 
Не в сети
доцент

Зарегистрирован: Сб янв 28, 2012 12:38 pm
Сообщений: 43
Откуда: Russia
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Никита Однороб писал(а):
Считать из буфера и присвоить переменной
Код:
1
OldNumber = Val (GetClipboardText ())


У меня оно 0 возвращает, в буфере полно всего
делаю Debug OldNumber
в буфере может быть текст и что-то еще, хочу сравнивать и стринги и тексы и все что там есть в том и смысл, не могу запомнить предыдущее значение которое было занесено в буфер обмена

_________________
123


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 9:26 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Ну так вы ж сказали, что вам число надо сравнивать. Тогда так:
Код:
1
OldText.s = GetClipboardText ()


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 10:27 am 
Не в сети
профессор

Зарегистрирован: Вт ноя 08, 2011 10:17 am
Сообщений: 578
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ну тады надо переходить на уровень системного апи.
Проверять в каком формате хранятся данные в буфере, потом получать эти данные и сравнивать с предыдущими значениями того же типа.

Чтобы отслеживать изменения, то по правильному надо встраиваться в цепочку обработки изменений буфера обмена. По неправильному - получать данные по таймеру, например, с частотой раз в полсекунды. Тут тоже стоит сначала узнать какие именно данные хранятся в буфере, чтобы не дергать "тяжелые" объекты типа файлов, OLE объектов и т.п.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 3:14 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Никита все правильно сказал
Где-то на форуме валяются сырки как работать с буфером обмена, вроде даже я кодил и выкладывал хе-хе. Но это все было давно и в теме "Разные вопросы", сходите, поищите ...

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Сб июл 05, 2014 5:21 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2241
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
Пункты репутации: 11
pablov писал(а):
Где-то на форуме валяются сырки как работать с буфером обмена, вроде даже я кодил и выкладывал хе-хе. Но это все было давно и в теме "Разные вопросы", сходите, поищите ...

Возможно оно:
viewtopic.php?f=8&t=3609

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Вс июл 06, 2014 9:50 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
qpAHToMAS писал(а):
Возможно оно:

Возможно, но не оно , там вроде файлы через буфер передавались, но была вся эта байда в разных вопросах, попробуйте найдите :?

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Пн июл 07, 2014 6:27 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Вот, откопал у себя на харде это для файлов

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Structure MYFILES 
   namefile.s
   lenname.b
 EndStructure
 
 Global NewList files.MYFILES()
 
 If OpenWindow(0, 250, 200, 700, 500, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
       ListIconGadget(0, 7, 5, 700, 430, "Файл", 500, #PB_ListIcon_FullRowSelect)
       AddGadgetColumn(0, 1, "Длинна имени", 185)
       ButtonGadget(1, 560, 460, 120, 25, "Копировать в буфер")
       DragAcceptFiles_(WindowID(0), #True)
   Repeat
     Select WaitWindowEvent()
       Case #PB_Event_Gadget
         EventGadget = EventGadget()
         If EventGadget = 1
          If OpenClipboard_(0)
             EmptyClipboard_()
             *df.DROPFILES
             hGlobal.l
             iLen = 0
             n = 0          
             FirstElement(files())
             For i = 0 To ListSize(files()) - 1     ; В этом цикле узнаем длинну всех путей файлов, прибавляя ноль между ними
                iLen = iLen + files()\lenname
                NextElement(files())
             Next i
             *mem = AllocateMemory(iLen)
             FirstElement(files())
             For i = 0 To ListSize(files()) - 1     ; В этом цикле записываем имена всех файлов в память
                PokeS(*mem + n, files()\namefile)
                n + files()\lenname              
                NextElement(files())
             Next i
             hGlobal = GlobalAlloc_(#GMEM_SHARE | #GMEM_MOVEABLE | #GMEM_ZEROINIT, SizeOf(DROPFILES) + iLen)
             *df = GlobalLock_(hGlobal)
             *df\pFiles = SizeOf(DROPFILES)
             MoveMemory(*mem, *df + SizeOf(DROPFILES), iLen )   ; переправляем пути файлов в в залоченную область памяти, отступая на размер DROPFILES
             SetClipboardData_(#CF_HDROP, hGlobal)
             FreeMemory(*mem)
             CloseClipboard_()
          EndIf    
         EndIf
       Case #PB_Event_CloseWindow
         Break
       Case #WM_DROPFILES
         ClearGadgetItems(0)
         *hDrop = EventwParam()
         If DragQueryPoint_(*hDrop, @p.POINT)
           count = DragQueryFile_(*hDrop, $FFFFFFFF, #NULL$, #Null)
           For i = 0 To count - 1
             nBytes.l = DragQueryFile_(*hDrop, i, #Null, #Null) + SizeOf(Character)
             file.s = Space(nBytes)
             DragQueryFile_(*hDrop, i, @file, nBytes)
             AddGadgetItem(0, -1, file + Chr(10) + Str(Len(file) + 1))
             AddElement(files())
               files()\namefile = file
               files()\lenname  = Len(file) + 1
           Next
           DragFinish_(*hDrop)
         EndIf
     EndSelect
   ForEver
 EndIf


_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Пн июл 07, 2014 6:42 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Это ты для моего ФМ кодил :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Пн июл 07, 2014 7:58 pm 
Не в сети
профессор

Зарегистрирован: Вт ноя 08, 2011 10:17 am
Сообщений: 578
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
а при чём тут файлы? разве изначально спрашивали про файлы? или всё равно до них дойдет? ;)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Вт июл 08, 2014 1:41 am 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
А вас никонико жаба душит
Пардон, не удержался
Извините

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Последний раз редактировалось pablov Вт июл 08, 2014 9:00 am, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Вт июл 08, 2014 6:46 am 
Не в сети
профессор

Зарегистрирован: Вт ноя 08, 2011 10:17 am
Сообщений: 578
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
pablov писал(а):
А вас никонико жаба душит


по какому поводу это она меня душит? ;)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Вт июл 08, 2014 7:22 am 
Не в сети
доцент

Зарегистрирован: Сб янв 28, 2012 12:38 pm
Сообщений: 43
Откуда: Russia
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем спасибо за ответы, но я пошел немного другим путем, вспомнил про массивы, даже по моему работает как надо )

_________________
123


Последний раз редактировалось dasksting Пн окт 10, 2016 9:02 am, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с буфером обмена
СообщениеДобавлено: Вт июл 08, 2014 7:37 am 
Не в сети
профессор

Зарегистрирован: Вт ноя 08, 2011 10:17 am
Сообщений: 578
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
жестоко!

что там загрузка процессора показывает? ах да.. delay(5000), у меня за 5 сек содержимое буфера может несколько раз поменяться ;)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB