Oppure

Loading
08/05/08 18:27
Overflow
Voglio creare in Visual Basic un programma senza interfaccia grafica, che funzioni sotto Dos. Un semplice programma che mi stampi su schermo la scritta Hello World! Sapete come si fa?? So solo che si crea una sub main() in un modulo ma non so come stampare una scritta su console. Ad esempio per chi conosce il C/C++ si può usare la printf(), in Visual Basic come si fa??
Grazie!
aaa
08/05/08 19:11
kryc
in vb.net
aaa
08/05/08 20:10
antometal
qui marcopipino.it/visualbasic/
avevo trovato un prog che fa le operazioni del cmd di windows
aaa
08/05/08 21:00
P4p3r0g4
il vb6 non e` il linguaggio adatto per questo tipo di programmi.
aaa
09/05/08 8:12
Overflow
Postato originariamente da kryc:

in vb.net


se ho postato qui vuol dire che sto parlando di Visual Basic 6.0, altrimenti avrei postato il problema nella sezione .Net.

Postato originariamente da P4p3r0g4:

il vb6 non e` il linguaggio adatto per questo tipo di programmi.


adatto che vuol dire che non si può fare... o che si può fare ma è complesso da sviluppare???
Ultima modifica effettuata da Overflow 09/05/08 8:13
aaa
09/05/08 12:04
gantonio
In VB6 e' possibile ma dovrai utilizzare un bel po' di API ed e' un po' complesso.

Prima di iniziare a farlo, mi piacerebbe capire come mai vuoi fare una cosa del genere per forza in VB6 ...
aaa
09/05/08 14:05
Overflow

Postato originariamente da gantonio:
In VB6 e' possibile ma dovrai utilizzare un bel po' di API ed e' un po' complesso.

va bene...

Prima di iniziare a farlo, mi piacerebbe capire come mai vuoi fare una cosa del genere per forza in VB6 ...

no non c'è un motivo.. è solo pura curiosità.
Non ho mai visto un applicazione in Visual Basic che giri sotto Dos, e visto che non la so realizzare volevo capire come fare... Pura e semplice curiosità!
Ultima modifica effettuata da Overflow 09/05/08 14:08
aaa
09/05/08 14:29
gantonio
Ovviamente non sara' un'applicazione DOS ma una applicazione che utilizza le Console di Win32.

Un esempio, liberamente modificato da un codice di esempio, e' il seguente (utilizza un solo modulo e fai partire il programma dalla main ...)

Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_INPUT_HANDLE = -10&
Private Const STD_ERROR_HANDLE = -12&

Private Declare Function AllocConsole Lib "kernel32" () As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long
Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

Private hConsoleOut As Long
Private hConsoleIn As Long

Private Sub Main()
    Dim r As String
    
    AllocConsole

    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
    hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)

    SetConsoleTitle "Prova console"

    ConsoleWriteLine "Ciao a tutti ..."

    r = ConsoleReadLine
    
    CloseHandle hConsoleOut
    CloseHandle hConsoleIn
    FreeConsole
End Sub

Sub ConsoleWriteLine(sInput As String)
    ConsoleWrite sInput + vbCrLf
End Sub

Sub ConsoleWrite(sInput As String)
    Dim cWritten As Long
    WriteConsole hConsoleOut, ByVal sInput, Len(sInput), cWritten, ByVal 0&
End Sub

Function ConsoleReadLine() As String
    Dim ZeroPos As Long
    ConsoleReadLine = String(10, 0)
    ReadConsole hConsoleIn, ConsoleReadLine, Len(ConsoleReadLine), vbNull, vbNull
    ZeroPos = InStr(ConsoleReadLine, Chr$(0))
    If ZeroPos > 0 Then ConsoleReadLine = Left$(ConsoleReadLine, ZeroPos - 3)
End Function
aaa