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
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.
Logicamente devi provare avendo accanto il task manager per vedere che
te lo avvia davvero ma senza aprire finestre!
>> 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.
>
> Logicamente devi provare avendo accanto il task manager per vedere che
> 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...
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
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
> gli eseguibili che lanci sono tutti in console-mode?
>
> 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.
> 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
Farò qualche altra prova, e al limite scrivo codice nei vari eseguibili se
non riesco.
> 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
Farò qualche altra prova, e al limite scrivo codice nei vari eseguibili se
non riesco.
Grazie
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!
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!
...nessuno vieta, però, di hostare la tua applicazione in un
"panel"...di qualsiasi dimensione...che posso anche nascondere! ;-)
> 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
...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!
oops! per fortuna che (cit) "scritta canta" ...il "Pr...." ...lascia
ad intendere ben altre cose!
> Visto che è a fare prove....le faccia anche con roba simile...ad
> esempio...come detto sopra...provi a nascondere mirc.exe!
...giustamente agli estranei si da del "Lei"! :-) ...devo studiare
meglio il comportamento nei newsgroup
...mirc.exe? :-o ...il tempo tecnico di scaricare e provare:
http://www.cantelmosoftware.com/video/host_mirc.swf ...e funziona! ;-)
> Va bene...nessuno legge quello che scrivo....ok!....
> (scocciato) ma che me frega a me........il bischero son io che ci
> perdo tempo!
scendendo ai suoi stessi livelli...avrei potuto *infierire* ...come
Lei ha fatto con la persona che ha chiesto solo aiuto...ed è stato
insultato
siamo qui a rispondere...suggerendo tecniche...poi tutti sono liberi
di accettare o rifiutare i consigli!
se c'è qualcuno che perde tempo...di sicuro...questo non è Lei!
> Saluti!
grazie per l'attenzione,
Marcello Cantelmo
www.cantelmosoftware.com
> Va bene...nessuno legge quello che scrivo....ok!....
> (scocciato) ma che me frega a me........il bischero son io che ci
> 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.
Analisi
Visto che è a fare prove...si parla di Andrea
tradotto:Visto che ANDREA è a fare prove
le faccia anche con roba simile
tradotto: ANDREA LE PROVE le faccia anche con roba simile (CON CODICE
SIMILE A QUELLO CHE HO POSTATO)
come detto sopra
tradotto: COME HO APPENA SCRITTO AD ANDREA
provi a nascondere mirc.exe
tradotto: PROVI ANDREA a nascondere programmi simili ad mirc.exe che
si autoespandono.
L'intento non è assolutamente denigratorio ...ma di stimolo...credo
che Andrea lo capisca.
Il suo intento è di lanciare un processo senza interfaccia...la
soluzione proposta mi sembra idonea a salvaguardare il suo lavoro
futuro ed a creare meno casini possibili per il SUO lavoro.E' la
migliore? Boh! di sicuro è la più semplice se parto con uno sviluppo
ex-novo!
Purtroppo sono molto schematico...mi piacciono programmi semplici che
diano pochi problemi nel tempo sia a me che al cliente. Per ora la mia
scelta ripaga.
>
> se c'è qualcuno che perde tempo...di sicuro...questo non è Lei!
>
> > Saluti!
>
> 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!
> L'intento non è assolutamente denigratorio ...ma di stimolo...credo
> che Andrea lo capisca.
Si ma infatti mica me l'ero presa io, solo che ora non ho un secondo per
provare :)
>> Va bene...nessuno legge quello che scrivo....ok!....
>> (scocciato) ma che me frega a me........il bischero son io che ci
>> 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.
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.