Документация формата буфера обмена в календаре Outlook? - PullRequest
1 голос
/ 11 июля 2019

Короткая версия

Существует ли какая-либо документация по формату буфера обмена Outlook RenPrivateAppointment, используемая для передачи встреч?

Длинная версия

В качестве напоминания, для всего, что находится в буфере обмена, исходное приложение может представить вам данные в различных форматах. Получатель может просмотреть список по порядку и решить, какой формат он понимает лучше всего.

В случае моей встречи с Outlook, форматы:

  • 0: "RenPrivateSourceFolder" (IStream)
  • 1: "RenPrivateMessages" (IStream)
  • 2: "RenPrivateItem" (HGlobal)
  • 3: "FileGroupDescriptor" (HGlobal)
  • 4: CFSTR_FILEDESCRIPTOR (HGlobal)
  • 5: CFSTR_FILENAME (Файл)
  • 6: CFSTR_FILECONTENTS (IStream, IStorage)
  • 7: "Object Descriptor" (HGlobal)
  • 8: "RenPrivateAppointment" (IStream)
  • 9: CF_TEXT (HGlobal)
  • 10: CF_UNICODETEXT (HGlobal)

Глядя на содержимое различных форматов, наиболее перспективным выглядит формат RenPrivateAppointment :

01 00 00 00 C0 C8 1E 0D   60 CE 1E 0D 01 00 00 00    ....ÀÈ.`Î......
6A CB 1E 0D 79 CB 1E 0D   41 00 00 00 41 73 6B 20    jË..yË..A...Ask 
71 75 65 73 74 69 6F 6E   20 61 62 6F 75 74 20 61    question about a
70 70 6F 69 6E 74 6D 65   6E 74 20 63 6C 69 70 62    ppointment clipb
6F 61 72 64 20 66 6F 72   6D 61 74 20 6F 6E 20 53    oard format on S
74 61 63 6B 6F 76 65 72   66 6C 6F 77 00 02 00 00    tackoverflow...
00 02 00 00 00 18 00 00   00 00 00 00 00 BC B9 6E    ............¼¹n
9C 12 F8 D3 43 AC B7 74   81 5E F0 3D FC 04 D2 97    œ.øÓC¬·t.^ð=ü.Ò—
00 00 00 00 00 00 00 00   00 02 00 00 00 00 00 00    ...............
00 01 00 00 00 00 00 00   00 00 00 00 00 00 00 00    ................
00 FF 92 81 02 41 00 73   00 6B 00 20 00 71 00 75    .ÿ’.A.s.k. .q.u
00 65 00 73 00 74 00 69   00 6F 00 6E 00 20 00 61    .e.s.t.i.o.n. .a
00 62 00 6F 00 75 00 74   00 20 00 61 00 70 00 70    .b.o.u.t. .a.p.p
00 6F 00 69 00 6E 00 74   00 6D 00 65 00 6E 00 74    .o.i.n.t.m.e.n.t
00 20 00 63 00 6C 00 69   00 70 00 62 00 6F 00 61    . .c.l.i.p.b.o.a
00 72 00 64 00 20 00 66   00 6F 00 72 00 6D 00 61    .r.d. .f.o.r.m.a
00 74 00 20 00 6F 00 6E   00 20 00 53 00 74 00 61    .t. .o.n. .S.t.a
00 63 00 6B 00 6F 00 76   00 65 00 72 00 66 00 6C    .c.k.o.v.e.r.f.l
00 6F 00 77 00 00 00 01   00 00 00 00 00 FF FF FF    .o.w.........ÿÿÿ
FF                                                   ÿ

Часть этого можно интерпретировать:

Формат буфера обмена "RenPrivateAppointment"

01 00 00 00               ; always 0x00000001 (Version 1?)
C0 C8 1E 0D               ; Start day of appt.  minutes from 1/1/1601 0x0D1EC8C0 = 220,121,280 minutes = 7/11/2019 12:00 am
60 CE 1E 0D               ; End   day of appt.  minutes from 1/1/1601 0x0D1ECE60 = 220,122,720 minutes = 7/12/2019 12:00 am
01 00 00 00               ; 0x00000001 (fixed)
6A CB 1E 0D               ; Start of appt.      minutes from 1/1/1601 0x0D1ECB6A = 220,121,962 minutes = 7/11/2019 11:22 am
79 CB 1E 0D               ; End of appt.        minutes from 1/1/1601 0x0D1ECB79 = 220,121,977 minutes = 7/11/2019 11:37 am

                          ; "Ask question about appointment clipboard format on Stackoverflow.\0"  
41 00 00 00               ; String length prefix, including null terminator (0x00000041 = 65 characters)
41 73 6B 20 71 75 65 73     Ask ques
74 69 6F 6E 20 61 62 6F     tion abo
75 74 20 61 70 70 6F 69     ut appoi
6E 74 6D 65 6E 74 20 63     ntment c
6C 69 70 62 6F 61 72 64     lipboard
20 66 6F 72 6D 61 74 20      format 
6F 6E 20 53 74 61 63 6B     on Stack
6F 76 65 72 66 6C 6F 77     overflow
00                          .

02 00 00 00               ; 0x0000002 = 2
02 00 00 00               ; 0x0000002 = 2

18 00 00 00               ; 0x00000018 = 24
00 00 00 00               ; 0x00000000 = 0
BC B9 6E 9C 12 F8 D3 43   ; always
AC B7 74 81 5E F0 3D FC   ; always
04 D2 97 00               ; varies (~32 ticks per day)  0x0097D204 = 9,949,700

00 00 00 00 
00 00 00 00 

02 00 00 00               ; 0x00000002 = 2
00 00 00 00 
01 00 00 00               ; 0x00000001 = 1
00 00 00 00 
00 00 00 00 
00 00 00 00 
FF 92 81 02               ; always 0x028192FF   

                          ; N"Ask question about appointment clipboard format on Stackoverflow\0"
41 00 73 00 6B 00 20 00 71 00 75 00 65 00 73 00    A.s.k. .q.u.e.s.
74 00 69 00 6F 00 6E 00 20 00 61 00 62 00 6F 00    t.i.o.n. .a.b.o.
75 00 74 00 20 00 61 00 70 00 70 00 6F 00 69 00    u.t. .a.p.p.o.i.
6E 00 74 00 6D 00 65 00 6E 00 74 00 20 00 63 00    n.t.m.e.n.t. .c.
6C 00 69 00 70 00 62 00 6F 00 61 00 72 00 64 00    l.i.p.b.o.a.r.d.
20 00 66 00 6F 00 72 00 6D 00 61 00 74 00 20 00     .f.o.r.m.a.t. .
6F 00 6E 00 20 00 53 00 74 00 61 00 63 00 6B 00    o.n. .S.t.a.c.k.
6F 00 76 00 65 00 72 00 66 00 6C 00 6F 00 77 00    o.v.e.r.f.l.o.w.
00 00                                              ..

01 00                     ; padding to DWORD

00 00 00 00 
FF FF FF FF               ; footer

Существует ли какая-либо документация по RenPrivateAppointment или любым другим другим форматам, которые позволят пользователю расширенные взаимодействия?

Примечание : Это не автоматизация Outlook. Это обрабатывает IDataObject, помещенный в буфер обмена Outlook. Я хочу получить:

  • время начала
  • время окончания
  • описание

Смотри также

Ответы [ 2 ]

1 голос
/ 11 июля 2019

На GitHub есть проект, который анализирует формат буфера обмена RenPrivateAppointment: https://github.com/yasoonOfficial/outlook-dndprotocol

0 голосов
/ 11 июля 2019

Формат RenPrivateAppointment не задокументирован.Вы можете прочитать об этом в DragDrop Event в ветке календаря Outlook , в которой есть официальный комментарий от члена команды VSTO.Кроме того, вы можете взглянуть на страницу Drag and Drop с Outlook .

...