ShellExecute является одной из наиболее гибких функций в Win32 API. С ее помощью можно передавать любое имя файла, а если расширение файла связано с какой-либо из программ, зарегистрированных на машине пользователя, то запускается соответствующее приложение, которое выводит или проигрывает указанный файл.
Здесь мы покажем, как использовать функцию ShellExecute для отправки электронных сообщений. Вы сможете задавать не только адрес получателя, но и списки получателей (CC и BCC), тему и текст сообщения, а также вставлять файл или его часть в отправляемое сообщение. Для этого необходимо создать строковую переменную, добавить список основных адресов (отделенных друг от друга точкой с запятой) и знак вопроса:
для копий CC (Копия): &CC= (список получателей) для невидимых (слепых) копий: &BCC= (список получателей) для темы сообщения: &Subject= (тема сообщения) для текста сообщения: &Body= (текст сообщения) для присоединения файла: &Attach= (путь к файлу, заключенный в кавычки)
Продемонстрируем это на примере. Создайте новый
Рис. 1. шесть текстовых полей и одну командную кнопку cmdSendIt.
Напишите такой код в разделе Declarations:
Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecute" _
(ByVal hWnd As Long, ByVal lpOperation As _
String, ByVal lpFile As String, ByVal _
lpParameters As String, ByVal lpDirectory _
As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL = 1Затем введите следующий код для события Click командной кнопки:
Private Sub cmdSendIt_Click()
Dim sText As String
Dim sAddedText As String
If Len(txtMainAddresses) Then
sText = txtMainAddresses
End If
If Len(txtCC) Then sAddedText = sAddedText & "&CC=" & txtCC
If Len(txtBCC) Then sAddedText = sAddedText & "&BCC=" & txtBCC
If Len(txtSubject) Then _
sAddedText = sAddedText & "&Subject=" & txtSubject
If Len(txtBody) Then _
sAddedText = sAddedText & "&Body=" & txtBody
If Len(txtAttachementFileLocation) Then _
sAddedText = sAddedText & "&Attach=" & Chr(34) & _
txtAttachementFileLocation & Chr(34)
sText = "mailto:" & sText
If Len(sAddedText) <> 0 Then Mid$(sAddedText, 1, 1) = "?"
sText = sText & sAddedText
If Len(sText) Then _
Call ShellExecute(Me.hWnd, "open", sText, _
vbNullString, vbNullString, SW_SHOWNORMAL)
End SubЗдесь следует обратить внимание на два момента:
Тем не менее, используя предложенный здесь способ, вы сможете создавать работающие почтовые аплеты всего за несколько секунд.
| ||||