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

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

первые байты doc: d0 cf 11 e0 a1 b1 1a e1
первые байты msg: d0 cf 11 e0 a1 b1 1a e1
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643568
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какие еще варианты?
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643573
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomaMarusykпервые байты msg: d0 cf 11 e0 a1 b1 1a e1значит msg тоже понятие растяжимое. У меня msg - это простой текстовый файл. Где вы берете свои msg?
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643578
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это письмо с Microsoft Outlook
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643583
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как его сохранить, перерыл весь аутлук - не нашел, как сохранить отдельное письмо в файл
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643593
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
))) (сам долго искал)
я делаю так: создаю новое письмо, потом беру какоето письмо с списка писем и переношу ето мышкой в окошко нового письма, потом правая кнопка мышки сохранить как ...
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643597
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomaMarusyk,
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643611
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда поступать, как тут предлагают
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643623
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо!
как то не находил эту страницу. Вариант с "Word D o c u m e n t" в принцепе подошел б но в файле msg не подобного текста ((
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643672
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел интересную утилитку trid . но мне нужно знать принцип как она работает
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomaMarusykкак то не находил эту страницуопределение файлов по содержимому называется "определение по сигнатуре" или типа того, можете еще погуглить в этом направлении
RomaMarusykно в файле msg не подобного текстаНо что-то там есть. Тут весь вопрос, насколько допустима ошибка определения файла и для чего делается программа - для внутренних нужд организации или для себя, или "на экспорт" и все должно быть серьезно.
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643683
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программка делаеться Shocker.Pro "на экспорт" и все должно быть серьезно.
программа должна открывать файлы, но у некоторых файлов расширение может быть указано неверно или вообще без разширения и по этому нужно узнать его с его же бинарника
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38643691
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда по
RomaMarusyk"Word D o c u m e n t" в принцепе подошел б не подойдет. Надо ковыряться более серьезно, а формат файлов закрытый, спецификация официально не опубликовала, хотя, где-то когда-то попадалась типа самопальная на вордовкие файлы
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38644958
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Спасибо за помощь. Я уже разобрался
...
Рейтинг: 0 / 0
Как отличить файлы msg от doc в НЕХ-коде?
    #38646472
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
Как отличить файлы msg от doc в НЕХ-коде?
    #38650619
Фотография RomaMarusyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й квартал,

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


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