Profilo di ZioCrick

Nome ZioCrick
Indirizzo email n/a
Messaggi4
  • Re: Evitare l'apertura della shell eseguendo uno script da menù Start di WindowsXP
    Forum >> Principianti
    Ok, mi rendo conto di non essermi spiegato bene, e che ho generato una sequenza di disquisizioni "filosofiche" che ci hanno portato ampiamente fuori tema. :embarrassed:

    La mia domanda iniziale era molto tecnica:

    C'è il modo di evitare l'apertura della shell quando si lancia uno script Python dal menù Start di WIndowsXP?
    La cosa succede anche dal menù Start di Windows 8.1
    ma non succede su Kubuntu 14.04.

    Se su questo quesito nessuno sa aiutarmi non importa, sicuramente, come hai detto tu, me lo risolverò da solo quando avrò imparato meglio Python. ;)

    Grazie di tutto.


    --- Ultima modifica di ZioCrick in data 2019-11-17 22:27:34 ---
  • Re: Evitare l'apertura della shell eseguendo uno script da menù Start di WindowsXP
    Forum >> Principianti
    Carissimo,
    apprezzo molto la tua disponibilità nei miei confronti. :)
    Tutte le tue considerazioni sono assolutamente corrette e non farebbero una grinza, se io fossi uno sviluppatore di professione ... ma forse ti è sfuggita una cosetta che ho scritto nel primo post, ovvero che non sviluppo più per lavoro da parecchi anni e ora mi limito a realizzare software per mio uso personale ... quindi non devo e non voglio costringere nessuno ad usare software antichi, desueti o specifici sistemi operativi. ;)
    Ci mancherebbe.

    Il motivo per cui la mia priorità primaria, in questo momento, è il lanciatore di programmi, sta nel fatto di essere nato, come informatico, all'epoca delle schede perforate e dei terminali a caratteri.
    Il mio strumento principale di interazione con il pc è la tastiera ... detesto con tutte le mie forze il topo!!!! (detto anche "mouse") ... e cerco di scoprire tutte le combinazioni di tasti di scelta rapida possibili, per attivare/chiudere/scegliere/inserire etc. qualsiasi cosa da tastiera.
    Tutti i miei programmi sono utilizzabili completamente tramite la tastiera, e la mia più grande soddisfazione, durante il periodo di programmatore professionista, era vedere la velocità con cui alcune utenti interagivano con il programma e quindi con i loro clienti. Semplicemente spettacolare! :angel:

    Siccome da Windows 7 in poi e da Kubuntu 16 in poi i menù di start sono dotati di quella, per me, "famigerata" casella di ricerca, che cattura qualsiasi tasto io pigi dopo la fantastica sequenza <Ctrl><Esc> ... per selezionare una qualsiasi voce della struttura di menù e sotto-menù che mi creo e personalizzo, DEVO per forza usare il topo!! E questo lo detesto, anche perché è di una lentezza esasperante, rispetto alla velocità con cui eseguo le stesse cose da tastiera.

    Fino ad ora sui PC dove ho dovuto, per vincoli HW, installare Windows 8.1, ho rimediato con ClassicShell.
    Su kubuntu purtroppo ho trovato solo classicmenu-indicator, che però non consente la navigazione tra i sotto-menù tramite la pressione delle iniziali delle corrispondenti voci.

    Il "passare a Linux", per me, significa abbandonare definitivamente l'ambiente Microsoft, di cui sono strastufo (mia opinione personale), e usare su tutti i miei pc, le varie distribuzioni di GNU/Linux come appunto Kubuntu o altre e quindi in definitiva avere "la libertà di scelta". :)

    A questo punto entra in gioco il discorso della singola istanza, perché quando premo la fatidica combinazione <Ctrl><Esc> o equivalente, deve attivarsi la finestra del lanciatore, ma non partire una seconda istanza del lanciatore, esattamente come fa il menù Start di Windows XP e ClassicShell.

    Anche qui hai ragionaissima quando dici che questa funzionalità dovrebbe essere gestita all'interno del programma stesso, e la soluzione dell'ascoltare su una porta specifica l'avevo già letta sul web, ma siccome l'argomento socket, per me, al momento, é ancora un totale mistero, ecco scaturire la ricerca di una soluzione sbrigativa (vedi script python) in attesa di farmi una cultura specifica con Python.
    Ed ecco perché anche usare il deprecato os.system poteva andarmi bene, visto che lo stavo usando su sistemi operativi anch'essi obsoleti e che non supportano la versione 3 di Python.
    Quindi momentaneamente mi andava bene fare il copia e incolla di esempi copiati dal web.

    Se però, in base a ciò che mi dici, non c'è altra soluzione, mi sa che mi dovrò rassegnare ad aspettare di approfondire, anzi, studiare di sana pianta Python, che da quello che ho visto e letto fin'ora mi sembra molto più semplice di Java.
    Ovviamente l'ambiente .net non lo prendo nemmeno in considerazione per le stesse ragioni di cui sopra, rispetto agli ambienti MS.

    Spero di aver chiarito meglio il mio punto di vista, che resta comunque il mio punto di vista, e non pretendo che sia condiviso o seguito da altri.

    Se comunque riesci a darmi una mano, te ne sarò immensamente grato.
  • Re: Evitare l'apertura della shell eseguendo uno script da menù Start di WindowsXP
    Forum >> Principianti
    Caro RicPol,
    ti ringrazio sinceramente per la risposta e le tue indicazioni. :)
    Ci ho messo un po a rispondere perché ho voluto fare un po di prove.


    Usare l'interprete pythonw.exe (ovvero, usare l'estensione *.pyw per gli script) è la cosa giusta, e funziona.

    Questo mi fa piacere, perché mi conferma che almeno qualcosa l'ho capito ...




    Se non funziona, vuol dire che stai facendo qualcosa di sbagliato (tipo, non stai davvero modificando l'estensione perché non visualizzi le estensioni dei file nell'explorer di windows...

    Ti garantisco che da quando utilizzo Windows (ovvero dalla 3.11) l'ho sempre accuratamente impostato per vedere le estensioni dei file ... poichè come ho scritto prima, sono un tipo "vecchia maniera" ... mi piace vedere il più possibile.


    tipo, windows non associa l'estensione pyw all'interprete pythonw.exe...

    Ho verificato e avevo già fatto l'associazione tra file .pyw e pythonw.exe



    magari è il tuo collegamento che apre lo stesso una shell... magari è il menu start che ha quell'effetto... qualcosa così).

    Qui mi hai fatto venire un grosso dubbio;
    Ho aperto il mio progetto java e ho disabilitato (perché sono subordinate al valore di una variabile boolean) tutte le istruzioni (System.out.println) che stampavano messaggi di debug, pensando che quelli "forzassero" l'apertura della shell (cmd.exe) ...
    ma ... delusione ... la shell si apre ugualmente, pur rimanendo vuota.
    In più ho fatto le seguenti prove:
    Nel menù di start di Windows ho creato le seguenti voci:
    C:\Applicazioni\xFile\xFile.jar
    C:\WINDOWS\system32\javaw.exe -jar C:\Applicazioni\xFile\xFile.jar
    C:\Applicazioni\xFile\xFile.vbs
    dove il file vbs è il seguente:


    const jarfile="C:\Applicazioni\xFile\xFile.jar"
    dim wshell
    set wshell=WScript.CreateObject("WScript.Shell")
    wshell.run "javaw -jar " & jarfile ,1,false
    
    
    e tutte mi eseguono il programma xFile.jar senza aprire la shell ... mentre la voce:
    C:\Applicazioni\Python\pythonw.exe "C:\Applicazioni\xFile\xFile.pyw"
    mi apre la shell.
    Il file .pyw ridotto all'osso è:

    import os
    
    Cartella = 'C:/Applicazioni/xFile'
    Comando = 'C:/WINDOWS/system32/javaw.exe -jar C:/Applicazioni/xFile/xFile.jar'
    
    os.chdir(Cartella)
    os.system(Comando)
    
    
    Su Kubuntu invece:
    la chiamata diretta /home/marco/xFile/xFile.jar non funziona
    ma ...
    java -jar /home/marco/xFile/xFile.jar
    python /home/marco/xFile/xFile.py
    funzionano entrambi senza aprire la shell ... boh?


    Detto questo: in generale non è una buona idea https://pythoninwindows.blogspot.com/2019/03/e-adesso-dove-clicco.html

    Da qui capisco che l'ambiente base per eseguire script python è la shell, ma viene citata anche la possibilità di usare degli ambienti per creare i classici programmi a finestre, di cui in effetti io ho bisogno.


    Detto questo: ma non capisco perché ti sei fatto uno script python solo per lanciare uno script java... chissà, magari è quello, che apre una shell...

    Cerco di spiegarmi, il più brevemente possibile:
    Il mio proposito è di realizzare un lanciatore di programmi multipiattaforma, di cui ho creato la base con java, ma non riuscivo a trovare il modo di evitare l'attivazione di più istanze dello stesso programma ...
    Ad un certo punto ho trovato in rete uno script python che prometteva di risolvere il problema, molto semplicemente; bastava eseguire il programma java o qualsiasi altro programma tramite tale script e lui si occupava di verificare la presenza di una precedente istanza in esecuzione ed eventualmente portarla in primo piano.
    Da qui il mio interessamento per Python, che ho iniziato a studiare tramite un semplice tutorial.
    Di fatto poi lo script non fa quello che promette, ma questo è un altro argomento.


    Detto questo: ma alla fine del 2019... windows xp.. 32 bit... python 2.7... mah.


    Capisco la tua perplessità, ma come dicevo, sono un programmatore del periodo jurassico ... e sono vincolato a XP a causa di un'applicazione che ho sviluppato in passato con VB6 e che non sono ancora riuscito a riscrivere in Java.
    Di conseguenza uso Python 2.7 perché ho letto sul web che è l'ultima versione compatibile con XP.
    Preciso che, secondo me, XP è la migliore versione di Windows che MS abbia mai realizzato, e sto cercando di sviluppare un mio lanciatore, (oltre che convertire il mio gestionale in java) proprio per sbarazzarmi finalmente di Windows e passare definitivamente al mondo linux.
    Il mio interessamento verso Python è anche dovuto al fatto che, siccome mi sembra più semplice di java, potrei anche decidere di mollare java e riscrivere il tutto in Python, sempre che riesca a capire come creare le interfacce grafiche con Python.




    A questo punto sono nella nebbia ... per cui qualsiasi aiutino, indicazione, suggerimento e' il benvenuto. ;)

  • Evitare l'apertura della shell eseguendo uno script da menù Start di WindowsXP
    Forum >> Principianti
    Buongiorno a tutti,

    da qualche giorno sto cercando di sperimentare python ... perchè ho scoperto un piccolo esempio di script sul web che sembrava risolvere, in modo molto semplice, un problema che pareva impossibile con Java (che stavo cercando di imparare da mesi).

    Preciso che sono un "vecchissimo" programmatore di linguaggi di terza generazione, approdato decenni fa a Visual Basic (che ho utilizzato fino al VB6) e a prima vista python gli somiglia molto.
    Da molti anni non sviluppo più per lavoro ma solo per uso personale.

    Da quello che ho visto fin'ora per eseguire uno script .py bisogna lanciarlo da una shell ... e per provare, impararare, debuggare ... va benissimo. :)

    Quello che vorrei a questo punto, è che nel momento in cui aggiungo una voce al menù "Start" di Windows per eseguire lo script .py non mi aprisse anche una finestra del cmd.exe (terminale dei comandi).

    Al momento, per ragiorni che sarebbe troppo lungo spiegare, sono ancora vincolato a Windows XP 32bit e alla versione 14.04 di Kubuntu, quindi sto usando Python 2.7.16.

    Cercando sul web ho trovato varie indicazioni come, usare pythonw al posto di python, nel comando della voce del menù di start, piuttosto che modificare l'estensione del file da .py a .pyw ... ma purtroppo nessuna di queste indicazioni funziona. :(

    Per caso può essere dovuto al fatto che dallo script python lancio un programma java?
    Riporto un esempio:
    import os
    Cartella = 'C:/Applicazioni/NomeProg'
    Comando = 'java -jar C:/Applicazioni/NomeProg/NomeProg.jar'
    
    # altre istruzioni python
    
    os.chdir(Cartella)
    os.system(Comando)

    Aggiungo che non mi interessa trasformare lo script in un file eseguibile, come ho visto chiedere in tante discussioni su vari siti, tanto i programmi che realizzerei sarebbero solo per uso personale, ma siccome ne farei un uso intensivo, e normalmente opero con "enne" finestre aperte, non voglio ritrovarmi con "enne" finestre di shell aperte che mi farebbero perdere solo tempo quando devo spostarmi tra una applicazione e l'altra con <Alt><Tab>.

    Qualcuno gentilmente sa darmi qualche dritta?