Avatar billede kdkho Nybegynder
09. april 2001 - 13:34 Der er 7 kommentarer og
1 løsning

Køre Dos Program/kommandoer

Normalt kan man køre en batch/dos fil via shell kommandoen, men hvordan finder man ud af hvornår det kaldte program er slut, så VB programmet kan fortsætte sin kode?

Alternativt, kan man skrive dos kommandoen inde i VB programmet, i stedet for at bruge shell kommandoen?
Avatar billede driis Nybegynder
09. april 2001 - 13:39 #1
Du kan evt. bruge ShellExecute API kaldet til at starte dit DOS program. ShellExecute returnerer et handle til det vindue, dit DOS program kører i. Så kan du starte en timer, der med passende mellemrum tjekker, om det vindue stadig eksisterer - når det ikke eksisterer længere, er DOS programmet afviklet.
Avatar billede hansen2000 Nybegynder
09. april 2001 - 14:01 #2
www.planet-source-code.com/vb

der er massere exempler - 1mill.

Avatar billede kdkho Nybegynder
09. april 2001 - 14:50 #3
Til driis:
kan du evt. lave et eksempel, for jeg synes ikke jeg kan bruge MSDN hjælpen særlig meget? Hivs du kender svaret med DOS kommandoen i VB må du meget gerne besvare dette også?


Avatar billede driis Nybegynder
09. april 2001 - 18:56 #4
Hvad er det for en DOS kommando, du vil bruge?
Avatar billede kdkho Nybegynder
11. april 2001 - 08:31 #5
Det der er meningen er, at man først skal køre følgende kode som, i dag, ligger i en batch fil:

@echo off
route add xxx.yy.xxx.ee MASK 999.999.999.999 55.44.0.9
exit

Herefter skal man tilslutte sig dette netværksdrev, som de E:

Avatar billede driis Nybegynder
11. april 2001 - 13:00 #6
Hmm, jeg er ikke sikker på, at mit første svar virker, det var bare en øjeblikkelig indskydelse. Jeg har lige været ved at forsøge at få det til at virke, umiddelbart uden resultat. Men jeg kan ikke lige se, hvorfor det ikke virker.

Avatar billede driis Nybegynder
11. april 2001 - 13:07 #7
En anden, lidt mindre elegant, måde at gøre det på, ville være at bruge en midlertidig fil, f.eks. kunne bat filen se sådan ud:

@echo off
route add xxx.yy.xxx.ee MASK 999.999.999.999 55.44.0.9
echo routecomplete>c:\\route.tmp
exit

Så laver du et test i Visual Basic, f.eks.

On Error Goto NoGood
Do
NoGood:
  DoEvents
  Sleep 200
  Open \"c:\\route.tmp\" For Input As 1
  Input #1,buffer
  Close 1
Loop Until buffer=\"routecomplete\"
On Error Resume Next
Kill \"c:\\route.tmp\"
On Error Goto 0

Avatar billede driis Nybegynder
11. april 2001 - 13:11 #8
Det der sker, er at når route - kommandoen i BAT filen er udført, så skrives en midlertidig fil med indholdet \'routecomplete\'. Dit VB program skal så bare have en løkke, der tjekker om den midlertidige fil eksisterer, og om den indeholder strengen \'routecomplete\'. Når programmet fortsætter, skal det selvfølgelig sørge for at slette den midlertidige fil igen.
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