Newsgroup: it.comp.lang.delphi
Titolo: App con parametri

Ho sviluppato un'app che si avvia con un parametro. L'unico modo che ho 
trovato di avviarla è con file batch, che però lascia intravedere la 
finestra del cmd. Praticamente sono due righe:
@echo off
start ScheduleChkP.exe /Open
 
Non mi piace. C'è qualche altro modo ? 
 

 C'è qualche altro modo ?
 
puoi fare in modo che all'avvio la tua applicazione (in genere per "app" si intendono quelli dper i dispositivi mobili...) verifichi se nella stessa cartella c'è un file di configurazione (su windows in genere sono file ini.
Se lo trova, legge i parametri che servono e via.
 
A.
 
 


Puoi mettere i parametri anche all'interno di uno shortcut.
 
ciao
Giacomo

Crea uno shortcut e passa i parametri

Ciao,

Leggendo le altre risposte ho visto che hai gia' avuto abbastanza materiale 
su cui lavorare.
Dato che io non sono alla loro altezza (di Alberto ed Andrea) ti do la mia 
risposta .... sempre se ho capito bene e sempre che tu non sia gia passato 
da questa strada.
 
Perche' non lanci il tuo programma con i parametri di linea e poi non li 
gestisci tramite paramcount e parmstr ?
 
Esempio
 
ScheduleChkP.exe -Open -Help
 
Paramcount = 2 (-Open - Help)
 
Paramstr[0] = ScheduleChkP.exe
Paramstr[1] = -Open
ParamStr[2] = - Help
 
nel tuo programma
 
If Paramcount>0 then
Begin
  If UpprCase(ParamStr[1]) = Uppercase('-Open) Then
  begin
      ......
  end;
end;
 
Per verificare il tuo codice nell' ide, nel menu Run selezioni Parameters e 
poi nell'Edit Parameters digiti
-Open -Help
o quello che vuoi.
 
Questo, sebbene sia ancora usato, rappresenta (consentimelo) un po' il 
passato, non escluderi l'utilizzo (come suggerito da Alberto) dei file .Ini
 
Ciao
 
Daniele
 
 

 gestisci tramite paramcount e parmstr ?
 
I parametri gia` li legge. Lui vuole lanciare l'app con certi parametri.
 
-- 
4ndre4

L'applicazione è uno scadenziario che parte all'avvio del PC e la prima cosa 
che fa è controllare se ci sono scadenze da segnalare, nel qual caso si apre 
un form. Altrimenti l'utente non vede niente. Il form semplicemente non si 
apre.
C'era un problema però: se non si apre, l'utente non può immettere delle 
nuove attività. Finora non era mai successo perchè il programma era inserito 
in un'applicazione che forniva una voce di menu che consentiva l'apertura 
dello scadenziario a prescindere. Ora ne ho fatto una versione indipendente 
e mi sono accorto del problema.
 
Per aprirlo a prescindere dalla presenza o meno di segnalazioni, ho alla 
fine usato il sistema suggerito di usare un parametro da fornire al lancio 
dell'exe. Se c'è il parametro, l'apertura viene forzata. Per gestire il 
parametro si, parametro no, ho usato per il lancio con parametro un file 
batch (che apre e chiude la cmd window, non bellissimo..).
 
Scusate la lungaggine, era per spiegare un pò tutto.. Grazie di tutti i 
suggerimenti. 
 

 I parametri gia` li legge. Lui vuole lanciare l'app con certi parametri.
 
scusami per la mia limitazione.....
Ma se i parametri li legge (?/!) che difficolta' c'e' nell' inserirli sulla 
riga di comando?
Naturalmente questo pensiero segue un ragionamento semplice semplice dettato 
dalla mia, come detto sopra, limitazione
(ovvero dove sta il problema?).
 
Buona settimana e ciao
 
Daniele
 

Ciao Stark,
   scusami se non quoto interamente il tuo messaggio.
Leggendo, la tua necessita' e' prendere una data e controllare se ci sono 
delle scadenze.
Questo tipo di problema, credo, lo abbiamo trattato tutti con modalita' 
differenti ognuna per le proprie necessita'.
Per esempio nel mio programma il problema l'ho affrontato in questo modo.
Alla partenza del programma, nel create della main form, prendo la data 
odierna con Date.
Alla data odierna aggiungo 15 giorni (per vedere se nella prossima 
quindicina ci sono delle scadenze) e filtro il db dove ci sono le cose da 
fare.
Se ci sono delle scadenze le inserisco in una lista (nella mia realta' non 
sono molte, al massimo si arriva alla ventina, massimo trenta) e apro una 
form NON modale dove visualizzo questa lista.
In questo modo la form non modale rimane sopra/sotto/affiancata alla main 
form e ha la funzione di 'avvisare' chi di dovere che deve considerare 
quella lista.
Naturalmente questa form si puo' chiudere e, tra le altre funzioni nel menu' 
principale, c'e' un comando che permette di rifare il rescan delle scadenze 
con il delta a piacimento.
 
Non sapendo la logica del tuo programma e il livello di modifiche da fare 
non so se la soluzione che ho adottato per me e' applicabile al tuo 
progetto.
 
Ciao
 
Daniele
 

 riga di comando?
 
Se tu avessi letto il suo messaggio originale, sapresti che lui lancia gia` l'applicazione, con il parametro, da un file batch. Sta cercando il modo di non far comparire la finestra della shell.

 comparire la finestra della shell.
 
Avendo voi gia' risposto in modo adeguato risolvendo il problema con gli 
shortcut, se non dovesse andar bene ho trovato questo link
 
http://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way
 
 
che da un'idea di come lanciare un file bat completamente invisibile.
 
Nel caso Google run batch file without window
 
Ciao
 
Daniele 
 

http://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way
 
Daniele
 
Grazie del link, l'ho appena guardato. Mi viene da chiedere subito da dove 
lancio Wscript ? 
 


Puoi lanciarlo da dentro un altro file .bat  :-D
 
La soluzione dello shortcut ti pare cosi' brutta?
 
ciao
Giacomo

Grazie Daniele di dedicare un pò del tuo tempo al mi problema. Forse però 
non sono stato abbastanza chiaro su quale è il problema. Tento di spiegarlo 
meglio. La mia applicazione parte all'avvio di Windows, ma si mostra 
all'utente SOLO se ci sono avvisi di scadenze in corso. Da tempo è così e 
funziona.
Ora ho introdotto nel project file l'esame di una ulteriore condizione: se 
trova un parametro 'Open', mostra comunque il form.
 
L'utente finora l'exe non lo vedeva nemmeno, perchè il programma è avviato 
autonomamente da Windows, senza alcun parametro (perchè come ho detto si 
deve solo quando ci sono segnalazioni da dare).
 
Invece adesso devo fornire all'utente la possibilità di aprire 
l'applicazione comunque, quando lo ritiene opportuno. Per far questo ho 
semplicemente messo nel desktop un file batch che lancia quell'exe con il 
parametro di forzatura di cui sopra('Open').
 
Pertanto, ora cercavo un modo di evitare che l'utente vedesse l'apertura e 
la subitanea chiusura della finestra della shell. 
 

La soluzione dello shortcut ti pare cosi' brutta?
ciao
Giacomo
 
Forse non la capisco...  non so come si fa

 e la subitanea chiusura della finestra della shell.
 
crea un collegamento alla tua app nel desktop, e tra le proprietà c'è 
anche quella dove dice quale eseguibile viene lanciato: lì dentro 
mettici il tuo parametro open.
 
-- 
Morde


Ma dai. Mi sembra incredibile che tu non abbia mai creato uno
shortcut...  :-o
 
Vabbe... comunque e' molto semplice:
apri la cartella con il tuo .exe 
tasto destro sul .exe -> copia
tasto destro sulla cartella -> incolla collegamento
tasto destro sul collegamento appena creato -> proprieta'
nelle proprieta' vedi il path completo del .exe
Li puoi mettere eventuali parametri esattamente come nel .bat
 
ciao
Giacomo

 parametro di forzatura di cui sopra('Open').
 
Come ti e' gia' stato consigliato, con il "collegamento" sul desktop ed 
esponendo il parametro sulla riga dell'exe (shortcut) hai risolto il 
problema.
Non mi arrogo il diritto di dare soluzioni super efficaci, ma prova a 
prendere in considerazione questa alternativa per il tuo progetto, che piu' 
o meno e' quello che ho adottato per la mia necessita'
- Nessun parametro.
- Nel create del main form (cosi' non vedi neanche il form) controlli, con i 
tuoi criteri, le eventuali scadenze.
- Se ci sono, viualizzi il form e fai quello che devi
- Se NON ci sono, minimizzi tutto nella traybar (che e' anche piu' cool, 
come direbbero i piu' giovani) con un'icona appariscente .... :-)
- Se l'utente va nella traybar e clicca con il tasto destro del mouse, si 
apre un menu dove c'e' il comando "apri", e una volta cliccato li imposti a 
wsMaximized o visible:=true e spari la main form a video.
- Metti un timer o un controllo data cosi, se per caso il pc non si spegne 
alla fine della giornata, se la data cambia fai il ricontrollo delle 
scadenze ..... e riparti dal primo punto nel nuovo giorno.
- Eventuale chicca se il programma avvisa di un'eventuale scadenza domani ed 
e' in traybar, spari una bella finestra in basso a destra (tipo antivirus o 
altro) che informa l'utente della prossimita' della scadenza.
- Altri tuoi accorgimenti per ottimizzare e migliorare la logica di cui 
sopra.
 
Questa logica, che in nessun caso e' la soluzione (ma una delle soluzioni 
possibili), nella mia realta' funziona.
Per contro devi fare un po di "manutenzione" al codice.
 
Saluti a tutti
 
Ciao
 
Daniele
 
 

"Giacomo Degli Esposti"  ha scritto nel messaggio 
news:8b55170c-4fb2-4a53...@googlegroups.com...
Ma dai. Mi sembra incredibile che tu non abbia mai creato uno
shortcut...  :-o
Giacomo
 
Scusa, certo che ne ho creati, avevo pensato che parlaste di altro perchè 
non capivo che relazione avesse con il mio problema. Non avevo pensato che 
potevo indicare un parametro..
E infatti è la soluzione più semplice. Grazie 
 

Niente male i tuoi suggerimenti. Ti dirņ se li implementerņ.. Grazie 
 

 - Nel create del main form (cosi' non vedi neanche il form)
 
Quelle operazioni sono da fare nel sorgente del progetto, non nel create 
del main form.
 
-- 
4ndre4

 del main form.
 
Grazie
 
Ciao
 
Daniele