vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Warten ... (Teil 2) 
Autor: Woellmi
Datum: 06.06.16 17:54

Option Explicit
Public sg__File As String   '//Übergabe aus oFr
Private oFrm As frmMain     '//Dummy-For
Private n__hMutex As Long 
Sub Main()
 Dim nCopyResult As Long
 Dim sDestKeyFile As String
 Dim nMainResult As Long
 Dim sFileToStart As String
 Dim hProcessID As Long
 Dim hProcess As Long
 n__hMutex = CreateMutex(0&, 1, "MeinAufrufProgName")
 If Err.LastDllError = ERROR_ALREADY_EXISTS Then
   'sub_ShowMessage 0&                  '//Hier die "BÖSE" Meldung ( _
     auskommentiert)
   Exit Sub
 End If
 'IsEXERunning => nach Tipp aus vb@rchiv
 If IsEXERunning("MeinZielProg") Then
   sub_ShowMessage 1&    '//Fehlermeldung
 Else
   'Hier versuche ich es nochmal, ob's Sinn macht?
   If App.PrevInstance Then
      sub_ShowMessage 0&      '//Fehlermeldung
   Else
     'Startumgebung ermitteln/festlegen
      bg_RegistratorOK = False
      bg_INIFileExists = False
      bg_ExeFileExists = False
      bg_KeyFileExists = False
      bg_RegisterFile = False
      'es wird sich der Installationsort der Aufgerufenen Datei aus einer INI 
      ' geholt,
      'welche bei der Installation (InnoSetup) ausgefuellt wird.
      '[FileInfo]
      'EXEFolder=C:\Prgramme\MeineZielanwendung\
      'Keine Registry-Nutzung
      sg_PT32AppDataDir = B_GETSPECFOLDER(MEW_SSF_COMMONAPPDATA) & _
        "\MeinAppDataFolder\")
      sg_AppDIR = VB_GetPath2Dir(App.Path)
      sg_PT32INIFile = sg_PT32AppDataDir & "MeineINIDatei.INI"
      bg_INIFileExists = VB_FileExistsEx(sg_PT32INIFile)
      'Aufrufparameter prüfen (csg_KEYFILENAME = PT32SEVL.KEY)
      sg_KeyFile = VB_GetPath2Dir(App.Path) & csg_KEYFILENAME
      'wurde ggf. ein Kommandoparameter übergeben?
      sg_Command = f_sGetParameterFile(Command)
      If sg_Command <> "Error" Then
         sg_KeyFile = sg_Command          'z.B. 
         ' C:\Users\ICH\Desktop\PT32SELV.KEY
      End If          
      If bg_INIFileExists Then
         sg_PT32EXEFolder = VB_ReadINIStr(csg_INIKEY_EXEFOLDER, _
                            csg_INISEC_FILEINFO, sg_PT32INIFile)
         If Len(sg_PT32EXEFolder) > 0& Then
             bg_ExeFileExists = VB_FileExistsEx(VB_GetPath2Dir( _
                                sg_PT32EXEFolder) & csg_PT32EXENAME)
             If bg_ExeFileExists Then
                bg_KeyFileExists = VB_FileExistsEx(sg_KeyFile)
                If bg_KeyFileExists Then
                   bg_RegisterFile = True
                Else
                   'Dialog im Hintergrund öffnen ohne angezeigt zu werden.
                   ' Es erscheint nur der Eingabedialog
                   Set oFrm = New frmMain
                   oFrm.Show
                   Unload oFrm
                   Set oFrm = Nothing
                   If sg__File <> "Canceled" Then
                      sg_KeyFile = sg__File
                      bg_KeyFileExists = VB_FileExistsEx(sg_KeyFile)
                      If bg_KeyFileExists Then
                         bg_RegisterFile = True
                      Else
                         sub_ShowMessage 2&
                      End If
                   Else
                      sub_ShowMessage 3&
                   End If
                End If
             Else
                sub_ShowMessage 4&
             End If
          Else
             sub_ShowMessage 5&
          End If
       Else
          sub_ShowMessage 6&
       End If          
       If bg_RegisterFile Then
          sDestKeyFile = VB_GetPath2Dir(VB_GetPath2Dir( _
                         VB_GETSPECFOLDER(MEW_SSF_COMMONAPPDATA)) & _
                         csg_PT32APPDATAFOLDER) & csg_KEYFILENAME
          nCopyResult = CopyFile(sg_KeyFile, sDestKeyFile, 0&)
          If VB_FileExistsEx(sDestKeyFile) Then
             sFileToStart = VB_GetPath2Dir(sg_PT32EXEFolder) & csg_PT32EXENAME
             If Len(sFileToStart) > 0& And VB_FileExistsEx(sFileToStart) Then
                hProcessID = Shell(sFileToStart, vbNormalFocus)                   
                If hProcessID > 0& Then
                   hProcess = OpenProcess(PROCESS_SYNCHRONIZE, True, hProcessID)
                   'Warten bis der Prozess beendet wurde. VB-Programm startet 
                   ' ZielProg und
                   'es wird sich hier weiter nichts tun, bis das ZielProg 
                   ' geschlossen wurde.
                   WaitForSingleObject hProcess, INFINITE                    
                   'Hier wird erst dann weitergemacht, wenn die ZielProg 
                   ' beendet wurde.
                   sub_ShowMessage 100&  '//Alles OK, fertig
                Else
                   sub_ShowMessage 7&
                End If
             Else
                sub_ShowMessage 8&
             End If
          Else
             sub_ShowMessage 9&
          End If
       End If
    End If
 End If   
 If hProcess <> 0& Then: CloseHandle hProcess
 CloseHandle n__hMutex
 Exit Sub
End Sub
.. Teil 2

Tschaui
Woellmi

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Start einer externen VB6 Anwendung aus einer VB6 Anwendung2.195Woellmi26.05.16 09:20
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.136Blackbox26.05.16 11:35
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.250Woellmi26.05.16 23:33
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.103Woellmi27.05.16 00:24
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.222effeff27.05.16 11:52
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.090Woellmi28.05.16 00:10
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.126Blackbox27.05.16 14:04
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.065Woellmi28.05.16 00:27
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.109Woellmi31.05.16 00:15
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.187Blackbox01.06.16 22:22
Re: Start einer externen VB6 Anwendung aus einer VB6 Anwendu...1.163Woellmi02.06.16 22:07
Warten ...1.278Blackbox05.06.16 12:10
Re: Warten ... (Teil 1)1.106Woellmi06.06.16 17:47
Re: Warten ... (Teil 2)1.078Woellmi06.06.16 17:54
Re: Warten ... (Teil 3)1.192Woellmi06.06.16 17:59

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel