Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: filat18 от 23-06-2022, 07:01:43

Название: Что Inventor отправляет в буфер обмена?
Отправлено: filat18 от 23-06-2022, 07:01:43
С среде сборки пользователь выделяет элемент и нажимает CTRL+C.
Какой тип данных оказывается в буфере обмена?
Основной вопрос: как из буфера получить FullFileName этого элемента?
Название: Re: Что Inventor отправляет в буфер обмена?
Отправлено: mikazakov от 24-06-2022, 07:09:45
По всей видимости, в Инвенторе какой то свой буфер обмена, потому что в виндоуз 10 инвенторовский буфер не виден.
Название: Re: Что Inventor отправляет в буфер обмена?
Отправлено: filat от 07-08-2022, 09:39:10
Буржуи дали недоответ на поставленный вопрос - кому интересно, можете поискать исходник на форуме Доски...
Я, как в том анекдоте: "...после сборки, Обработать! напильником...", допилил в меру своего понимания, авось кому поможет:
Код - vb.net [Выбрать]
  1.                 'Get clipboard data format
  2.                 Dim cbData = Clipboard.GetDataObject()
  3.                 Dim getFormats As String() = cbData.GetFormats()
  4.                 'Expected content
  5.                 'mstgCF_ComponentSelection = selected occurrence
  6.                 'Get data in readable format
  7.                 Dim getData As Object = cbData.GetData("mstgCF_ComponentSelection")
  8.                 Dim memStream As MemoryStream = getData
  9.                 Dim memStreamArray As Byte() = memStream.ToArray()
  10.                 Dim decoded = Encoding.Unicode.GetString(memStreamArray) ' в исходнике ASCII, но в нем кириллица идет лесом...
  11.                 Dim decodedWithoutNullChars = decoded.Replace(vbNullChar, "")
  12.                 oText = decodedWithoutNullChars.ToString
  13.                 oText = Microsoft.VisualBasic.Left(oText, InStr(oText, "|") - 1)
  14.                 oText = Mid(oText, InStr(oText, ":\") - 1, Len(oText))
  15.                 If Not IO.File.Exists(oText) Then
  16.                     oText = My.Computer.Clipboard.GetText
  17.                 End If