Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: pliki exe
anonim




Typ: Nie zarejestrowany
pliki exe

jak można otwierać pliki exe np wciskam na przycisk i otwiera sie 1 plik itd...

23-04-2004 01:20
  
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Można to zrobić używając funkcji Shell...

  Private Sub ShellSample()
    Dim lPID As Long

    'Uruchomienie programu wykonywalnego
    lPID = Shell("C:\Program Files\My Progs\abc.exe", vbNormalFocus)

    'Uruchomienie programu wykonywalnego z parametrami
    lPID = Shell("C:\Program Files\My Progs\abc.exe /c /p /o:""D:\Some Dir\Some File""", _
      vbNormalFocus)

    'Uruchomienie programu wykonywalnego ze zdalnego (potencjalnie) komputera
    lPID = Shell("\\SomeComputer\SomeShare\Program Files\My Progs\abc.exe", vbNormalFocus)

    'Otwarcie dokumentu w "domyślnym" programie
    ' - pod Win9x:
    lPID = Shell("start.exe d:\abc.gif", vbMinimizedNoFocus)
    ' - pod WinNT:
    lPID = Shell("cmd /c start d:\abc.gif", vbMinimizedNoFocus)

    'Uwaga: W tym przypadku stan okna (tu: vbMinimizedNoFocus) odnosi sie do 
    '  programu "start.exe", lub "cmd.exe", nie do aplikacji bedącej 
    '  "domyślna" dla plików GIF.
  End Sub

... ShellExecute ...

  Private Const SW_HIDE = 0
  Private Const SW_SHOWNORMAL = 1
  Private Const SW_SHOWMINIMIZED = 2
  Private Const SW_MAXIMIZE = 3
  Private Const SW_SHOWNOACTIVATE = 4
  Private Const SW_SHOW = 5
  Private Const SW_MINIMIZE = 6
  Private Const SW_SHOWMINNOACTIVE = 7
  Private Const SW_SHOWNA = 8
  Private Const SW_RESTORE = 9

  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 Sub SellExecSample()
    Dim lRet As Long

    'Uruchomienie programu wykonywalnego
    lRet = ShellExecute(0, "open", "C:\Program Files\My Progs\abc.exe", _
      "/c /p /o:""D:\Some Dir\Some File""", "c:\temp", SW_SHOWNORMAL)

    'Uruchomienie programu wykonywalnego ze zdalnego (potencjalnie) komputera
    lRet = ShellExecute(0, "open", _
      "\\SomeComputer\SomeShare\Program Files\My Progs\abc.exe", _
      "/c /p /o:""D:\Some Dir\Some File""", "c:\temp", SW_SHOWNORMAL)

    'Otwarcie dokumentu w "domyślnym" programie
    lRet = ShellExecute(Me.hwnd, "open", "d:\abc.gif", vbNullString, _
      vbNullString, SW_SHOWNORMAL)

    'Otwarcie dokumentu w "nie-domyślnym" programie
    lRet = ShellExecute(Me.hwnd, "open", "iexplore", "d:\abc.gif", _
      vbNullString, SW_SHOWNORMAL)
    'W tym przypadku format czwartego parametru zależy od uruchamianego programu

    'Otwarcie pliku do edycji
    lRet = ShellExecute(Me.hwnd, "edit", "d:\xyz.reg", vbNullString, _
      vbNullString, SW_SHOWNORMAL)

    'Wydrukowanie dokumentu
    lRet = ShellExecute(0, "print", "d:\abc.jpg", vbNullString, vbNullString, _
      SW_SHOWNORMAL)

    'Otwarcie katalogu w oknie Explorera ("zwykłym"
    lRet = ShellExecute(0, "open", "c:\windows", vbNullString, vbNullString, _
      SW_SHOWNORMAL)

    'Otwarcie katalogu w oknie Explorera ("dwuczęściowym"
    lRet = ShellExecute(0, "explore", "c:\windows", vbNullString, vbNullString, _
      SW_SHOWNORMAL)

    'Pokazanie dialogu "Find" dla jakiegoś katalogu
    lRet = ShellExecute(Me.hwnd, "find", "c:\windows", vbNullString, vbNullString, _
      SW_SHOWNORMAL)

    'Jak widać drugi parametr funkcji ShellExecute wskazuje na czynność, która
    'ma być wykonana.
    'Jednak nie każdy typ pliku (obiektu) umożliwia wykonanie nań dowolnej operacji
    'a także niektóre mogą posiadać własne, niestandardowe operacje.
    'Zwracana przez funkcję wartość identyfikuje błąd, o ile taki wystapił; 
    'brak błędu powoduje że zwracana jest wartosc większa niż 32. Błędy zaś 
    'są opisane w MSDN
    '(http://msdn.microsoft.com/library/psdk/shellcc/shell/Functions/ShellExecute.htm).
  End Sub



... ShellExecuteEx ...



  Private Const SE_ERR_FNF = 2
  Private Const SE_ERR_PNF = 3
  Private Const SE_ERR_ACCESSDENIED = 5
  Private Const SE_ERR_OOM = 8
  Private Const SE_ERR_DLLNOTFOUND = 32
  Private Const SE_ERR_SHARE = 26
  Private Const SE_ERR_ASSOCINCOMPLETE = 27
  Private Const SE_ERR_DDETIMEOUT = 28
  Private Const SE_ERR_DDEFAIL = 29
  Private Const SE_ERR_DDEBUSY = 30
  Private Const SE_ERR_NOASSOC = 31

  Private Const SEE_MASK_CLASSNAME = &H1
  Private Const SEE_MASK_CLASSKEY = &H3
  Private Const SEE_MASK_IDLIST = &H4
  Private Const SEE_MASK_INVOKEIDLIST = &HC
  Private Const SEE_MASK_ICON = &H10
  Private Const SEE_MASK_HOTKEY = &H20
  Private Const SEE_MASK_NOCLOSEPROCESS = &H40
  Private Const SEE_MASK_CONNECTNETDRV = &H80
  Private Const SEE_MASK_FLAG_DDEWAIT = &H100
  Private Const SEE_MASK_DOENVSUBST = &H200
  Private Const SEE_MASK_FLAG_NO_UI = &H400
  Private Const SEE_MASK_UNICODE = &H4000
  Private Const SEE_MASK_NO_CONSOLE = &H8000
  Private Const SEE_MASK_ASYNCOK = &H100000

  Private Type ShellExecuteInfo
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
  End Type

  Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteExA" _
    (ByRef lpSEI As ShellExecuteInfo) As Long

  Private Const PROCESS_TERMINATE = 1

  Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
    ByVal uExitCode As Long) As Long

  Private Sub ShellExecExSample()
    'Dla Win9x i WinNT >= 4
    'Możliwości ma bardzo podobne do ShellExecute, tylko parametry sa inaczej
    '  przekazywane:

    Dim sei As ShellExecuteInfo, lRet As Long

    'Uruchomienie programu wykonywalnego
    With sei
      .cbSize = Len(sei)
      .hwnd = Me.hwnd
      .lpVerb = "open"
      .lpFile = "C:\Program Files\My Progs\abc.exe"
      .lpParameters = "/c /p /o:""D:\Some Dir\Some File"""
      .lpDirectory = "c:\temp"
      .nShow = SW_SHOWNORMAL
    End With
    lRet = ShellExecuteEx(sei)

    'Otwarcie dokumentu w "domyślnym" programie
    With sei
      .cbSize = Len(sei)
      .hwnd = Me.hwnd
      .lpVerb = "open"
      .lpFile = "d:\abc.gif"
      .lpParameters = vbNullString
      .lpDirectory = vbNullString
      .nShow = SW_SHOWNORMAL
    End With
    lRet = ShellExecuteEx(sei)
 
    'etc.
 
    'Jedna z różnic tkwi w tym, ze ShellExecuteEx potrafi zwrócić uchwyt do 
    '  utworzonego procesu:
    With sei
      .cbSize = Len(sei)
      .fMask = SEE_MASK_NOCLOSEPROCESS
      .hwnd = Me.hwnd
      .lpVerb = "open"
      .lpFile = "C:\Program Files\My Progs\abc.exe"
      .lpParameters = "/c /p /o:""D:\Some Dir\Some File"""
      .lpDirectory = "c:\temp"
      .nShow = SW_SHOWNORMAL
    End With
    lRet = ShellExecuteEx(sei)
    If sei.hProcess <> 0 Then
      'OS utworzył nowy proces. Uchwyt doń można użyć np. żeby wykryć 
      '  kiedy uruchomiony program zakończy działalność, żeby go zamknąć, etc.
      lRet = TerminateProcess(sei.hProcess, 0)
      CloseHandle sei.hProcess
    End If
  End Sub



... Windows Scripting Host (WSH) ...



  Private Sub WSHSample()
    Dim x As IWshRuntimeLibrary.IWshShell_Class

    Set x = New IWshRuntimeLibrary.IWshShell_Class

    'Uruchomienie programu wykonywalnego
    x.Run """C:\Program Files\My Progs\abc.exe""", WshNormalFocus, False

    'Uruchomienie programu wykonywalnego ze zdalnego (potencjalnie) komputera
    x.Run """\\SomeComputer\SomeShare\Program Files\My Progs\abc.exe""", _
      WshNormalFocus, False

    'Uruchomienie programu wykonywalnego z parametrami
    x.Run """C:\Program Files\My Progs\abc.exe"" /c /p /o:""D:\Some Dir\Some File""", _
      WshNormalFocus, False

    'Otwarcie dokumentu w "domyślnym" programie
    x.Run "d:\abc.gif", WshNormalFocus
  End Sub


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

23-04-2004 06:52
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
anonim




Typ: Nie zarejestrowany

hm dawno juz nierobilem w vb jak zrobic zeby nie kozystal z dysku tylko np cd-romu? bo cd moze miec rozne oznaczenie dysku u niektorych d u innych g itd?

23-04-2004 10:46
  
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002


hm dawno juz nierobilem w vb jak zrobic zeby nie kozystal z dysku tylko np cd-romu? bo cd moze miec rozne oznaczenie dysku u niektorych d u innych g itd?

A jak ktoś ma kilka stacji CD ?


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

24-04-2004 11:11
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1