Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda semplice per esperti (?)

SI può, con VB, scrivere sulla riga di comando?
Mi spiego: faccio un prog in VB, questo viene eseguito da riga di comando
Es.: C:\>mioprog.exe
e lui deve scrivere, ad esempio, al termine dell'esecuzione:
C:>Esecuzione terminata correttamente.
Grazie in anticipo a tutti coloro che risponderanno :)
Ciao a tutti.
Dads.

dads,
ma ti costava tanto scrivere un subject piu' utile ?
ciao, hal

 C:>Esecuzione terminata correttamente.
Credo proprio di no, essendo Visual Basic un linguaggio di programmazione
grafico, che utilizza Windows.
Non ha quindi funzioni per l'uscita e l'entrata di dati in DOS.
Probabilmente devi usare un linguaggio tipo QBasic o Turbo Basic per
interagire su riga di comando.
Non escludo che ci sia una API per fare cio' (lo reputo difficile, ma
possibile... con le api si fa di tutto).
Ciao
Bald0z


come no! puoi aprire una shell dos tranquillamente e catturare anche
l'output, ma non ricordo come, guarda l'help...
Ciao
Al


 possibile... con le api si fa di tutto).
Certo che ci sono!
Le Console API.
Sul sito comune ho postato anche un'abbozzo di classe per la gestione di
applicazioni console.
Un'abbozzo perchè sembra che alcune non ne vogliano sapere di funzionare da
VB :(
Sito Comune, Sezione Leonardo
Ciao

come no! puoi aprire una shell dos tranquillamente 
si', ma lui c'e' gia' nella shell ...
... e vorrebbe scrivere proprio li'.
Credo che occorra farsi un semplice programmino wrapper in C che:
1) chiami il prog vb, che non dovra' mostrare finestre;
2) attenda la fine dell' esecuzione dell' applicazione vb;
3) scriva sulla console il messaggio per l' utente.
Oppure aspetta un po' e usa .NET
Attendo smentite.
ciao, hal

 VB :(
ma l'applicazione vb in questo modo blocca il thread della shell dove viene
chiamato il programma ?


Eccomi qui... il solito rompi...
Non conosco -esattamente- le tue esigenze, ma...
1) Usare un msgbox invece che una stringa sulla console dos, visto che,
incidentalmente, stiamo lavorando in win...?
2) Usare un batch di lancio tipo:
@echo off
progetto1
:loop
if exist run goto loop
if exist flag echo Esecuzione terminata
e un exe vb che faccia qualcosa tipo:
Private Sub Command1_Click()
    Me.Hide
    Open "c:\flag" For Output As #1
    Close #1
    Kill "c:\run"
    Unload Me
End Sub
Private Sub Form_Load()
    Open "c:\run" For Output As #1
    Close #1
    If Dir("c:\flag") <> "" Then
        Kill "c:\flag"
    End If
End Sub
(o versioni un po' piů evolute... abbi pazienza ma alle 2.40 di notte mi
viene solo questo...)
ti sembra troppo semplice?
E' proprio necessario scomodare api e vespette varie?
Che devi fare di preciso?
ciao
ugo

 wrote in message
news:9pnnj1$jqj5h$1...@ID-56381.news.dfncis.de...


 wrote in message
news:9pnnop$e8u$1...@serv1.albacom.net...


 C:>Esecuzione terminata correttamente.
CreateFile, usando CONOUT$ come nome di file, e poi WriteConsole 
sull'handle così ricavato. Oppure (meglio) passa STD_OUTPUT_HANDLE a 
GetStdHandle e scrivi con WriteFile
Occhio a:
 - l'handle ottenuto con CreateFile è un buffer di console, non ti 
garantisco che sia sempre valido, perchè raramente (anzi, credo mai) ad 
un programma grafico viene associata una console (forse se lo avvii da 
una console già aperta, ma non ci giurerei). In fase di debug la console 
non verrà creata in ogni caso, quindi se vuoi testare le funzioni di 
output creala tu esplicitamente con AllocConsole
 - l'handle ottenibile con GetStdHandle è a discrezione del processo 
genitore, se detto processo ha deciso di specificare degli handle da 
usare come handle standard per il tuo programma, bene, sennò ciccia
Vedi se riesci a procurarti editbin, mi dicono incluso in Visual Studio, 
è un programma che ti permette di modificare l'header degli eseguibili, 
ad esempio trasformando un eseguibile grafico in uno testuale, quello 
dovrebbe bastare a risolvere tutti i tuoi problemi

 ugo
Se il mio problema fosse stato così semplice l'avrei già risolto.
Purtroppo è più complesso di questo.
Devo lanciare il CMD, lanciare il prog, attendere prego, capire che ha
finito e se ha avuto problemi.
Era una cosa semplice qualche anno fa, solo che adesso mi sono troppo
abituato a scrivere sw in Windows e tornare alle vecchie cose mi riesce
difficile.
Grazie lo stesso per l'aiuto :)
Dads.


<ETC ETC>
Mi sembra una soluzione carina, ma ci sto provando e non riesco a farlo
funzionare:
A) Creo l'exe
B) esco alla shell (Win2K->CMD)
C) eseguo l'exe
    - MyHndl=GetStdHandle...
    - WriteFile (MyHndl -...)
        nisba
    - MyHndl=CreateFile("CONOUT$",...)
    - WriteConsole (MyHndl -...)
        nisba
D) vado a letto.
Grazie ancora per l'aiuto, riproverņ. Quella dell'EDITBIN perņ non l'ho
capita...

Si può, ma è un casino.
Nel senso che devi usare le API di scrittura sulla console e devi, per fare
in modo che la tua scritta appaia sulla console corrente, modificare il file
.exe.
Io su Internet ho scaricato un po di cose dal sito di un tale L.J. Jonhson,
però non trovo l'url esatta, buona caccia.
Saluti
Massimo


E' perchè devi modificare il .Exe per dire che è una Console App.
Saluti
Massimo
