Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

mailto:

648
16 августа 2004 года
Tiraspolsky
220 / / 23.07.2003
Нажимаю Пуск/Выполнить и набираю mailto:myadress@mail.ru. Запускается почтовый клиент (который по умолчанию), строка Кому уже заполнена. Аналогично, если набрать http://mail.ru, запустится браузер (который по умолчанию), и откроет сайт mail.ru. Как сделать то же самое программно ?
258
16 августа 2004 года
SergeySV
1.5K / / 19.03.2003
Код:
'************ Code Start **********



Private Declare Function apiShellExecute 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

'***App Window Constants***
Public Const WIN_NORMAL = 1    'Open Normal
Public Const WIN_MAX = 2    'Open Maximized
Public Const WIN_MIN = 3    'Open Minimized

'***Error Codes***
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&

'***************Usage Examples***********************
'Open a folder: ?ShellExecuteMy("C:\TEMP\",WIN_NORMAL)
'Call Email app: ?ShellExecuteMy("mailto:dash10@hotmail.com",WIN_NORMAL)
'Open URL: ?ShellExecuteMy("http://home.att.net/~dashish", WIN_NORMAL)
'Handle Unknown extensions (call Open With Dialog):
' ?ShellExecuteMy("C:\TEMP\TestThis",Win_Normal)
'Start Access instance:
' ?ShellExecuteMy("I:\mdbs\CodeNStuff.mdb", Win_NORMAL)
'****************************************************

Function ShellExecuteMy(stFile As String, lShowHow As Long)
    Dim lRet As Long, varTaskID    As Variant
    Dim stRet                      As String
    'First try ShellExecute
    lRet = apiShellExecute(hWndAccessApp, vbNullString, _
                           stFile, vbNullString, vbNullString, lShowHow)

    If lRet > ERROR_SUCCESS Then
        stRet = vbNullString
        lRet = -1
    Else
        Select Case lRet
            Case ERROR_NO_ASSOC:
                'Try the OpenWith dialog
                varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
                                & stFile, WIN_NORMAL)
                lRet = (varTaskID <> 0)
            Case ERROR_OUT_OF_MEM:
                stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
            Case ERROR_FILE_NOT_FOUND:
                stRet = "Error: File not found. Couldn't Execute!"
            Case ERROR_PATH_NOT_FOUND:
                stRet = "Error: Path not found. Couldn't Execute!"
            Case ERROR_BAD_FORMAT:
                stRet = "Error: Bad File Format. Couldn't Execute!"
            Case Else:
        End Select
    End If
    ShellExecuteMy = lRet & _
                     IIf(stRet = "", vbNullString, ", " & stRet)
End Function
'************ Code End **********


Это вариант функции под Access, если использовать в других программах то надо вместо hWndAccessApp ставить hWnd окна твоей программы (если ты в VB пишешь) - App.hWnd; в Excel - Application.Hwnd, в Worde помуторнее, там надо готового свойства нет, надо делать поиск гл. окна word'а по классу через winAPI FindWindow....
648
17 августа 2004 года
Tiraspolsky
220 / / 23.07.2003
Спасибо за ответ
8.1K
17 августа 2004 года
ValterG
11 / / 16.08.2004
Цитата:
Originally posted by Tiraspolsky
Нажимаю Пуск/Выполнить и набираю mailto:myadress@mail.ru. Запускается почтовый клиент (который по умолчанию), строка Кому уже заполнена. Аналогично, если набрать http://mail.ru, запустится браузер (который по умолчанию), и откроет сайт mail.ru. Как сделать то же самое программно ?


А можно по дубовому :
Shell("cmd.exe /c start ""mail"" ""http://mail.ru""")
Команда start позволяет вообще
запустить процесс "открытия" любого
об"екта Виндов, например картинок.
Первая строчка "mail" - задает
заголовок открываемого окна, а
вторая - об"ект.
Я это запомнил с тех времен, когда
"коммандеры" еще не были умными и не позволяли
такое делать без команды start. А сейчас
они делают именно через нее :-)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог