[VB.NET] Controleren of bat gestopt is

Pagina: 1
Acties:

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 27-11 08:28
Hallo,

Ik ben bezig met een klein progje dat voor een grafische interface van FFMPEG zorgt.

Nu heb ik een batch file die een avi converteert. (het VB.Net progje moet die batch aanroepen)

Bedoeling van onderstaande code is dat elke avi één voor één uit de lijst gehaald wordt en wordt geconverteerd. Probleem is dus dat hij beide files tegelijk converteert, omdat mijn progje niet kan controleren of de batch al gestopt is.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
        'Alles declareren
        Dim strCurrentAVI As String
        Dim i, intTotalFiles As Integer

        'Totaal aantal bestanden in de queue tellen
        intTotalFiles = lstFiles.Items.Count

        For i = 1 To intTotalFiles
            'De huidige file in strCurrentAVI steken
            strCurrentAVI = lstFiles.Items(0)
            'MessageBox.Show(strCurrentAVI)
            System.Diagnostics.Process.Start("c:\ffmpeg\high43-ratio.bat", strCurrentAVI)
            lstFiles.Items.Remove(strCurrentAVI)
        Next
    End Sub


Heeft er iemand enig idee hoe ik dit zou kunnen doen? Dus pas laten voortgaan met een volgende file als het batch process gesloten is?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Kijk eens naar de Process class; die heeft een aantal properties waarmee je dat kunt configureren (WaitForExit ofzo, ik weet het niet vanbuiten; moet het eens opzoeken).
Dit wil dan wel zeggen dat je een instance van die Process class zult moeten maken geloof ik, ipv gebruik te maken v/d static 'Start' method.

https://fgheysels.github.io/


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Waarom gebruik je een batch file? Je kunt toch net zo goed zelf het proces starten? D.m.v. de Process class kun je zelf een proces starten en checken of 'ie nog draait.

Edit: meh, te laat.

[ Voor 6% gewijzigd door Hydra op 26-06-2007 11:43 ]

https://niels.nu


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Zoiets dus:
code:
1
2
3
4
5
System.Diagnostics.Process p = new System.Diagnostics.Process();

...
p.Start();
p.WaitForExit();

https://fgheysels.github.io/


  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 27-11 08:28
Bedankt voor het snelle antwoord! Zal jouw methode eens proberen

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Maar ho wacht is even, je had echt net je programma perongeluk multithreaded gemaakt :P

misschien een goed idee om wel degelijk de avi files naast elkaar te laten converteren! Op een Dual/Quad core scheelt dat erg veel tijd!

~ Mijn prog blog!


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:51
Tenzij de encoder natuurlijk al multithreaded is, in dat geval heb zou ik liever 1 avi file sneller klaar hebben.

Roomba E5 te koop


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
therat10430 schreef op dinsdag 26 juni 2007 @ 12:33:
Maar ho wacht is even, je had echt net je programma perongeluk multithreaded gemaakt :P

misschien een goed idee om wel degelijk de avi files naast elkaar te laten converteren! Op een Dual/Quad core scheelt dat erg veel tijd!
Mja, maar als dat programma zelf al multhithreaded werkt (mag je hopen) dan heeft het alleen weer weinig zin. Kwestie van ff testen :)

https://niels.nu


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:51
En wat als je 100 avi files wilt converteren? Dat gaat zelfs op een quad niet echt lekker lopen denk ik.

Roomba E5 te koop


  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 27-11 08:28
Zit ondertussen al wat verder met code, maar vroeg mij af op het mogelijk was om de batch in een soort van venster in mijn progje weer te geven? soort van panel ofzo?
(in die batch wordt namelijk status van conversie weergegeven)

code:
1
2
3
4
5
6
7
8
9
10
Dim psi As New System.Diagnostics.ProcessStartInfo
psi.FileName = "c:\ffmpeg\high43-ratio.bat"
psi.Arguments = strCurrentAVI

'Geminimaliseerd starten
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized

Dim p As System.Diagnostics.Process
p = System.Diagnostics.Process.Start(psi)
p.WaitForExit()


Bedankt!

[ Voor 5% gewijzigd door DenDries op 26-06-2007 15:47 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Nou maak een windows form stop er een panel in en toon die. Wat lukt er niet bij het tonen van je "batch"?

[ Voor 8% gewijzigd door Woy op 26-06-2007 15:50 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 27-11 08:28
Edit: een werkende oplossing gevonden, bedankt NLchris!

[ Voor 107% gewijzigd door DenDries op 26-06-2007 19:15 ]

Pagina: 1