Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как отличить файлы msg от doc в НЕХ-коде? / 18 сообщений из 18, страница 1 из 1
16.05.2014, 13:59
    #38643459
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
Всем привет!
Есть одна проблемка, нужно отличить тип файла msg от doc в НЕХ-коде.
Помогите пожалуйста кто в курсе.
...
Рейтинг: 0 / 0
16.05.2014, 14:12
    #38643489
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
doc - понятие растяжимое.

бинарный doc можно отличить по первым байтам
еще под doc-расширением может скрыватьcя rtf - ну опять же по первым байтам
...
Рейтинг: 0 / 0
16.05.2014, 15:07
    #38643564
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
Shocker.Proбинарный doc можно отличить по первым байтам

первые байты doc: d0 cf 11 e0 a1 b1 1a e1
первые байты msg: d0 cf 11 e0 a1 b1 1a e1
...
Рейтинг: 0 / 0
16.05.2014, 15:09
    #38643568
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
какие еще варианты?
...
Рейтинг: 0 / 0
16.05.2014, 15:13
    #38643573
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
RomaMarusykпервые байты msg: d0 cf 11 e0 a1 b1 1a e1значит msg тоже понятие растяжимое. У меня msg - это простой текстовый файл. Где вы берете свои msg?
...
Рейтинг: 0 / 0
16.05.2014, 15:15
    #38643578
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
это письмо с Microsoft Outlook
...
Рейтинг: 0 / 0
16.05.2014, 15:17
    #38643583
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
а как его сохранить, перерыл весь аутлук - не нашел, как сохранить отдельное письмо в файл
...
Рейтинг: 0 / 0
16.05.2014, 15:20
    #38643593
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
))) (сам долго искал)
я делаю так: создаю новое письмо, потом беру какоето письмо с списка писем и переношу ето мышкой в окошко нового письма, потом правая кнопка мышки сохранить как ...
...
Рейтинг: 0 / 0
16.05.2014, 15:23
    #38643597
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
RomaMarusyk,
...
Рейтинг: 0 / 0
16.05.2014, 15:30
    #38643611
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
ну тогда поступать, как тут предлагают
...
Рейтинг: 0 / 0
16.05.2014, 15:36
    #38643623
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
спасибо!
как то не находил эту страницу. Вариант с "Word D o c u m e n t" в принцепе подошел б но в файле msg не подобного текста ((
...
Рейтинг: 0 / 0
16.05.2014, 16:06
    #38643672
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
нашел интересную утилитку trid . но мне нужно знать принцип как она работает
...
Рейтинг: 0 / 0
16.05.2014, 16:07
    #38643676
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
RomaMarusykкак то не находил эту страницуопределение файлов по содержимому называется "определение по сигнатуре" или типа того, можете еще погуглить в этом направлении
RomaMarusykно в файле msg не подобного текстаНо что-то там есть. Тут весь вопрос, насколько допустима ошибка определения файла и для чего делается программа - для внутренних нужд организации или для себя, или "на экспорт" и все должно быть серьезно.
...
Рейтинг: 0 / 0
16.05.2014, 16:12
    #38643683
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
программка делаеться Shocker.Pro "на экспорт" и все должно быть серьезно.
программа должна открывать файлы, но у некоторых файлов расширение может быть указано неверно или вообще без разширения и по этому нужно узнать его с его же бинарника
...
Рейтинг: 0 / 0
16.05.2014, 16:19
    #38643691
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
тогда по
RomaMarusyk"Word D o c u m e n t" в принцепе подошел б не подойдет. Надо ковыряться более серьезно, а формат файлов закрытый, спецификация официально не опубликовала, хотя, где-то когда-то попадалась типа самопальная на вордовкие файлы
...
Рейтинг: 0 / 0
19.05.2014, 11:25
    #38644958
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
Shocker.Pro,
Спасибо за помощь. Я уже разобрался
...
Рейтинг: 0 / 0
20.05.2014, 14:29
    #38646472
Как отличить файлы msg от doc в НЕХ-коде?
RomaMarusyk,

файлы .doc, .xls, .msg - это данные, сохранённые в виде структурированного хранилища ( structured storage ). Для работы с ними есть соответствующие API.
Вот для примера модуль с функцией, который можно допилить для своих нужд:
Код: vbnet
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.
Option Explicit

Private Const S_OK As Long = 0&

Private Enum STGM
   'Access
   STGM_READ = &H0&
   STGM_WRITE = &H1&
   STGM_READWRITE = &H2&
   'Sharing
   STGM_SHARE_DENY_NONE = &H40&
   STGM_SHARE_DENY_READ = &H30&
   STGM_SHARE_DENY_WRITE = &H20&
   STGM_SHARE_EXCLUSIVE = &H10&
   STGM_PRIORITY = &H40000
   'Creation
   STGM_CREATE = &H1000&
   STGM_CONVERT = &H20000
   STGM_FAILIFTHERE = &H0&
   'Transactioning
   STGM_DIRECT = &H0&
   STGM_TRANSACTED = &H10000
   'Transactioning Performance
   STGM_NOSCRATCH = &H100000
   STGM_NOSNAPSHOT = &H200000
   'Direct SWMR and Simple
   STGM_SIMPLE = &H8000000
   STGM_DIRECT_SWMR = &H400000
   'Delete On Release
   STGM_DELETEONRELEASE = &H4000000
End Enum

Private Declare Function StgOpenStorage Lib "ole32" ( _
   ByVal pwcsName As Long, ByVal pstgPriority As stdole.IUnknown, _
   ByVal grfMode As STGM, snbExclude As Any, ByVal reserved As Long, _
   ppstgOpen As stdole.IUnknown) As Long

Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(0 To 7) As Byte
End Type

Private Declare Function ReadClassStg Lib "ole32" ( _
   ByVal pStg As stdole.IUnknown, _
   pclsid As GUID) As Long
   
Private Declare Function StringFromGUID2 Lib "ole32" ( _
   rguid As GUID, ByVal lpsz As Long, ByVal cchMax As Long) As Long

Public Function CompoundFileType(ByVal FileName As String) As String
 Dim hr As Long
 Dim Stg As stdole.IUnknown
 Dim clsidStg As GUID
 Dim sCLSID As String
 
 hr = StgOpenStorage(StrPtr(FileName), Nothing, _
                     STGM_DIRECT Or STGM_READ Or STGM_SHARE_DENY_WRITE, _
                     ByVal 0&, 0, Stg)
 If hr = S_OK Then
    hr = ReadClassStg(Stg, clsidStg)
    If hr = S_OK Then
       sCLSID = String$(38, 0)
       StringFromGUID2 clsidStg, StrPtr(sCLSID), 39
       Select Case sCLSID
       Case "{00020820-0000-0000-C000-000000000046}"
          CompoundFileType = "Лист Microsoft Office Excel 97-2003"
       Case "{00020900-0000-0000-C000-000000000046}"
          CompoundFileType = "Документ Microsoft Word 6.0-7.0"
       Case "{00020906-0000-0000-C000-000000000046}"
          CompoundFileType = "Документ Microsoft Word 97-2003"
       Case "{00020D0B-0000-0000-C000-000000000046}"
          CompoundFileType = "Сообщение Microsoft Outlook"
       Case Else
          CompoundFileType = "CLSID:" & sCLSID
       End Select
    Else
       CompoundFileType = "Ошибка 0x" & Right$("0000000" & Hex$(hr), 8) & _
                          " при чтении идентификатора класса структурированного хранилища"
    End If
 Else
    CompoundFileType = "Ошибка 0x" & Right$("0000000" & Hex$(hr), 8) & _
                       " при открытии файла структурированного хранилища"
 End If
End Function

Вызов, например:
Код: vbnet
1.
MsgBox CompoundFileType("C:\Temp\fvbfs.msg")
...
Рейтинг: 0 / 0
23.05.2014, 17:59
    #38650619
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отличить файлы msg от doc в НЕХ-коде?
13-й квартал,

Спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как отличить файлы msg от doc в НЕХ-коде? / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]