Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: VB.net ja konsolin piilotus

progo [30.10.2006 18:04:27]

#

Eiköhän otsikko kerro kaiken. Mulla on konsoliohjelma joka starttaa toisen ohjelman, jää odottamaan taustalle kun ajettava softa lopettaa, sitten tekee tiedostokopioinnin ja quittaa. Muuten toimii nyt ihan ok mutta enää jää häiritsemään se konsoli-ikkuna siihen roikkumaan, saattaa olla että menee aina tuntejakin että se ajettava ohjelma pysyy päällä joten kaikki ylimääräset akkunat poies työpöydältä ja tehtäväpalkista olisi enemmän kuin mukavaa.

Yritin vähän etsiskellä täältäkin ratkaisua, ainut mikä vähän näytti olevan asiaa oli jotain prosessin rekisteröimistä palveluksi mutta siitä tulleet esimerkit oli vähän sekavia.

E: ja typo näemmä otsikossakin :( Älkää nälvikö liiaksi.

Metabolix [30.10.2006 18:52:10]

#

En löytänyt VB.Netistä sellaista ominaisuutta, mutta WinAPIn avulla se onnistuum ja sitä voi toki periaatteessa käyttää (vaikkei se hyväksi olekaan). Kaksi tapaa, joista yksi on lyhyt ja toinen hieman pidempi. Ensimmäinen ainakin todistettavasti C++:lla toimii varsin hyvin, mutta laitetaan nyt varmuuden vuoksi kummatkin. Toista en ole lainkaan testannut, mutta kai sekin teoriassa toimii. Googlella nämä ajatukset löytyivät.

Declare Function FreeConsole Lib "kernel32" () As Integer
' Ja sitä sitten kutsut.
Public Declare Function GetConsoleTitle Lib "kernel32" Alias "GetConsoleTitleA" (ByVal lpConsoleTitle As String, ByVal nSize As Integer) As Integer
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
' ...
Dim strTitle As String
Dim rtnLen As Integer
Dim hwnd As Int32

strTitle = Space(256)
rtnLen = GetConsoleTitle(strTitle, 256)

If rtnLen > 0 Then
  strTitle = Left$(strTitle, rtnLen)
End If

hwnd = FindWindow(vbNullString, strTitle)
ShowWindow(hwnd, 0)
' Tämän ikkunan saa vielä tarvittaessa takaisinkin, varmaan 1 tuohon 0:n paikalle.

progo [30.10.2006 19:01:38]

#

Tosiaan ensimmäinen toimii, kiitos kovin!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta