Newsgroup: it.comp.lang.visual-basic
Titolo: lanciare il programma di posta predefinito

Come faccio da un programma a lanciare il programma di posta elettronica
predefenito configurato sul pc dell'utente?
Grazie

 predefenito configurato sul pc dell'utente?
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (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
Public Sub MailTo(sMailAddress As String)
    Dim iRet As Long
    Screen.Mousepointer = VbHourGlass
    iRet = ShellExecute(MDIfrmMain.hwnd, vbNullString, "mailto:" &
sMailAddress, vbNullString, "c:\", 1)
    Screen.MousePointer = vbDefault
End Sub
...incompleto a livello di controllo ma funzionante.
ciao
ugo

Questa non è la soluzione corretta: in questa maniera si invia una nuova
mail, io invece volevo APRIRE il programma di posta elettronica predefinito


Renato, te lo diremo dopo le 17:30
Hai notato con quale orario hai mandato il messaggio ?
-- 
ciao, hal

io invece volevo APRIRE il programma di posta elettronica predefinito
Una soluzione possibile e' ricavarsi il valore dal registro di windows.
L' esempio sotto la firma _dovrebbe_ funzionare nella maggioranza dei casi.
Se ci sono problemi, facci sapere.
-- 
hth, hal
----------------------- inizio codice ------------------
Option Explicit
Private Const ERROR_NONE = 0
Private Const KEY_QUERY_VALUE = &H1
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const REG_SZ As Long = 1
Private Declare Function RegCloseKey Lib "advapi32.dll" _
   (ByVal hKey As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
   "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
   ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As _
   Long) As Long
Private Declare Function RegQueryValueExString Lib "advapi32.dll" Alias _
   "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
   String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
   As String, lpcbData As Long) As Long
Private Declare Function ExpandEnvironmentStrings Lib "kernel32" Alias "ExpandEnvironmentStringsA" ( _
                    ByVal lpSrc As String, ByVal lpDst As String, _
                    ByVal nSize As Long) As Long
 
Public Function GeDefaultMailer() As String
    Dim hKey As Long, nPos As Integer
    Dim startEnvStr As Integer, endEnvStr As Integer
    Dim buffer As String, ret As Long
 
    Dim sKeyName As String, sValue As String, lpcbValue As Long
    sKeyName = "mailto\shell\open\command"
    lpcbValue = 255
    sValue = String(lpcbValue, 0)
    If (ERROR_NONE = RegOpenKeyEx(HKEY_CLASSES_ROOT, _
                sKeyName, 0, _
                KEY_QUERY_VALUE, hKey)) Then
 
        If (ERROR_NONE <> RegQueryValueExString(hKey, vbNullString, 0&, REG_SZ, sValue, lpcbValue)) Then
            RegCloseKey (hKey)
            Exit Function
        Else
            RegCloseKey (hKey)
        End If
    Else
        Exit Function
    End If
 
    nPos = InStr(1, sValue, " /", vbBinaryCompare)
    If (nPos) Then sValue = Left$(sValue, nPos - 1)
    nPos = InStr(1, sValue, " -", vbBinaryCompare)
    If (nPos) Then sValue = Left$(sValue, nPos - 1)
    nPos = InStr(1, sValue, Chr$(0), vbBinaryCompare)
 
    startEnvStr = InStr(1, sValue, "%", vbBinaryCompare)
    If (startEnvStr) Then
        endEnvStr = InStr(startEnvStr + 1, sValue, "%", vbBinaryCompare)
        If (endEnvStr) Then
            buffer = Space(255)
            ret = ExpandEnvironmentStrings(Mid$(sValue, startEnvStr, endEnvStr - startEnvStr + 1), buffer, 255)
            If (ret) Then
                sValue = Left$(sValue, startEnvStr - 1) & Left$(buffer, ret - 1) & Mid$(sValue, endEnvStr + 1)
            Else
                Exit Function
            End If
        Else
            Exit Function
        End If
    End If
 
    GeDefaultMailer = Trim$(sValue)
End Function
----------------------- fine codice -------------------

mail, io invece volevo APRIRE il programma di posta elettronica predefinito
Non avevo letto bene, a te basta _aprire_ il programma.
Allora il suggerimento di Ugo va bene, basta modificarlo cosi':
ShellExecute 0&, "open", "mailto:", vbNullString, vbNullString, 5
-- 
ciao, hal