[ mvlado @ 21.05.2004. 10:34 ] @
Kao što može da primi neke parametre, pre izvršavanja, da li VB aplikacija može i da vrati neku poruku na kraju.

Npr. iz nekog programa pozovem neku rutinu "prebaci.exe 1,50" (prebaci sve zapise od broja 1 do 50) i kada ova rutina završi prebacivanj vrati poruku npr. "prebačeno 38 zapisa" ili "ERROR xyz" itd. i na osnovu te poruke prvi program odlučuje šta dalje.
[ jc denton @ 05.06.2004. 11:25 ] @
Odlicno pitanje. VB na zalost nema mogucnosti da koristi STDOUT i STDDIN direktno. Sve sto ostaje je da se koriste Win32 Console Functions pomocu kojih mozes da kreiras konzolu, pises u nju i citas iz nje. Problem pri startovanju vb aplikacije iz konzole je to sto se odmah pri startu VB aplikacija "otkaci" (detach) od konzole i onda je malo nezgodno naci handle konzole iz koje je VB aplikacija pokrenuta.
[ degojs @ 05.06.2004. 12:04 ] @
Može, može..
Code:

Option Explicit

Public Sub Main()
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  
  Call FSO.GetStandardStream(1).WriteLine("Neki tekst na konzolu..")
End Sub

E sad, da bi ovo proradilo, potrebno je da još iskoristiš EDITBIN.EXE koji dolazi uz Visual Studio. Dakle, kompajliraj svoju aplikaciju i zatim dobiveni exe (npr. Project1.exe) obradi pomoću:

editbin /subsystem:console project1.exe

i to je to. Pokretanjem programa iz konzole dobiva se lepo očekivani tekst u istoj.

Pozdrav
[ jc denton @ 05.06.2004. 15:11 ] @
Da, svakako postoji workaround - ovo ne radi "sam VB". Steta sto kod mene ovo ne radi posto mi prilikom pokretanja editbin.exe javlja da nedostaje neka biblioteka mspdb60.dll.

Nego, sta cemo za STDIN? ;) Da li FSO daje moguce resenje i za to?

Inace, verujem da uz malo truda moze da se odradi preko odredjenih Console Functions.
[ degojs @ 05.06.2004. 15:37 ] @
Potrebnu biblioteku (imaš je na disku) samo iskopiraj u isti folder gde je i editbin.exe. Što se stdin tiče, dovoljno je da staviš GetStandardStream(0), mada ovo bih morao da proverim - uglavnom mi nije trebalo (a ulazne parametre iz komandne linije, znaš i sam, možeš da čitaš pomoću Command$).
[ Qlex @ 11.06.2004. 06:45 ] @
Ne, ne, ne...

Za izvrsavanje ovog koda...

Code:

Option Explicit

Public Sub Main()
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  
  Call FSO.GetStandardStream(1).WriteLine("Neki tekst na konzolu..")
End Sub


ti je samo potrebno da dodas odredjenu referencu u program. U ovom slucaju je to Microsoft Scripting Runtime koja se nalazi u COM odeljku (Project -> Add Reference, za .NET i Project->References, za VB6)

Pozdrav

[ mladenovicz @ 03.09.2004. 14:28 ] @
Code:

Declare Sub ExitProcess Lib "kernel32" Alias "ExitProcess" (ByVal uExitCode As Long)


Citat:
Parameters:
· uExitCode
Specifies the exit code for the process, and for all threads that are terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process’s exit value. Use the GetExitCodeThread function to retrieve a thread’s exit value.


Code:

Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

Private Sub Form_Load()
    'end this process
    ExitProcess GetExitCodeProcess(GetCurrentProcess, 0)
End Sub
[ degojs @ 05.09.2004. 17:17 ] @
Citat:
kuske:Ne, ne, ne...
Za izvrsavanje ovog koda...
..
ti je samo potrebno da dodas odredjenu referencu u program. U ovom slucaju je to Microsoft Scripting Runtime koja se nalazi u COM odeljku (Project -> Add Reference, za .NET i Project->References, za VB6)


Tek sam sad video ovaj komentar koji nije tačan, kako ne bi bilo zabune.
[ mladenovicz @ 05.09.2004. 20:40 ] @
Da, ovo je late binding.

Za ovo ne treba referenca na FSO

Code:

  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")


a za ovo bi trebala

Code:

  Dim FSO As Scripting.FileSystemObject
  Set FSO = New Scripting.FileSystemObject