|
|
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Дано. Открыто приложение Microsoft Outlook, в нём открыто письмо с двумя приаттаченными файлами. Пользователь выделяет эти два приаттаченных файла и нажимает кнопку "копировать" или ctrl+C. Если он сейчас перейдёт в проводник и нажмёт ctrl+V, то в каталог вставятся эти два файла. Мне, в своей программе надо понять, что в буфере обмена находятся два файла (или сколько было скопировано) и по нажатию на свою кнопку, сохранить их в свой каталог. Что было для этого проделано. С помощью вот этого кода: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. я получил, что содержится в буфере: DataObject clipboard format: 49161 FileGroupDescriptorW clipboard format: 49395 FileGroupDescriptor clipboard format: 49394 RenPrivateItem clipboard format: 49912 FileContents clipboard format: 49393 Ole Private Data clipboard format: 49171 Далее, при помощи такого кода Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Я пытаюсь нащупать путь работы с содержимым. Но при этом не могу понять, в каком формате буфера хранятся эти файлы, и как мне их обработать. Буду признателен, если кто-нибудь подскажет, что и где копать. С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 15:56 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
ShurakenБуду признателен, если кто-нибудь подскажет, что и где копать. https://msdn.microsoft.com/en-us/library/windows/desktop/bb776905(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 16:50 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shuraken, Как-то так: Код: pascal 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. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 16:52 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо Wadman, Aniskin. То, что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 17:05 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, благодарю за код, но возникла какая-то непонятка. Вываливаюсь на попытке получить данные Код: pascal 1. - "ошибка в структуре FORMATETC". Причём заголовки файлов видны, но содержимого нет. Причём проверку через функцию ContainFormat(DataObject, CF_FILECONTENTS, TYMED_ISTREAM) с отрицательным индексом проходит нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:55 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shuraken, В какой строке ошибка? Код ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:58 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:04 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Ошибку выдаёт OleCheck - "ошибка в структуре FORMATETC" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:06 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shuraken, Мне лень ставить Outlook для экспериментов. Поэтому эксперименты (три штуки) ставь сам. Замени в строке Код: pascal 1. значение TYMED_ISTREAM на 1) TYMED_HGLOBAL 2) TYMED_FILE 3) TYMED_ISTORAGE В каких ситуациях ошибки в строке OleCheck(ADataObject.GetData(Format, Medium)) не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:15 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, везде ошибка. Посмотрел, что содержится в FileDescriptor, оказалось, что только название файла и всё, другой информации нет. Попробую копать в другом месте. Благодарю за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 15:35 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shuraken, Специально установил Outlook (2007) - у меня мой исходный код работает корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 16:13 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
ShurakenПосмотрел, что содержится в FileDescriptor, оказалось, что только название файла и всё, другой информации нет.А другая информация там НЕ обязана быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 16:15 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, здорово. Можете взглянуть, у Вас такой код работает? С уважением, Александр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 16:59 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shuraken, В какой версии Delphi пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 17:09 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, Delphi 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 17:39 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
ShurakenDelphi 7Вот тут то собака и порылась. Обнови код: Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 18:09 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, шикарно. Благодарю. С меня пиво (если пьёшь его, конечно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:10 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Продолжая тему, столкнулся со следующей проблемой. Всё хорошо, когда копируешь файлы в буфер обмена, и затем вставляешь их куда требуется. Но вышеприведённый способ не сработал, когда я стал копировать не приаттаченные файлы из Outlook-а, а само сообщение с приаттаченными файлами, чтобы сохранить его на диск. Немного покопавшись, понял, что с сообщениями Outlook надо работать не через IStream, а через IStorage. Взяв за основу код, любезно предоставленный Aniskin-ым, попытался сохранить сообщение следующим образом. (Весь код целиком, красным выделена работа для сообщений Outlook) Код: pascal 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. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. В результате файл сохраняется на диск, но он в несколько раз меньшего размера. То есть, если я копирую сообщение в буфер обмена и просто вставляю его в проводнике, то оно весит, скажем, 100 Кб. Если же я это делаю через код, то оно весит 25 Кб, и, естественно, открыть его нельзя. И почему так получается, мне непонятно. Может кто-нибудь подсказать, где искать потерянную часть данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 12:49 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shurakenгде искать потерянную часть данных? Вот и второе пиво я заработал: Код: pascal 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. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 14:04 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Aniskin, благодарю. Пиши, куда высылать пиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 14:43 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Shurakenкуда высылать пиво. Ящик наберется, тогда и вышлешь, сэкономишь на транспортных расходах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2016, 15:03 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Всем, привет. Ребята, подскажите. Когда выполняю процедуру SaveClipboardToDir('d:\') то в эту директорию копируются пустые файлы. Подскажите, что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 12:06 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
Немного разобрался... В команде SourceStream.CopyTo(DestStream, 0, Read, Written); значение 0 является размером копируемого файла. Как подставить сюда размер файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 13:05 |
|
||
|
Взаимодействие с Microsoft Outlook
|
|||
|---|---|---|---|
|
#18+
SourceStream.Size ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39252081&tid=2040228]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 477ms |

| 0 / 0 |
