Condividi:        

[VB2008] - Applicazioni console in pausa...

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

[VB2008] - Applicazioni console in pausa...

Postdi maxmula » 21/07/09 14:52

Ciao a tutti,
Vi sottopongo brevemente il mio problema: sto usando VB2008 per scrivere alcune applicazioni tipo "console".
Purtroppo può succedere che, mentre l'applicazione è attiva, qualcuno (anch'io stesso) vada a cliccare sulla finestra DOS, mettendola inavvertitamente "in pausa".
Il risultato è che mi aspetto degli output che in realtà non sono mai stati nemmeno letti... :-(

Qualcuno sa se e come si può disabilitare questa funzione? Ho provato a spulciare tra le varie istruzioni relative all'oggetto Console ma non ho trovato nulla che renda la finestra console "non cliccabile"...

Grazie in anticipo,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Sponsor
 

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 21/07/09 19:00

non capisco... da quando in qua una finestra del command si mette in pausa se la clicchi? Forse mi sfugge qualcosa...
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi hydra » 22/07/09 07:12

Trascrivi il codice (usando il CODE), almeno lo si può provare per vedere se si riesce a replicare il problema.
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 22/07/09 12:33

Allora, questo è un esempio:

Codice: Seleziona tutto
Module Module1

    Sub Main()
        Dim cur_x As Integer
        Dim cur_y As Integer
        Dim T_MANCANTE As Integer = 99999
        Dim TIMER As New Stopwatch

        TIMER.Start()
       Console.WriteLine("Tempo mancante: ")
        cur_x = Console.CursorLeft
        cur_y = Console.CursorTop

        While T_MANCANTE >= 0
            T_MANCANTE = 180 - Int(TIMER.ElapsedMilliseconds / 1000)
            Console.SetCursorPosition(cur_x, cur_y)
            Console.WriteLine(T_MANCANTE)
            Threading.Thread.Sleep(300)         'Per non caricare troppo la CPU...
        End While

        Call SCARICA_FILE()     'Routine che esegue un download via FTP da server remoto

    End Sub

End Module


Nel frattempo ho fatto qualche altro piccolo esperimento e mi sono accorto che questo succede perchè, sul mio sistema, le finestre Command sono impostate con l'opzione "Quick Edit Mode" attiva...

A manina lo posso disabilitare con click destro/Properties/Options e deselezionando l'apposita casella.

Riformulo quindi la domanda: è possibile disabilitare quest'opzione via codice, solo per la finestra corrente?
Purtroppo non posso farlo a livello di sistema perchè faccio largo uso di copia/incolla da e verso finestre DOS...

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 22/07/09 12:36

...ovviamente, con "Quick Edit Mode" attivo, se clicco sulla finestra il programma si mette in pausa per consentirmi di selezionare e copiare il testo, e riparte solo premendo INVIO...
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi zello » 23/07/09 12:34

La buona notizia è che si può disattivare il Quick Edit Mode programmaticamente.
La cattiva è che bisogna usare un messaggio (WM_USER+201) non documentato da Microsoft.

L'unico sorgente che ho trovato in giro che usa questa funzionalità è qui.
Nota che l'esempio non disattiva QuickEdit, ma documenta la struttura CONSOLE_INFO, che ha un membro ULONG che si chiama QuickEdit e che *probabilmente* attiva e disattiva il QuickEdit.
E' in C: non ho idea di come si chiamano le api di win32 usando .net, ma alla peggio fai una dll di tre righe in C che fa il tutto.
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 23/07/09 19:52

Ma una bella riga di codice che modidifa la voce di registro prima di eseguire il countdown e la rimette come stava quando è finito?
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 23/07/09 19:55

modidifa = modifica :P
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 23/07/09 23:03

Questo vorrebbe dire che devo scrivere un piccolo "loader" che modifica il registro, lancia l'applicazione console e ri-modifica il registro...

Senza stare a creare un ulteriore eseguibile, mettermi a smanettare con le chiavi di registry e lanciare processi (saprei farlo ma preferisco evitare), forse si può fare anche da file batch: basta esportare da regedit la chiave [HKEY_CURRENT_USER\Console], salvandola:

- nel file QE_ON.reg, con l'impostazione QuickEdit messa a true
- nel file QE_OFF.reg con la medesima impostazione a false

A questo punto si crea il file LOADER.bat che contiene il seguente codice:
Codice: Seleziona tutto
@echo off
regedit /S QE_on
START /i Countdown_FTP
regedit /S QE_off


Forse è fattibile: domani provo.
MAx

PS. Ma... Dylan, mi hai copiato l'idea del tag con le coordinate anziché la città di residenza o l'abbiamo avuta contemporaneamente? :P
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 23/07/09 23:13

maxmula ha scritto:Senza stare a creare un ulteriore eseguibile

E perchè non fare tutto con lo stesso eseguibile, mettendo la modifica del registro prima dell'inizio e dopo la fine del conto dei secondi?

PS: non mi ricordo a chi copiai l'idea delle coordinate, ma è stato tanto tempo fa :P
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 23/07/09 23:30

Perchè, se ho ben capito, le applicazioni console leggono le impostazioni dal registro al momento dell'avvio e poi se le "ricordano" per tutta la sessione...

Se provi a lanciare una finestra di CMD, vedi che prende le impostazioni correnti della chiave; se cambi la chiave, le impostazioni della finestra rimangono le stesse... mentre se apri una nuova finestra CMD le trovi cambiate.
Quindi il "loader" servirebbe per impostare ogni singola sessione.

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 23/07/09 23:38

giusto, hai ragione P :D
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi hydra » 24/07/09 07:28

Scusa la domanda, ma perchè a sto punto non fai un'applicazione winform o un servizio se con le applicazioni console hai di questi problemi?
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 24/07/09 12:33

hydra ha scritto:Scusa la domanda, ma perchè a sto punto non fai un'applicazione winform o un servizio se con le applicazioni console hai di questi problemi?


Sostanzialmente per motivi di ...ignoranza (come faccio a creare un servizio? la cosa mi potrebbe interessare!) ma soprattutto di tempo: il cliente vorrebbe una soluzione immediata... per cui bisogna adattarsi a quello che passa il convento.
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi hydra » 24/07/09 15:42

Beh, quando crei la nuova soluzione puoi scegliere varie cose, tra cui applicazione windows for, applicazione console oppure servizio windows. Se fai una winform secondo me è meglio di tutto, in quanto mantieni l'interfaccia grafica e il codice è pressochè lo stesso di quello che hai già. Devi smanettarci un po' su ma penso che alla fine in termini di tempo sia la stessa cosa. Il servizio lo scarto in partenza perchè è "trasparente" all'utente, a meno che non crei un'applicazione di interfaccia e non è proprio la cosa più semplice del mondo.
Ad ogni modo la scelta tra console o winform dipende anche da come la utilizzerai.
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Re: [VB2008] - Applicazioni console in pausa...

Postdi Dylan666 » 24/07/09 16:37

maxmula ha scritto:il cliente vorrebbe una soluzione immediata...

Ma pensi che il cliente abbia il QuickEdit attivato?
Perché altrimenti non capisco ancora dove sia il problema...
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 24/07/09 23:16

Mah, la storia del QuickEdit è abbastanza varia: su alcuni PC c'è, su altri no.
Sono macchine di laboratorio, le usano un po' tutti ed ognuno si fa i casin... ehm, i settagggi che gli servono. :P

L'applicazione non consiste solo nel countdown al termine del quale viene lanciata una routine ma è ben più articolata... quello che ho postato era solo un esempio.

Per la maggior parte è a win form, ma alcuni pezzi "storici" (le funzioni più vecchie) sono di tipo Console. Purtroppo la conversione a form richiederebbe del tempo che non ho. Ho provato a proporlo ma... ciccia.

Quindi rimarrà il "Software Frankenstein" tutto fatto di pezzi "accozzati tra loro".
E' una maniera di programmare che non piace nemmeno a me, ma è questo che mi si richiede...

Ciao!
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [VB2008] - Applicazioni console in pausa...

Postdi maxmula » 24/07/09 23:23

...e comunque ho verificato: senza QUickEdit le finestre non sono più "Cliccabili".
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34


Torna a Programmazione


Topic correlati a "[VB2008] - Applicazioni console in pausa...":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti