powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с написанием переходника с API на COM!
10 сообщений из 10, страница 1 из 1
Помогите с написанием переходника с API на COM!
    #32846717
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть готовая болванка, представляющая из себя dll (см. код)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Implements IInitDone
Private Sub IInitDone_Done()
    Set V7Object = Nothing
End Sub
Private Sub IInitDone_GetInfo(pInfo() As Variant)
    pInfo( 0 ) = "2000"
End Sub
Private Sub IInitDone_Init(ByVal pConnection As Object)
    Set V7Object = pConnection
End Sub
Public Function Message(ByVal Str As String) As Boolean
End Function
а так же есть описание функций MAPI и способы их вызова, но никак не получается их добавить в свой код :(
Вот присмер добавляемой функции:
Код: plaintext
1.
2.
Public Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" (ByVal Session&, ByVal _
UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal _
Reserved&) As Long
После ее объявления, выдается следующая ошибка:
Only comments may apper after end sub, end function, end property
Я не силен в VB, поэтому прошу помочь всех по возможности!
Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32846737
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объявлять надо в секции деклараций класса
Напишите так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Implements IInitDone

Private Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" (ByVal Session&, ByVal _
UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal _
Reserved&) As Long

Private Sub IInitDone_Done()
    Set V7Object = Nothing
End Sub
Private Sub IInitDone_GetInfo(pInfo() As Variant)
    pInfo( 0 ) = "2000"
End Sub
Private Sub IInitDone_Init(ByVal pConnection As Object)
    Set V7Object = pConnection
End Sub
Public Function Message(ByVal Str As String) As Boolean
End Function

...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32846749
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь!
Но теперь с толкнулся с другой ошибкой:
Constants, fixed-lenght strings, arrays, user-defined types and declare statements not allowed as Public members of objects modules!
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32846763
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей84Спасибо за помощь!
Но теперь с толкнулся с другой ошибкой:
Constants, fixed-lenght strings, arrays, user-defined types and declare statements not allowed as Public members of objects modules! правильно, объявляйте их как private
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32846767
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не
Public Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" (ByVal Session&, ByVal _
UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal _
Reserved&) As Long

а

Private Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" (ByVal Session&, ByVal _
UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal _
Reserved&) As Long

см. пост Alexey Kudinov
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32846770
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Alexey Kudinov

:-). Пока писал, Вы уже ответили...
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32847785
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем откликнувшимся, врезультате получил вот такой вот код:
Код: plaintext
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.
Implements IInitDone

Public Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As String
End Type

Public Type MapiFile
Reserved As Long
Flags As Long
Position As Long
PathName As String
FileName As String
FileType As String
End Type

Public Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Flags As Long
RecipCount As Long
FileCount As Long
End Type

Private Declare Function MAPISendMail Lib "MAPI32.dll" Alias "BMAPISendMail" (ByVal Session&, ByVal _
UIParam&, Message As MAPIMessage, Recipient() As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal _
Reserved&) As Long

Private Sub IInitDone_Done()
    Set V7Object = Nothing
End Sub

Private Sub IInitDone_GetInfo(pInfo() As Variant)
    pInfo( 0 ) = "2000"
End Sub

Private Sub IInitDone_Init(ByVal pConnection As Object)
    Set V7Object = pConnection
End Sub

Public Function Message(ByVal RepName As String, ByVal RepAdress As String, _
                        ByVal PathName As String, _
                        ByVal Subject As String, ByVal Text As String, _
                        ByVal flDialog As Long) As Long
    Const MAPI_DIALOG = &H8
    Dim objMsg As MAPIMessage
    Dim objRec() As MapiRecip
    Dim objFile() As MapiFile
    ReDim objRec( 1 )
    ReDim objFile( 1 )

    objFile( 0 ).Reserved =  0 
    If PathName <> "" Then
        objFile( 0 ).Position =  1 
        objFile( 0 ).PathName = PathName
    End If
    
    objRec( 0 ).Reserved =  0 
    objRec( 0 ).RecipClass =  1 
    objRec( 0 ).Name = RepName
    If RepAdress <> "" Then
        objRec( 0 ).Address = "SMTP: " & RepAdress
    End If

    objMsg.Reserved =  0 
    objMsg.Subject = Subject
    objMsg.RecipCount =  1 
    If PathName <> "" Then
        objMsg.FileCount =  1 
    Else
        objMsg.FileCount =  0 
    End If
    objMsg.NoteText = Text
    
    If flDialog Then
        Message = MAPISendMail( 0 ,  0 , objMsg, objRec, objFile, MAPI_DIALOG,  0 )
    Else
        Message = MAPISendMail( 0 ,  0 , objMsg, objRec, objFile,  0 ,  0 )
    End If
End Function

Просто, дешево и сердито!
Теперь вот возник вот такой вот вопрос, если передается пустое значение RepName, то я получаю ошибку, но поидее ее не должно быть, ведь этот год делает тоже самое, что и кнопка создать новое сообщение в почтовике или на яве написано SendTo, и открывается диалоговое окно с вводом данных в письмо, так почему здесь это вызывает ошибку, я никак понять не могу!
Мож кто сталкивался и знает ответ, подскажите плиззззззз....!
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32849185
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди! HELP!
Столкнулся с интересным глюком!
Полученную .dll вызываю из 1С, но при вызове библиотеки пишет что не обнаружен CLASSID хотя компонента работает отлично!
В чем может быть проблема?
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32966524
DimVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться... Есть необходимость отправить email программно. Воспользовался вариантом Сергей84, но !!! у меня постоянно возвращается ошибка MAPI_E_INVALID_RECIPS (25). Адрес живой, потмоу как отправляю на него из Outlook 2003 (используется exchange ) и проверяю в batе...
В чем может быть дело??? Никак не пойму...
...
Рейтинг: 0 / 0
Помогите с написанием переходника с API на COM!
    #32966696
DimVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. У меня ошибка была в следующем
Код: plaintext
1.
2.
3.
4.
5.
 Private Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" _
   (ByVal Session&, ByVal UIParam&, Message As MAPIMessage, Recipient _
   As MapiRecip, File As MapiFile, ByVal Flags&, ByVal Reserved&) As Long
 
Собственно отправка :
MAPISendMail( 0 &,  0 &, objMsg, objRec( 0 ), objFile( 0 ),  0 ,  0 &)

А надо было:

Код: plaintext
1.
2.
3.
4.
5.
 Private Declare Function MAPISendMail Lib "MAPI32.DLL" Alias "BMAPISendMail" _
   (ByVal Session&, ByVal UIParam&, Message As MAPIMessage, Recipient() _
   As MapiRecip, File() As MapiFile, ByVal Flags&, ByVal Reserved&) As Long
 
Собственно отправка :
MAPISendMail( 0 &,  0 &, objMsg, objRec, objFile,  0 ,  0 &)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с написанием переходника с API на COM!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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