Newsgroup: it.comp.lang.visual-basic
Titolo: VB.NET avviare exe nascosto

Ciao a tutti
c'č modo di avviare un eseguibile in modo totalmente nascosto?
Ho creato una sorta di launcher .NET che lancia alcuni eseguibili tramite:
Process.StartInfo.WindowStyle= <valore>
Process.Start()
Ma il WindowStyle non lo considera.
Teoricamente potrei mettere mano anche agli eseguibili lanciati (che sono
in VB6) ma volevo evitare perchč sono tanti e sarebbero da ritestare, e non
č cosě semplice essendo "driver".
Grazie

On 1 Mar, 13:00, "Andrea [Work]" <andrea.isworkDELET...@gmail.invalid>
wrote:
zac
        Dim pp As Process
        Dim tt As New ProcessStartInfo
        tt.WindowStyle = ProcessWindowStyle.Hidden
        tt.FileName = "c:\windows\system32\mspaint.exe"
        tt.CreateNoWindow = True
        pp = Process.Start(tt)
        MessageBox.Show("Wait Ammazzo e riavvio in maniera diversa")
        pp.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
        pp.Kill()
        pp.Start()
Avvertenze:
se lo fai con MIRC ad esempio non funziona!
Perchè mirc è costruito per andare per default a pieno schermo.
Se lo usi con programmi tuoi devi prevedere un "silent mode" fra le
opzioni da command line  per andare nascosto.


wrote:

Logicamente devi provare avendo accanto il task manager per vedere che
te lo avvia davvero ma senza aprire finestre!

 te lo avvia davvero ma senza aprire finestre!
Grazie,
i programmi son miei, ma con CreateNoWindows non mi pare faccia nulla. Il
codice è questo:
                    Dim fileName As String = Me.ExePath
                    Me.Process = New Process
                    Me.Process.StartInfo.FileName = fileName
                    Me.Process.StartInfo.WindowStyle = Me.WindowStyle
                    Me.Process.StartInfo.CreateNoWindow = True
                    If Me.CommandLine.Length > 0 Then
                        Me.Process.StartInfo.Arguments = Me.CommandLine
                    End If
                    Me.Process.Start()
Ovviamente Me.WindowStyle è su Hidden.
Ma il CreateNoWindow cosa farebbe allora? Fa un "tentativo"?
Perchè penso che alla fine devo mettere mano ai singoli EXE...


zac
Credo interfacci l'api ShowWindow con flag SW_HIDE
però è avvio che se nel load dell'applicazione c'è un
maximize....quello prevale....è l'ultima cosa che fà!
in buona sostanza ...credo sia un wrapper !
infatti puoi sostituire quella serie di comandi sull'aspetto della
finestra ...se ti piace l'old vb6 style "apifero"... con:
http://pinvoke.net/default.aspx/user32.ShowWindow

 Grazie
ciao,
gli eseguibili che lanci sono tutti in console-mode?
vedi se questa tecnica risolve il tuo problema ;-)
Imports System.Runtime.InteropServices
Module Module1
    <DllImport("kernel32.dll", SetLastError:=True,
ExactSpelling:=True)> _
    Private Function FreeConsole() As Boolean
    End Function
    Sub Main()
        Dim bFlag As Boolean = FreeConsole()'// nasconde la
finestra...
    End Sub
End Module
Marcello Cantelmo
www.cantelmosoftware.com

 vedi se questa tecnica risolve il tuo problema ;-)
No sono eseguibili vb6 "normali" con finestra, ma che in realtà vorrei
nascondere dall'esterno senza metterci mano in ognuno.

 
http://pinvoke.net/default.aspx/user32.ShowWindow
Farò qualche altra prova, e al limite scrivo codice nei vari eseguibili se
non riesco.

 
http://pinvoke.net/default.aspx/user32.ShowWindow
Farò qualche altra prova, e al limite scrivo codice nei vari eseguibili se
non riesco.
Grazie

 nascondere dall'esterno senza metterci mano in ognuno.
Io lo ripeto ...però a questo punto credo sia un problema di
comunicazione mio...io scrivo (anche in altri post di altri utenti)
nessuno mi legge!
proverò con un altro linguaggio
Lanciare un processo che piffero significa...terra terra nel caso
specifico?
Significa invocare un exe e riservagli risorse
Lo posso fare in maniera unmanaged...con le API
o managed con la classe Process ed altre
PERO' questo non significa far diventare il mio exe
originale....."altro"!
perchè lanciare un processo NON SIGNIFICA CAZZO far diventare un
programma multiutente monoutente....o farlo diventare un server o
amenità varie!
Il programma rimane il solito!
Se nell'exe esiste un form main che si apre e se nell'evento load c'è
un bel
form MAXIMIZE...è ovvio che il mio exe va a ridimensionare il form per
espanderlo a tutto schermo...e per farlo passa da HIDE (che erano le
impostazioni del form che desideravo nel process) a SHOW MAXIMIZE...
stiamo scherzando che ciò non avvenga? Che succede i programmi
prendono vita e si ribellano al padrone?
Ecco che allora il previdente , colui che vuole usufruire di una cosa
del genere, si inventa un SILENT MODE...hidden mode ....cucù
mode ...come vi pare
ad esempio
STAMPAFATTURE -h c:\pippo\filedastampare.rpt
-h è un parametro che leggo da riga di comando...e non istanzia NULLA
di grafico (preferibile) o disattiva tutti i controlli risoluzione e
resize
D'altrone il Mauro è parecchio che ci ricorda che l'interfaccia è un
pezzo SVINCOLATO dal businness...
con -h la salto!...ed il mio prog ha un silent mode...per lavorare in
background e vivere felici (mica vero...se interviene un errore?.. la
cosa va studiata bene!)
Per questo mi permetto di suggerire:
la logica del lancio di exe è vecchia...sà molto di Cobol e Sistema 36
e olivetti m24.
Se è necessità implementarla va studiata parecchio bene!
La logica di un programma principale...ESPANDIBILE(serve il modulo
magazzino...lo attivo!)....
oggi la fai molto bene con un sistema a plugin e IoC e amenità varie!
Se poi hai fretta ci sono framework che hanno già tutto fatto e una
volta presa la mano tutto è molto RAD (Castle per dirne uno!)....e qui
Mauro se non mi dà una stellina gli tolgo l'amicizia!
Quindi si torna all'origine
Se il tuo sistema non prevede un silent mode non nascondi nulla!
Tutto il resto è noia...nel senso di workaround traballanti a cui io
non affiderei un sistema in produzione!

 wrote:
zac
Fatti questa windows application
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        Me.WindowState = FormWindowState.Maximized
    End Sub
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Me.CreateGraphics.DrawString("Cor cazzo che mi nascondi!", New
Font("Arial", 20), Brushes.DarkRed, New PointF(x:=10, y:=200))
    End Sub
    Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.SizeChanged
        Me.WindowState = FormWindowState.Maximized
    End Sub
End Class
Compilala...ed avviala hidden se ti riesce !
Prrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!

 Prrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!
...addirittura prendere in giro chi "apparentemente" ne sa meno di te
(solo perchè non ha mai affrontato un determinato problema)...non mi
sembra proprio l'atteggiamento da usare in un newsgroup!
just my 2 cent!
Marcello Cantelmo
www.cantelmosoftware.com

 > Compilala...ed avviala hidden se ti riesce !
...peccato che non voglia prendere in giro nessuno!
Visto che è a fare prove....le faccia anche con roba simile...ad
esempio...come detto sopra...provi a nascondere mirc.exe!
Va bene...nessuno legge quello che scrivo....ok!....
(scocciato) ma che me frega a me........il bischero son io che ci
perdo tempo!
Saluti!

 Saluti!
grazie per l'attenzione,
Marcello Cantelmo
www.cantelmosoftware.com

 perdo tempo!
Su non esageriamo, non scrivo da ieri.
Appena ho un attimo provo e lascio il feedback, come ho sempre fatto.
Intanto ti ringrazio della risposta.

 grazie per l'attenzione,
...figurati...
BAH!
Scrivo qui sotto per chiarire ad Andrea il mio intento.....
Del cantelmo non me ne curo....è una vecchia storia...non ci
azzecchiamo!
passo e chiudo!

 che Andrea lo capisca.
Si ma infatti mica me l'ero presa io, solo che ora non ho un secondo per
provare :)

 Intanto ti ringrazio della risposta.
Allora siccome per ora è saltato il lavoro, la metterò nelle cose da
provare "avanza tempo", quindi il feedback potrebbe arrivare fra diverso
tempo.
Grazie comunque per l'aiuto.