|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с буфером обмена
Народ! помогите пожалуйста найти человека который очень хорошо разбирается с Буфером Обмена!
нужно срочно разобраться с этим кодом: Код:
MS:=TMemoryStream.Create; if OpenClipboard(0) then begin CBFList:=TList.Create; CBF:=0; repeat CBF:=EnumClipboardFormats(CBF); if CBF<>0 then CBFList.Add(Pointer(CBF)); until CBF=0; if CBFList.Count>0 then begin Temp:=CBFList.Count; MS.Write(Temp,SizeOf(Integer)); for I:=0 to CBFList.Count-1 do begin H:=GetClipboardData(Cardinal(CBFList[i])); if H>0 then begin CBBlockLength:=GlobalSize(H); if H>0 then begin P:=GlobalLock(H); if P<>nil then begin Temp:=Cardinal(CBFList[i]); MS.Write(Temp,SizeOf(Cardinal)); MS.Write(CBBlockLength,SizeOf(Cardinal)); MS.Write(P^,CBBlockLength); end; GlobalUnlock(H); end; end; end; end; CBFList.Free; CloseClipboard; end; кто понимает что тут? нужно кое что добавить.. от меня бонусы =) есть на форуме специалисты? |
#2
|
|||
|
|||
ну и что тут понимать?
Код берет все зарегистрированные для буфера обмена форматы и потом пытается получить данные по этим форматам. Сохраняет это все в памяти. Не совсем понятно зачем весь этот компот, т.к. вроде в стандартном буффере данные могут лежать только в одном формате, хотя с тех пор, когда я работал последний раз с cb уже может что и поменялось и теперь там можно сразу несколько разных данных хранить в разных форматах... хотя сомневаюсь я в этом - иначе бы многие старые прогрммы с ума бы сошли... |