Avatar billede mortency Nybegynder
24. oktober 2008 - 13:49 Der er 3 kommentarer

Kjøre programmer fra VB6

Hei!

Jeg skal kjøre noen programmer sammtidig fra forskjellige mapper, dette fungerer fint men jeg får ikke programmet samtidig til å vente da det skal kjøre to ganger. Er det noen måte rundt dette?

Eks: Jeg har 10 enheter som skal ha data, disse skal det overføres til sammtidig, problemet er at samme enhet skal ha to overføringer og da krasjer det siden den allerede har en overføring.

'EKS
'Dette skal starte x ganger det er enheter
For i = 0 To antEnheter - 1
start program 1
start program 2 når en er ferdig.
next

'KODEn MIN

Public Sub push_SX(enhetNr, hostStr As String, pass As Integer)
    Dim sti, programSti, comLine, tempStr, strLogFile As String
    Dim retVal As Double
    Dim fSize As Integer
   
    '1 Opprett filen DEVTCP.IF hvor DDID = enhetsnr (Da kan alle overf. kjøre samtidig)
    generer_DEVTCP_IF enhetNr
   
    '2 Opprett filen DEVTCP.TXT med hostStr (IP)
    generer_DEVTCP_TXT enhetNr, hostStr
   
    If Len(enhetNr) < 2 Then
        enhetNr = "0" & enhetNr
    End If
    sti = "ENHET_" & enhetNr
   
    ' slett errorloggfil
    'strLogFile = App.Path & "\" & sti & "\ERROR_TCP.LOG"
    'If FileLen(strLogFile) = 0 Then
    '    Kill strLogFile
    'End If

    programSti = App.Path & "\" & sti & "\"
    ChDir programSti
   
    '3 Generer DEVTCP via sxascii
    comLine = "sxascii.exe /iDEVTCP.TXT /odevtcp DEVTCP.IF"
    retVal = Shell(comLine, visVinduer)
   
    If pass = 1 Then
        If Not FileExists("PLST.SW") Then
            '4 Hent PLST.SW som mal fil dersom den ikke eksisterer.
            'comLine = programSti & "swcwin " & programSti & "devtcp H " & programSti & "PLST O " & programSti & "PLST.SW"
            comLine = "swcwin devtcp H PLST O PLST.SW"
            retVal = Shell(comLine, visVinduer)
            ' tøm plst.sw og la bare header være igjen
            'comLine = programSti & "SW_ZAP.EXE " & programSti & "PLST.SW"
            comLine = "SW_ZAP.EXE PLST.SW"
            retVal = Shell(comLine, visVinduer)
        End If
   
        '6 Generer PLST fra PLST.TXT som parser har generert
        ' bør kjøres bare 1 gang
        comLine = "sxascii.exe /i..\PLST.TXT /oPLST.SW PLST.IF"
        retVal = Shell(comLine, visVinduer)
   
        '8 Send PLST.SW til vekt
        'comLine = programSti & "swcwin " & programSti & "devtcp S " & programSti & "PLST O " & programSti & "PLST.SW"
        comLine = "swcwin devtcp S PLST O PLST.SW"
        'Debug.Print comLine
        'Debug.Print CurDir
        retVal = ShellAndClose(comLine, visVinduer)
        'retVal = Shell(comLine, visVinduer)
    Else
        'pass 2
        If Not FileExists("ATST.SW") Then
            '5 Hent ATST.SW som mal fil dersom den ikke eksisterer.
            comLine = "swcwin devtcp H ATST O ATST.SW"
            retVal = Shell(comLine, visVinduer)
            ' tøm atst.sw og la bare header være igjen
            'comLine = programSti & "SW_ZAP.EXE " & programSti & "ATST.SW"
            comLine = "SW_ZAP.EXE ATST.SW"
            retVal = Shell(comLine, visVinduer)
        End If
   
        '7 Generer ATST fra ATST.TXT som parser har generert.
        comLine = "sxascii.exe /i..\ATST.TXT /oATST.SW ATST.IF"
        retVal = Shell(comLine, visVinduer)
   
        '9 Hvis error....
        '10 SEND ATST.SW til vekt
        comLine = "swcwin devtcp S ATST O ATST.SW"
        'Debug.Print comLine
        retVal = ShellAndClose(comLine, visVinduer)
        'retVal = Shell(comLine, visVinduer)
   
        '11 Hvis error <> 0 opprett en egen logg fra alle overføringer.
    End If
   
    'Open debugFile For Append As #3
    'Print #3, sti & ": " & comLine
    'Close #3
   
End Sub
Avatar billede falster Ekspert
24. oktober 2008 - 17:56 #1
Jeg er ikke rigtig kompetent til at granske din kode. Men prøv måske med noget ShellAndWait:

http://www.vb-helper.com/howto_shell_wait.html

(Måske kommer der bedre bud).
Avatar billede mortency Nybegynder
11. november 2008 - 22:42 #2
Løste det med Winsoc og shellandwait, post et svar skal du få noen point
Avatar billede falster Ekspert
12. november 2008 - 00:43 #3
OK - tak. Men 200 er alt for mange. De meget normale 30 er mere passende :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester