|
|
| Auteur |
Bericht |
guido1
|
|
Onderwerp: DOS-box onzichtbaar maken
Geplaatst: 17 jul 2010 - 15:49
|
|
Professional Developer
Geregistreerd op: 24-mrt-2006
Berichten: 489
Status: Offline
|
|
| Om het commando ipconfig uit te voeren gebruik ik volgende code: Visual Basic code: Dim BatFile As String = "c:\ip.bat" Dim objStreamWriter As New StreamWriter(BatFile, False) objStreamWriter.WriteLine("@echo Off") objStreamWriter.WriteLine("ipconfig /all >>" & Chr(34) & LogFile & Chr(34)) objStreamWriter.WriteLine("exit") objStreamWriter.Close()
Dim listFiles As System.Diagnostics.Process listFiles = System.Diagnostics.Process.Start(BatFile)
Dit werkt wel goed maar ik wil die zwarte DOS-box tijdens het uitvoeren onzichtbaar maken.
Iemand een idee hoe ik dat kan doen?
Guido |
|
|
| |
|
|
|
 |
Dummy1912
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 18 jul 2010 - 08:08
|
|
Professional Developer
Geregistreerd op: 28-apr-2010
Berichten: 250
Status: Offline
|
|
Hallo guido1,
waarom wil je de dosbox onzichtbaar maken?
is toch handig als je de uitvoer ziet.
maar hier is hoe het mogelijk is
hoop dit is wat je zoekt.
Visual Basic code: Dim mProcess As Process mprocess.StartInfo.CreateNoWindow = True
Dummy1912 |
|
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 18 jul 2010 - 12:15
|
|
Professional Developer
Geregistreerd op: 24-mrt-2006
Berichten: 489
Status: Offline
|
|
Hoi Dummy1912,
Bedankt voor je reactie.
Als je zelf aan de pc zit en je voer het commando IPCONFIG uit is het voldoende als je de uitslag op het scherm zit. Maar in mijn geval zal het commando zijn resultaat in een logfile schrijven. Deze logfile wordt dan opgestuurd via email en wordt geanalyseerd door iemand die er hopelijk iets van kent. Buiten het commando IPCONFIG zijn het zog andere commando's die ook telkens zo'n DOS-box aanmaken en dat is geen zicht.
Maar jou voorstel, hoe moet ik dat in mijn voorbeeld implementeren? Ik heb nu:Visual Basic code: Dim listFiles As System.Diagnostics.Process listFiles.StartInfo.CreateNoWindow = True listFiles = System.Diagnostics.Process.Start(BatFile, vbHide)
Maar dat geeft een error op de lijn met StartInfo: Quote: De objectverwijzing is niet op een exemplaar van een object ingeteld.
Hoe met dat in mijn voorbeeld?
Guido |
|
|
| |
|
|
|
 |
Dummy1912
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 18 jul 2010 - 13:12
|
|
Professional Developer
Geregistreerd op: 28-apr-2010
Berichten: 250
Status: Offline
|
|
Hallo Guido1,
ok probeer deze eens
Visual Basic code: Dim mProcess As Process 'form level
mProcess = New Process With mProcess.StartInfo ..WindowStyle = ProcessWindowStyle.Hidden ..StartInfo.CreateNoWindow = True
zou moeten werken.
Dummy1912 |
|
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 18 jul 2010 - 21:22
|
|
Professional Developer
Geregistreerd op: 24-mrt-2006
Berichten: 489
Status: Offline
|
|
Hoi Dummy1912,
Het is uiteindelijk gelukt, bedankt.
Guido |
|
|
| |
|
|
|
 |
Dummy1912
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 19 jul 2010 - 11:07
|
|
Professional Developer
Geregistreerd op: 28-apr-2010
Berichten: 250
Status: Offline
|
|
@guido1,
Cool
ben blij voor je.
graag gedaan.
heb je veel moeten veranderen? of is het met deze code gelukt.
Dummy1912 |
|
|
| |
|
|
|
 |
guido1
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 19 jul 2010 - 14:07
|
|
Professional Developer
Geregistreerd op: 24-mrt-2006
Berichten: 489
Status: Offline
|
|
Veel veranderen? Nee, het is enkel door mijn gebrekkige kennis dat ik zo bleef sukkelen maar uiteindelijk is het dank zij uw hulp toch gelukt.
En heb ik ook weer een beetje meer doorzicht hoe dat het werkt.
Heel hard bedankt,
Guido |
|
|
| |
|
|
|
 |
Dummy1912
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 19 jul 2010 - 14:27
|
|
Professional Developer
Geregistreerd op: 28-apr-2010
Berichten: 250
Status: Offline
|
|
Geen dank
je zou net het zelfde doen voor mij
Ben blij dat ik je heb kunnen helpen.
Veel success verder
Groetjes
Dummy1912 |
|
|
| |
|
|
|
 |
appie21
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 26 jul 2010 - 20:03
|
|
Junior Developer
Geregistreerd op: 08-apr-2010
Berichten: 53
Status: Offline
|
|
daar ben ik ook weer met een aanvulling
ik heb ook een probleem met Process.Start
ik wil graag een programma starten
Process.Start("afterfx") dit start adobe after effects op werkt gewoon
maar nu wil ik ook dat hij gelijk mijn script laad en dat doe ik met Process.Start("afterfx -r d:\2.jsx")
als ik het nu draai krijg ik de volgende foutmelding
Code: System.ComponentModel.Win32Exception was unhandled
ErrorCode=-2147467259
Message=Het systeem kan het opgegeven bestand niet vinden
NativeErrorCode=2
Source=System
StackTrace:
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at simulator_3._0.Dialog1.Button3_Click(Object sender, EventArgs e) in C:\Users\Albert\Documents\Visual Studio 2010\Projects\simulator 4.0\simulator 3.0\Dialog1.vb:line 11861
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at simulator_3._0.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
wat doe ik fout? |
|
|
| |
|
|
|
 |
Dummy1912
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 26 jul 2010 - 23:07
|
|
Professional Developer
Geregistreerd op: 28-apr-2010
Berichten: 250
Status: Offline
|
|
@appie,
kan het zijn dat je de c:\+folder bent vergeten en de .exe
ben er niet zeker van maar is maar een gedacht.
Dummy1912 |
|
|
| |
|
|
|
 |
Jark
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 27 jul 2010 - 07:55
|
|
Senior Developer
Geregistreerd op: 29-sep-2009
Berichten: 182
Status: Offline
|
|
|
|
|
 |
appie21
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 27 jul 2010 - 09:32
|
|
Junior Developer
Geregistreerd op: 08-apr-2010
Berichten: 53
Status: Offline
|
|
aha opgelost
het juiste is
Code: Process.Start("afterfx.exe", "-r D:\2.jsx") |
|
|
| |
|
|
|
 |
appie21
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 29 jul 2010 - 23:31
|
|
Junior Developer
Geregistreerd op: 08-apr-2010
Berichten: 53
Status: Offline
|
|
Ik heb nog even een aanvullende vraag
met Process.Start("afterfx.exe")
kan ik adobe after effects starten. Dit werkt perfect
maar bestaat er ook zoiets als:
Zodra ik adobe After Effects afsluit mijn programma weer verder gaat.
Dus zodra een extern programma gesloten wordt mijn programma weer verder gaat waar het gebleven was?
Ik ben benieuwd! |
|
|
| |
|
|
|
 |
Jark
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 30 jul 2010 - 07:17
|
|
Senior Developer
Geregistreerd op: 29-sep-2009
Berichten: 182
Status: Offline
|
|
Hallo Appie,
Ik gebruik zelf onderstaande code:
Visual Basic code: While Not process.HasExited Threading.Thread.Sleep(1) End While
De sleep zorgt ervoor dat je geen 100% cpu krijgt en de while zorgt ervoor dat je UI thread nog door blijft lopen en dat je UI niet "vastloopt".
Edit: je moet natuurlijk wel je process toekennen aan de process variable.
Dus jij krijgt dan:
Visual Basic code: Dim process = Process.Start("afterfx.exe", "-r D:\2.jsx")
Voor bovenstaand stukje code.
Er bestaan nog veel meer manieren om dit te doen (met bijvoorbeeld de .WaitForExit methode), maar deze methode werkt voor mij.
Mvg,
Jark |
|
|
| |
|
|
|
 |
appie21
|
|
Onderwerp: Re: DOS-box onzichtbaar maken
Geplaatst: 30 jul 2010 - 07:33
|
|
Junior Developer
Geregistreerd op: 08-apr-2010
Berichten: 53
Status: Offline
|
|
zou je een voorbeeld willen geven
ik snap het niet helemaal?
ik heb het nu zo dat als ik op een button klik After effects word gestart
Process.Start("afterfx.exe", "-r D:\2.jsx") After effects voert een script ui en after effects wordt gesloten daarna moet mijn programma weer verder gaan
Bijvoorbeeld door een messagebox dat After effects is afgesloten.
hoe nu verder
Alvast bedankt! |
Laatst aangepast door appie21 op 30 jul 2010 - 13:03, in totaal 1 keer bewerkt
|
| |
|
|
|
 |
|
|
|
|