Страница 2 из 2

Копирование физического файла с диска в буфер обмена

Добавлено: 20 Июнь 2025, 12:12
NewUser
Вот ещё довесок к раннее приведенному Дипсиком коду:
Поддержка Unicode
Если нужна поддержка Unicode (для путей в UTF-16), замените:

DragQueryFileA → DragQueryFileW
fWide = FALSE → fWide = TRUE

Этот код должен работать в Clarion 6, 7, 10 и других версиях. Если что-то не работает, проверьте:
• Подключены ли CWINDOWS.INC и CSHELL.INC.
• Корректность пути к файлу (лучше использовать абсолютный путь).

Копирование физического файла с диска в буфер обмена

Добавлено: 20 Июнь 2025, 12:18
NewUser
finsoftrz писал(а): 20 Июнь 2025, 12:11 Я бы не очень обращал внимание на то, что пишет Дипсик.
Всё верно! Так и есть. Но:
а) он подтвердил негативный эмпирический опыт по невозможности вставки пути к файлу в некоторые программы для их прикрепления;
б) выдает вполне структурированный (и проверенный, что не мало важно - Дедом Пахомом) код, который можно уже самому править с точки зрения знания синтаксиса, если есть, конечно, знание и опыт (за которым я, собственно, и обратился к сообществу, раз уж нет готового решения "под ключ").

Копирование физического файла с диска в буфер обмена

Добавлено: 20 Июнь 2025, 12:26
finsoftrz
Если есть знание и опыт, код быстрее написать, чем вникать в ту чепуху, которую дает Дипсик. ИИ это сейчас скорее для начинающих программистов, чтобы уменьшить отвлечение более квалифицированных на их обучение. Со временем будет, видимо, наращивать свои базы знаний. Но это не про кларион, он слишком мало распространен. И среди кларионистов хватает модных старперов, которые будут его учить чему-то нехорошему. :lol:

Копирование физического файла с диска в буфер обмена

Добавлено: 30 Сентябрь 2026, 8:09
Игорь Столяров
Всем привет !

Меня тоже заставили сделать отправку файла с счетом через буфер обмена в MAX (-ик) . :D
Для записи данных в ClipBoard юзаю класс из библиотеки FreeImage и методы из класса АТОЛ.
А чего добру пропадать если уже всё сделано ? Не принципиально, здесь главное заполнить структуру данных.

Код: Выделить всё

LinkToClipBoard  Procedure(String sFileName)
cb            SaClipboardClass  ! Работа с ClipBoard из FreeImage
loc_W         &WINDOW
cbText        UnSigned,Auto
hDropStruct   Group
pFiles          Long   ! offset from here to FileList
pt              Group
pt_x              Long
pt_y              Long
                end
fNC             Long
fWide           Long   
FileList        String(File:MaxFileName * 2)
              end
  Code
  loc_W &= Null
  If cb.OpenClipboard(loc_W) = True
     
     Clear(hDropStruct.FileList)
     hDropStruct.pFiles   = 20 ! 14h 
     hDropStruct.fWide    =  1   
     hDropStruct.filelist = Atol::ASCIIToUnicode(sFileName) & '<0,0>'
    
     cbText = 20 + (Len(Clip(sFileName)) * 2) + 3

     If cb.SetClipboard(Address(hDropStruct), cbText, SA_CF_HDROP)
        Atol::FastMess(1,'Выполните вставку ссылки в MAX<13,10>Клавиши: CTRL + V')
     end   

     cb.CloseClipboard()     
  else
     Atol::FastMess(3,'Нет доступа к буферу обмена Windows !')
  end