[VB6]DOS commandline applicatie aansturen

Pagina: 1
Acties:

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Topicstarter
Omdat ik de output van het programma XFoil graag beschikbaar wil hebben voor verdere berekeningen, ben ik opzoek naar een manier om deze applicatie aan te sturen vanuit een VB-applicatie. Het programma analyseert vleugelprofielen en schrijft de polardata hiervan weg naar een tekstbestand.
In eerste instantie was ik van plan dit webbased middels het asp-component ASPEXEC te gaan doen, maar aangezien dit zowel qua beveiliging als performance teveel problemen opleverd, heb ik besloten gewoon een standalone tooltje te maken in VB6.

Maar nu ben ik al praktisch de hele ochtend bezig om te kijken hoe ik dit voor elkaar kan krijgen. Het opstarten van de applicatie is geen probleem, maar hoe ik het vervolgens moet aansturen...
Het programma gebruikt simpele commands als LOAD [pad naar te laden bestand] of NACA & 4-cijferige numerieke waarde, of bijvoorbeeld ASEQ om een reeks van AoA's aan te geven waarvan de polardata moet worden berekend.
Ik moet dus zien de input uit de VB applicatie door te sturen naar xfoil waarop deze de berekende gegevens opslaat in een tekstbestand, die ik vervolgens in VB weer ga uitlezen en gebruiken voor andere berekeningen.
Het starten en via de API controleren of het proces is gestart(/beeindigd) kom ik wel uit, hier is ook genoeg documentatie over te vinden, maar hoe kan ik ervoor zorgen dat de betreffende commands worden uitgevoerd met eventueel tussenposes voor zware operatie's? SendKeys vind ik te ranzig en Shell is te beperkt qua mogelijkheden. ShellExecute heb ik ook naar gekeken, maar die kan alleen parameters doorsturen die voor het opstarten van belang zijn en niet zozeer voor het aansturen van de applicatie.

Dit is eigenlijk het enige wat in de commandline van XFoil ingevuld hoeft te worden:
LOAD [pad naar bestand] & Enter
OPER & Enter
VISC & Enter
IITER & Enter & 90 & Enter
PACC & enter
[pad naar op te slaan bestand] & Enter
Enter

ASEQ & Enter
-6 & Enter
15 & Enter
0.5 & Enter

[Nu komt er een redelijk zware berekening]
[Tekstbestand met polardata wordt weggeschreven]


Exit & Enter
offtopic:
Het is alweer een tijdje geleden dat ik iets met VB, of programmeren in het algemeen, heb gedaan, dus het kan zijn dat ik hier iets simpels vraag. De search, MSDN, & Google gaven echter geen oplossing.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 08:52

RayNbow

Kirika <3

Waarschijnlijk heb je wat aan de CreatePipe() API call. Op deze pagina kan je wat vinden hoe je de StdOut kan redirecten: http://www.developersdomain.com/vb/articles/redirectpipe.htm
Analoog hieraan kan je ook de StdIn redirecten.

Nog wat linkjes:
[rml].oisyn in "[ C++/Linux] Communiceren met CLI applica..."[/rml]
MSDN, Creating a Child Process with Redirected Input and Output

[ Voor 42% gewijzigd door RayNbow op 26-02-2005 14:56 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Topicstarter
Thanx voor de links. Ik zal het eens doornemen. Zo op het eerste gezicht is dit denk ik inderdaad wat ik zoek. :)
Maar als andere mensen nog ideeen hebben...graag. :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 19-03 00:48

ZaZ

Tweakers abonnee

iets van 2 dagen geleden heb ik hier nog een stukje kant en klare code gepost om stdout te lezen
als je veel meer ervan wilt weten hoe het te doen in vb6 dan kan je hier naar toe
http://vb.mvps.org/

Lekker op de bank