Ik start een executable (gemaakt in C#) welke een textfile uitleest.
De regels in die textfile zijn ofwel commando's in een bepaalde format, ofwel zogenoemde headers.
Een header wordt gestripped van zijn header chars en zou weggeschreven moeten worden in een textveld. (textbox1, multiline, vertical scrollbar)
Een commando wordt als een argument gebruikt voor een new System.Diagnostics.Process.
Dit process start een vbs bestand af, en wacht totdat hij klaar is.
Het probleem zit hem in het feit dat het form pas weer wordt gegeven als alle commando's zijn gestart. Op dat moment staan alle headers wel keurig in het textveld..
Het zou iets moeten worden dat bepaalde inlogtaken kan doen. Het is puur spielerij verder.
void trim verwijderd de blokhaken om de header regel.. (Ik wil nog een keer met regex gaan spelen..)
Overigens moet de inputtextfile en de naam/locatie van het script straks als argument aan het programma worden meegegeven.
Weet iemand een mogelijke oplossing voor het probleem dat het form zich pas laat zien als alle commando's zijn afgelopen
Ik heb de proc.WaitForExit(); al enkele waardes gegeven (in miliseconden) maar zelfs bij 3 seconden laat hij niet het form zien eerdat hij alle commando's heeft door lopen. Hij wacht wel keurig 3 seconden tussen elk commando.
Is er misschien een handigere manier van shell commando's aftrappen
De regels in die textfile zijn ofwel commando's in een bepaalde format, ofwel zogenoemde headers.
Een header wordt gestripped van zijn header chars en zou weggeschreven moeten worden in een textveld. (textbox1, multiline, vertical scrollbar)
Een commando wordt als een argument gebruikt voor een new System.Diagnostics.Process.
Dit process start een vbs bestand af, en wacht totdat hij klaar is.
Het probleem zit hem in het feit dat het form pas weer wordt gegeven als alle commando's zijn gestart. Op dat moment staan alle headers wel keurig in het textveld..
Het zou iets moeten worden dat bepaalde inlogtaken kan doen. Het is puur spielerij verder.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| private void StartLogon() { string TextFile = @"C:\\test.txt"; // Open file try // Check if File exists { if (File.Exists(TextFile)) { try // Try to open the file { using (StreamReader sr = new StreamReader(TextFile.ToString())) { string line; while ((line = sr.ReadLine()) != null) { if (line.StartsWith("[")) //Line is a header. { trim(line); if(trimmedline == "END") { this.Close(); } else { this.textBox1.AppendText(trimmedline + "\r\n"); } } else { // line is not a header, but a command. System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.FileName="c:\\logon.vbs"; proc.StartInfo.Arguments=line; proc.Start(); proc.WaitForExit(); } } } } catch(IOException ioe) { MessageBox.Show(ioe.Message); } catch(Exception e) { MessageBox.Show(e.Message); } // File sluiten hoeft niet door using.. } //close for if statement else { MessageBox.Show("File does not exist"); } } catch(IOException ioe) { MessageBox.Show(ioe.Message); } } |
void trim verwijderd de blokhaken om de header regel.. (Ik wil nog een keer met regex gaan spelen..)
Overigens moet de inputtextfile en de naam/locatie van het script straks als argument aan het programma worden meegegeven.
Weet iemand een mogelijke oplossing voor het probleem dat het form zich pas laat zien als alle commando's zijn afgelopen
Ik heb de proc.WaitForExit(); al enkele waardes gegeven (in miliseconden) maar zelfs bij 3 seconden laat hij niet het form zien eerdat hij alle commando's heeft door lopen. Hij wacht wel keurig 3 seconden tussen elk commando.
Is er misschien een handigere manier van shell commando's aftrappen
[ Voor 3% gewijzigd door Equator op 22-02-2005 14:16 ]