Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: ПРоблема с кодом из-за неопытности Добавлено: 05.09.08 10:37  

Автор вопроса:  maximius
Здравствуйте.
У меня такая проблема. Мне нужно сделать диск, но я не могу написать программу autorun, которая открывала бы файлы на самом диске.

листинг.

   Shell ("cmd /X /C start E:\disk\files\htmlsite\index.html") _

В чем моя ошибка? Уважаемые программисты, подскажите правильный код. Мне нужно открывать html chm и pdf файлы. Заранее спасибо.

Ответить

  Ответы Всего ответов: 29  

Номер ответа: 1
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #1 Добавлено: 05.09.08 11:18
Shell "C:\Program Files\Internet Explorer\iexplore.exe E:\book\html\index.htm", vbMaximizedFocus

Сам разберешся или разжевать? :)

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 05.09.08 15:45
Бррр... А если CD-привод юзает не E:, а другую букву? А если IE стоит не в C:\Program files?

Ответить

Номер ответа: 3
Автор ответа:
 maximius



Вопросов: 1
Ответов: 5
 Профиль | | #3 Добавлено: 05.09.08 19:05
Спасибо за помощь. Но сама проблема в том, чтобы эта программа выполнялась на любом компьютере независимо от буквы диска

Shell ("cmd /X /C start C:\disk\files\htmlsite\index.html";)

Этот код пашет нормально на моем компьютере, а на других не хочет типа не найден сетевой ресурс. Я подумал, что можно задать относительный адрес. Т.е. относительно расположения файла программы, и уже от нее "скакать". Есть ли какие варианты. Я думаю, что код должен быть простым. Ведь пираты каждный день штампуют по сотне дисков с разными менюшками, а я вторую неделю литературу рою! HELP! или F1!!!

Ответить

Номер ответа: 4
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #4 Добавлено: 05.09.08 19:45
>Павел
Глупый вопрос :) А апи придумали не для программистов? А найти ишак в системе тоже очень даже не сложно, было бы желание :)
Я подумал, что можно задать относительный адрес
App.Path указывает на рабочую папку в которой находится запущенная програ.

Ответить

Номер ответа: 5
Автор ответа:
 maximius



Вопросов: 1
Ответов: 5
 Профиль | | #5 Добавлено: 05.09.08 20:09
А куда app.path вписывать?Можно поподробнее, А то я полный дилетант.Заранее благодарен.

Ответить

Номер ответа: 6
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #6 Добавлено: 05.09.08 20:46
Если запускаемый файл в папке с программой то:
Shell app.path & "\fileName.exe"

если например твоя программа в папке "C:\Temp\" , а тебе нужно запустить программу из "C:\SoFakingWorld\People\":
Shell app.path & "\..\SoFakingWorld\People\fileName.exe"

Ответить

Номер ответа: 7
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #7 Добавлено: 05.09.08 21:11
Админы! Поместите этот пример запуска файлов в ФАКу, плиззз.
Option Explicit

Private Declare Function ShellExecuteEx Lib "shell32" (lpExecInfo As SHELLEXECUTEINFO) 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
        
Const SW_NORMAL = 1
'Другие флаги открытия
Const SW_ERASE = &H4
Const SW_HIDE = 0
Const SW_INVALIDATE = &H2
Const SW_MAX = 10
Const SW_MINIMIZE = 6
Const SW_MAXIMIZE = 3
Const SW_OTHERUNZOOM = 4
Const SW_OTHERZOOM = 2
Const SW_PARENTCLOSING = 1
Const SW_PARENTOPENING = 3
Const SW_RESTORE = 9
Const SW_SCROLLCHILDREN = &H1
Const SW_SHOW = 5
Const SW_SHOWDEFAULT = 10
Const SW_SHOWMAXIMIZED = 3
Const SW_SHOWMINIMIZED = 2
Const SW_SHOWMINNOACTIVE = 7
Const SW_SHOWNA = 8
Const SW_SHOWNOACTIVATE = 4
Const SW_SHOWNORMAL = 1

Private Type SHELLEXECUTEINFO
    cbSize As Long 'размер структуры
    fMask As Long 'ìмаска параметров 'SEE_MASK_NOCLOSEPROCESS
    'SEE_MASK_CLASSKEY        Параметры указываются hkeyClass.
    'SEE_MASK_CLASSNAME       Параметры указываются lpClass .
    'SEE_MASK_CONNECTNETDRV   Параметры указываются LpFile, для сетевого запуска
    'SEE_MASK_DOENVSUBST     Разворачивают любые переменные среды указанные в lpFile или lpDirectory.
    'SEE_MASK_FLAG_DDEWAIT    Wait for the DDE conversation to terminate before returning, if the ShellExecuteEx function causes a DDE conversation to start.
    'SEE_MASK_FLAG_NO_UI      Не отображает сообщения об ошибках если они есть
    'SEE_MASK_HOTKEY          Использование комбинации "hot key", указанные в dwHotKey.
    'SEE_MASK_ICON            Использование иконки указанную в hIcon.
    'SEE_MASK_IDLIST          Используют список идентификаторов элемента, указанные в lpIDList.
    'SEE_MASK_INVOKEIDLIST    Используют список идентификаторов элемента, указанные в lpIDList, чтобы вызвать приложение. Если этот член нулевой то функция сама создаст список идентификаторов. SEE_MASK_INVOKEIDLIST отменяет SEE_MASK_IDLIST.
    'SEE_MASK_NOCLOSEPROCESS  Просто запускает процесс указанный в HProcess (хэндл).
    hwnd As Long 'хэндл родительского окна
    lpVerb As String 'указание что сделать с файлом по умолчанию "Open"
    lpFile As String 'путь к файлу
    lpParameters As String 'Указатель на строку с нулевым символом на конце содержащую прикладные параметры
    lpDirectory As String 'Указатель на строку с нулевым символом на конце содержащую путь к рабочему каталогу, если указатель пуст, то текущая папка используется как рабочая.
    nShow As Long 'Флаг показа, одно из значений SW_
    hInstApp As Long 'Handle to the instance of the application that was started or an error value if the application could not be started. (This handle could also be the handle of a dynamic data exchange [;DDE] server application.) This member is set on return.
    '  Optional fields
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type
Private Sub Command1_Click()
    cmd1.ShowOpen 'Выбираем объект для запуска
    Dim t As Byte
    t = 0'указываем способ запуска
    Select Case t
        Case 0 'Используется ShellExecuteEx
            Dim w As SHELLEXECUTEINFO
            Dim hhh As Long, h1 As Long, retval As Long
            w.cbSize = Len(w)
            w.lpVerb = "open"
            w.nShow = SW_NORMAL
            w.hInstApp = hhh
            w.hProcess = h1
            w.hwnd = Me.hwnd
            w.lpDirectory = sPath(cmd1.FileName)
            w.lpFile = cmd1.FileName
            retval = ShellExecuteEx(w)
        Case 1 'Используется ShellExecute
            ShellExecute Me.hwnd, "open", cmd1.FileName, 0, 0, SW_NORMAL
        Case Else 'Используется Shell
            Shell cmd1.FileName '
    End Select
End Sub
'Получение рабочего каталога
Function sPath(ByVal sP As String)
    Dim s As String
    s = Dir(sP)
    s = Replace(sP, s, "";)
sPath = s
End Function

Ответить

Номер ответа: 8
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #8 Добавлено: 05.09.08 21:12
Если кто знает еще способы напишите :)

Ответить

Номер ответа: 9
Автор ответа:
 maximius



Вопросов: 1
Ответов: 5
 Профиль | | #9 Добавлено: 09.09.08 00:13
Сидел, Сидел, но ни х чего не понял.
Во первых, для чего там куча переменных?
Во вторых, для чего Select case t?

Прошу, умоляю. в какую строку вписать имя файла и папки.
Я хочу разобраться, чтобы вас, s12, не тревожить по каждому файлу, а четко понять что и куда писать.

Привожу также структуру папок, которые может будут на диске. Будь он не ладен. Уже на работе требуют образцы.

cd-rom
autorun.exe - именно сама программа,которую пишу
   \files\htmlsite\index.html
   \files\chmsite\site.chm
   \files\katalog\katalog.pdf


Вот эти файлы нужно открыть по нажатии разных кнопок.
Вы объясните на примере html, а дальше я разберусь. Надеюсь.
Жду помощи.
Заранее спасибо

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 09.09.08 19:07
запускай файлы так:
ShellExecute Form1.hwnd, "open", FILENAME, 0, 0, 1
Насчет относительных путей: app.path содержит путь к твоей программе

Ответить

Номер ответа: 11
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #11 Добавлено: 10.09.08 08:39
Во первых, для чего там куча переменных?
Я знаю три способа запуска внешней программы из вб6, 2 с помощью апи и Shell. В примере приведены все три способа (все способы отделены case ), каждый из способов хорош для какой-либо конкретной ситуации. В твоем случае подойдет способ указанный Winand'ом.
Вот эти файлы нужно открыть по нажатии разных кнопок.
Вы объясните на примере html, а дальше я разберусь. Надеюсь.
Жду помощи.
Счас набросаю примерчик, но лучше бы видеть мыло, чтобы кинуть туда весь проект.

Ответить

Номер ответа: 12
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #12 Добавлено: 10.09.08 08:54
Добавь на форму три кнопки и вот это:
  1. Option Explicit
  2. Private Declare Function ShellExecute Lib "shell32.dll" Alias _
  3.         "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
  4.         ByVal lpFile As String, ByVal lpParameters As String, _
  5.         ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  6.         
  7. Const SW_MAXIMIZE = 3
  8.  
  9. Private Sub Command1_Click()
  10.     ShellExecute Me.hwnd, "open", App.Path & "\files\htmlsite\index.html", 0, 0, SW_MAXIMIZE
  11. End Sub
  12.  
  13. Private Sub Command2_Click()
  14.     ShellExecute Me.hwnd, "open", App.Path & "\files\katalog\katalog.pdf", 0, 0, SW_MAXIMIZE
  15. End Sub
  16.  
  17. Private Sub Command3_Click()
  18.     ShellExecute Me.hwnd, "open", App.Path & "\files\chmsite\site.chm", 0, 0, SW_MAXIMIZE
  19. End Sub

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 10.09.08 10:20
будем проще, наф огороды ;)

[AutoRun]
ShellExecute=1.htm
Icon=autorun.ico

Ответить

Номер ответа: 14
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #14 Добавлено: 10.09.08 10:27
+1
Фсе гиниальнаё праста!

Ответить

Номер ответа: 15
Автор ответа:
 maximius



Вопросов: 1
Ответов: 5
 Профиль | | #15 Добавлено: 11.09.08 22:10
Большое спасибо. Наконец я написал эту чертову программу и на ковер меня не поставили, а наоборот - остались очень довольны. Спасибо вам.
А какую литературу вы мне предложите почитать или скачать про VB?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам