На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Отправка по ссылке
    В общем проблема не открыть сайт определенный по нажатию на кнопку, а открыть его через браузер который стоит по умолчанию.

    У меня такой код:
    ExpandedWrap disabled
      Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE http://AnapolisGame.jino-net.ru/"

    Без указания программы она не сработает. Так же как и если винда будет на D. Но с этим то я справлюсь, важнее просто открыть ссылку в браузере стоящем по умолчанию.

    Подскажите как решить.
      Имхо, правильнее всего смотреть какой браузер помечен "по умолчанию", но открывать вручную, т.е. напрямую запускать его с параметром, т.к., например, при простом открытии ссылки она будет открыта в активном окне браузера, а не в новом.
        Цитата f33l, 03.08.2006, 11:39:17, 1202261
        Имхо, правильнее всего смотреть какой браузер помечен "по умолчанию",

        ShellExecute рулит...
        Цитата f33l, 03.08.2006, 11:39:17, 1202261

        но открывать вручную, т.е. напрямую запускать его с параметром, т.к., например, при простом открытии ссылки она будет открыта в активном окне браузера, а не в новом.
        Это в ИЕ, в случае, когда глупый юзер не поставил в настройках галку. Это исключительно проблема глупого юзера.

        Автор темы, юзай ShellExecute
          Змей(Чёрный), вдобавок :P
          вот конкретный пример
          ExpandedWrap disabled
            ShellExecute 0, "open", "http://AnapolisGame.jino-net.ru/", "", "", 1

          ;)
          Сообщение отредактировано: Beast666 -
            Цитата Змей(Чёрный) @
            ShellExecute рулит...

            Действительно рулит. Не только в програмистских разделах можно встретить упоминания о ней.

            Думаю стоит добавить заметку по этой функции в ФАК.

            (см. пост №12)
            Сообщение отредактировано: Djoser -
              а) Объедени примеры в одну функцию. Они различаются только параметрами вызова ShellExecute.
              б) Не вижу обработки возвращамых значений
              в) Не вижу ссылки на MSDN
              г) Не вижу примеров с 'print'

              От меня:
              ExpandedWrap disabled
                Option Explicit
                 
                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
                Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" (ByVal dwFlags As Long, ByRef lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, ByRef Arguments As Long) As Long
                 
                Private Const SW_SHOWNORMAL As Long = 1
                Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
                Private Const MAX_SIZE As Long = 255
                 
                Private Sub Form_Load()
                    Dim lRetval As Long
                    
                    '> explore
                    
                    'В lRetval должен быть возвращен Instance запущенного приложения
                    lRetval = ShellExecute(Me.hwnd, "explore", Environ$("WinDir") & _
                        Chr$(92), vbNullString, vbNullString, SW_SHOWNORMAL)
                    'Если значение меньше или равно 32 - произошла ошибка
                    If lRetval <= 32 Then
                        MsgBox GetErrorString(lRetval), vbExclamation Or vbApplicationModal, "Error"
                    End If
                    
                    '> find
                    
                    lRetval = ShellExecute(Me.hwnd, "find", Environ$("Temp") & _
                        Chr$(92), vbNullString, vbNullString, SW_SHOWNORMAL)
                 
                    If lRetval <= 32 Then
                        MsgBox GetErrorString(lRetval), vbExclamation Or vbApplicationModal, "Error"
                    End If
                    
                    '> edit
                    
                    lRetval = ShellExecute(Me.hwnd, "edit", "C:\Picture.bmp", vbNullString, _
                        vbNullString, SW_SHOWNORMAL)
                 
                    If lRetval <= 32 Then
                        MsgBox GetErrorString(lRetval), vbExclamation Or vbApplicationModal, "Error"
                    End If
                End Sub
                 
                'Текст ошибки
                Public Function GetErrorString(ByVal lErr As Long) As String
                    Dim strBuffer As String, lRetval As Long
                    strBuffer = Space$(MAX_SIZE)
                    lRetval = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0, lErr, 0, strBuffer, MAX_SIZE, 0)
                    strBuffer = Left$(strBuffer, lRetval)
                    GetErrorString = strBuffer
                End Function


              Добавлено
              Перевод на лету:

              Цитата Djoser @
              This window receives any message boxes that an application produces. For example, an application may report an error by producing a message box.


              Это окно получит любые окна сообщений, которые приложение выведет. Например, приложение может сообщить об ошибке выводом окна сообщения.

              Цитата Djoser @
              An application should specify this flag when restoring a minimized window.


              Приложение должно установить этот флаг, когда восстанавливает минимизированное окно.

              Цитата Djoser @
              Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.


              Ой, сложное предложение...

              Устанавливает состояние показа, основанное на SW_ флаге, указанном в STARUPINFO типе (или структуре), переданной CreateProcess функции программой, которая запустила приложение. Приложение должно вызывать ShowWindow с этим флагом для установки изначального состояния показа его основного окна.

              Цитата Djoser @
              Displays the window as a minimized window. The active window remains active.


              Показывает окно как минимизированное окно. Активное окно остается активным.

              Цитата Djoser @
              Displays the window in its current state. The active window remains active.


              Показывает окно в текущем его состоянии. Активное окно остается активным.

              Цитата Djoser @
              Displays a window in its most recent size and position. The active window remains active.


              Показывает окно с его самой последней позицией и размером. Активное окно остается активным.
                B.V., сенкс за отзыв.
                У меня щас инет тормознутый, если не сложно, то проверь, плиз, ссылку на MSDN. И, если не трудно, то можешь поискать на msdn статью про эту ф-ию, но с кодом на ВБ(если такое конечно есть).

                Добавлено
                Цитата B.V. @
                Не вижу примеров с 'print'

                Сорри, но у мну принтер на ремонте... Может так попробую...
                  Цитата Djoser @
                  с кодом на ВБ(если такое конечно есть)


                  Думаю, нет.
                    Цитата B.V. @
                    а) Объедени примеры в одну функцию. Они различаются только параметрами вызова ShellExecute.

                    Каждый пример отвечает на свой конкретный вопрос. Объединять все в одну функцию не вижу смасла, если кому-то это будет надо, то на данной (которая уже изложена в статейке) основе сможет легко реализовать задуманное.
                    Цитата B.V. @
                    Думаю, нет.

                    А ссылку проверил?
                      Цитата Djoser @
                      А ссылку проверил?


                      На MSDN? Да.
                        (Пост то редактится, то не редактится - инет вылетает, так что сорри за топик-ап)
                        Дополнение и поправки к вопросам:
                        1.Как открыть зарегистрированный тип файла в системе в нужной программе?
                        2.Как открыть адрес URL в браузере по умолчанию?
                        3.Как открыть окно почтовой программы для создания письма на определенный адрес? (можно отнести ко второму)
                        4.Как распечатать на принтере содержимое файла?
                        5.Как отобразить стандартное окно поиска файлов Windows?

                        Добавлено
                        Код:
                        ExpandedWrap disabled
                          'пример демонстрирует основные возможности применения функции ShellExecute
                          'Coded by Djoser
                          'Some code bytes from: B.V.; Api-Guide
                          'forum.sources.ru
                          Option Explicit
                           
                          Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" (ByVal dwFlags As Long, ByRef lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, ByRef Arguments As Long) As Long
                          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
                           
                          Private Const SW_SHOWNORMAL As Long = 1
                          Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
                          Private Const MAX_SIZE As Long = 255
                           
                          Public Enum enuShell_DO
                             iSH_Mail = 1
                             iSH_Explore = 2
                             iSH_FindIn = 3
                             iSH_Edit = 4
                             iSH_URL = 5
                             iSH_Run = 6
                             iSH_Print = 7
                          End Enum
                           
                          Public Function iShell(hWnd As Long, Action As enuShell_DO, ActString As String, Optional strCmdLine As String = "") As String
                           
                          'функция возвращает пустую строку, если все нормально
                          'функция возвращает описание ошибки или lRetval, если произошла ошибка
                           
                          'В lRetval должен быть возвращен Instance запущенного приложения
                          'Если значение меньше или равно 32 - произошла ошибка
                          'Chr$(92) = "\"
                          Dim lRetval As Long
                          Dim strAct As String
                             Select Case Action
                                Case Is = enuShell_DO.iSH_Mail
                                   'отправка почты (написать письмо)
                                   lRetval = ShellExecute(hWnd, "open", "mailto:" & ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_Explore
                                   'открытие папки в проводнике
                                   ActString = StrChek(ActString, "\")
                                   lRetval = ShellExecute(hWnd, "explore", ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_FindIn
                                   'поиск файлов в указанной папке средствами Windows
                                   ActString = StrChek(ActString, "\")
                                   lRetval = ShellExecute(hWnd, "find", ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_Edit
                                   'открывает файл в соответствующем редакторе, например: *bmp -> Paint
                                   lRetval = ShellExecute(hWnd, "edit", ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_URL
                                   'переход на ссылку URL
                                   ActString = StrChek(ActString, "/")
                                   lRetval = ShellExecute(hWnd, "open", "http://" & ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_Run
                                   'открывает документ или запускает программу
                                   lRetval = ShellExecute(hWnd, "open", ActString, strCmdLine, vbNullString, SW_SHOWNORMAL)
                                Case Is = enuShell_DO.iSH_Print
                                   'печатает документ (НЕ ТЕСТИРОВАЛОСЬ)
                                   lRetval = ShellExecute(hWnd, "print", ActString, vbNullString, vbNullString, SW_SHOWNORMAL)
                             End Select
                             If lRetval <= 32 Then
                                iShell = Str$(lRetval)
                                iShell = GetErrorString(lRetval)
                             End If
                          End Function
                           
                          Private Function StrChek(ByVal strMath As String, ByVal strRepl As String) As String
                             StrChek = IIf(Right$(strMath, 1) <> strRepl, strMath & strRepl, strMath)
                          End Function
                           
                          'Текст ошибки
                          Private Function GetErrorString(ByVal lErr As Long) As String
                              Dim strBuffer As String, lRetval As Long
                              strBuffer = Space$(MAX_SIZE)
                              lRetval = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0, lErr, 0, strBuffer, MAX_SIZE, 0)
                              strBuffer = Left$(strBuffer, lRetval)
                              GetErrorString = strBuffer
                          End Function


                        Добавлено
                        (щас связь ужость :ph34r: ) описание выложу позднее
                          Мне надо подключить какую то библиотеку, для работы с ShellExecute, потому как не работает что-то. Подскажите как называется эта библиотека.
                            Цитата
                            надо подключить какую то библиотеку

                            ты не это имеешь ввиду :
                            Цитата
                            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

                            и выражайся поточнее, пожалуйста, иначе я не смогу те помочь... :angry: что не работает??? вылетает ли ошибка??? и какая ошибка вылетает???
                            Цитата
                            Подскажите как называется эта библиотека.

                            библиотека называецца "shell32.dll" :yes: и подключаецца вышеприведенной строкой :yes:
                            Сообщение отредактировано: Beast666 -
                              Цитата Spectr-7 @
                              Мне надо подключить какую то библиотеку, для работы с ShellExecute, потому как не работает что-то.

                              Выкладывай "неработающий код".

                              В дополнение к посту №12: Описание функции ShellExecute
                              С помощью данной, довольно таки мощной и удобной, функции можно много чего сделать полезного в ваших программах, поэтому будет не лишним, если вы будете знать об основных возможностях функции ShellExecute.

                              Ссылки по информации:
                              RSDN
                              MSDN

                              Описание:
                              Данная функция открывает или печатает указанный файл. Файл может быть исполняемым или документом. (это довольно скромное описание, за которым скрываются очень полезные вещи, чтобы все понять нужно просмотреть пример кода (пост №12))

                              Декларирование:
                              ExpandedWrap disabled
                                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


                              Параметры:
                              Цитата
                              · hwnd
                              hWnd окна-родителя. Это окно получит любые окна сообщений, которые выведет запущенное приложение . Например, приложение может сообщить об ошибке выводом соответствующего окна сообщения.
                              · lpOperation
                              Строка, которая содержит описание выполняемой операции. Может принимать
                              следующие значения:
                              “open”
                              Функция открывает файл, указанный в параметре lpFile. Файл может
                              быть исполняемым или документом. Также может указывать на папку - в
                              этом случае будет открыто окно проводника
                              “print”
                              Функция печатает файл, указанный в lpFile. Файл должен быть документом. Если все равно указан исполняемый файл, то функция возвратит ошибку.
                              “explore”
                              Функция открывает окно проводника в указанной папке (параметр lpFile).
                              "find"
                              Функция открывает стандартное окно поиска файлов Windows. В качестве места поиска устанавливается параметр lpFile
                              "edit"
                              Функция открывает файл, указанный в параметре lpFile, с помощью соответствующего редактора. Например файл *bmp будет открыт в Paint'e
                              Пареметр lpOperation может быть NULL(vbNullString). В этом случае, функция открывает файл, указанный в параметре lpFile, как если бы был установлен в “open”.
                              · lpFile
                              Строка, содержащая путь к файлу для открытия или печати, или имя папки для просмотра в проводнике. Файл может быть исполняемым или документом. Функция может печатать только документы.
                              · lpParameters
                              Командная строка, для программы указанной в параметре lpFile (только для исполняемых файлов!).
                              Если lpFile содержить путь к документу, то параметр lpParameters должен быть NULL(vbNullString).
                              · lpDirectory
                              Строка, содержащая путь к директории по умолчанию. Если того не требуется, то то можно оставить все в текущем состоянии - установить этот параметр в NULL(vbNullString)
                              · nShowCmd
                              Если параметр lpFile содержит исполняемый файл, то параметр nShowCmd определяет поведение запускаемой программы. Данный параметр может принимать значения:
                              SW_HIDE
                              Прячет окошко запускаемой проги.
                              SW_MAXIMIZE
                              Развернутое окошко запускаемой проги.
                              SW_MINIMIZE
                              Минимизирует окно открываемой проги.
                              SW_RESTORE
                              Активирует и отображает окошко запусаемой проги. Если окошко минимизировано\развернуто, то Windows возвращает его оригинальный размер и позицию. Приложение должно установить этот флаг, когда восстанавливает минимизированное окно.
                              SW_SHOW
                              Отображает окно запускаемой проги с текущими параметрами размера и положения.
                              SW_SHOWDEFAULT
                              Устанавливает состояние показа, основанное на SW_ флаге, указанном в STARUPINFO типе (или структуре), переданной функции CreateProcess программой, которая запустила приложение. Приложение должно вызывать функцию ShowWindow с этим флагом, чтобы установить изначальное состояние показа его основного окна.
                              SW_SHOWMAXIMIZED
                              Активирует и отображает развернутое окошко запускаемой программы.
                              SW_SHOWMINIMIZED
                              Активирует и отображает свернутое окошко запускаемой программы.
                              SW_SHOWMINNOACTIVE
                              Показывает окно как минимизированное окно. Активное окно остается активным.
                              SW_SHOWNA
                              Показывает окно в текущем его состоянии. Активное окно остается активным.
                              SW_SHOWNOACTIVATE
                              Показывает окно с его самой последней позицией и размером. Активное окно остается активным.
                              SW_SHOWNORMAL
                              Активирует и отображает окошко. Если окошко минимизировано\развернуто, то восстанавливаются размер и позиция окна как при первом запуске. Данный флаг должен быть установлен, когда программа запускается впервые.


                              Вот простой пример использования ShellExecute, в котором продемонстрированы все известные на данный момент варианты использования этой функции:

                              Добавлено
                              Вопрос к B.V.: Статья идет в ФАК?

                              Добавлено
                              Цитата Djoser @
                              Вопрос к B.V.: Статья идет в ФАК?

                              (под статьей я понимаю объединенные посты №12 и 15)
                              Сообщение отредактировано: Djoser -

                              Прикреплённый файлПрикреплённый файлShellExeute_Prev.zip (4.21 Кбайт, скачиваний: 144)
                                Цитата Djoser @
                                Вопрос к B.V.: Статья идет в ФАК?


                                Пост #12 уже в FAQ. Пост #15 добавлять в FAQ нет смысла.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0521 ]   [ 16 queries used ]   [ Generated: 18.07.25, 12:38 GMT ]