Topic: [ri-aperto]Py .exe eseguire se stesso in background  (Letto 1515 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
[ri-aperto]Py .exe eseguire se stesso in background
« il: Settembre 01, 2018, 08:13 »
Come faccio questa cosa?

test.exe
import sys
import time
import subprocess


if len(sys.argv) == 1:
    subprocess.Popen(["./test.exe", "bckrnd"])
    sys.exit(0)

while True:
    # Nothing to do
    time.sleep(1)


Grazie

=================

Dopo non essermi arresto, alla fine ho trovato la soluzione:
DETACHED_PROCESS = 0x00000008
subprocess.Popen(["test.exe", "1"], creationflags=DETACHED_PROCESS)
« Ultima modifica: Settembre 01, 2018, 09:03 da tommyb1992 »

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #1 il: Settembre 01, 2018, 09:04 »
Non mi piace, se lo metto nella cartella startup mi apre due volte una finestra "nera" che si nota per qualche decimo di secondo.

Si accettano altre soluzioni anche in linguaggi differenti con il quale lanciare il programma .exe primario: batch/c/c++/electron

Grazie
« Ultima modifica: Settembre 01, 2018, 09:06 da tommyb1992 »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.658
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #2 il: Settembre 01, 2018, 18:31 »
Ma spiegare il problema?

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #3 il: Settembre 01, 2018, 20:58 »
Vorrei che si eseguisse il programma in background senza che si veda "il popup del prompt" per qualche millesimo di secondo.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.658
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #4 il: Settembre 01, 2018, 22:29 »
Se non sbaglio su windows basta dare al file python estensione .pyw

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #5 il: Settembre 02, 2018, 08:33 »
Se non sbaglio su windows basta dare al file python estensione .pyw

il file è un .exe, una volta compilato non gliene frega molto se è .py o pyw (lo so perchè ho provato)

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.658
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #6 il: Settembre 02, 2018, 12:19 »
Non era specificato e questo è un forum su python, quindi il default non è "exe".


Se il programma è compilato in exe capirai che non dipende da lui dove viene eseguito ma da chi lo invoca.


E' un altro exe o uno script python?


Dettagli

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #7 il: Settembre 02, 2018, 13:20 »
test.exe
import sys
import time
import subprocess


if len(sys.argv) == 1:
    DETACHED_PROCESS = 0x00000008
    subprocess.Popen(["test.exe", "bckrnd"], creationflags=DETACHED_PROCESS)
    sys.exit(0)

while True:
    # Nothing to do
    time.sleep(1)


Ci clicchi sopra due volte, siccome non sono presenti argomenti, apre se stesso in background e chiude la finestra attuale, il secondo aperto in background esegue il while.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.138
  • Punti reputazione: 9
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #8 il: Settembre 05, 2018, 20:21 »
Veramente qui è bravo chi capisce che cosa stai cercando di fare.

Hai uno script python? Che hai chiamato "test.exe"?? E questo script python cerca di chiamare *se stesso* con subprocess??? Questa sarebbe veramente una cosa... interessante, diciamo. Se il tuo scopo è procurarti un DoS, ci sono modi più efficienti... perché non provi direttamente con una xml bomb?

E poi, questione separata: se è uno script python, allora c-o-m-e sarebbe "compilato"? Non è che basta dare un'estensione "exe" a uno script python per renderlo eseguibile. E non è che python sia un linguaggio "da compilare", di solito. Quindi?

Una versione leggermente più sana del problema sarebbe che "test.exe" è un eseguibile separato qualsiasi (non so, potrebbe essere calc.exe o notepad.exe per fare i soliti esempi che si fanno su windows), e il tuo script python (niente affatto "compilato", ovviamente) vuole aprire l'eseguibile in un subprocess. Ma in questo caso non è chiaro quale sia il tuo dubbio...

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #9 il: Settembre 06, 2018, 12:24 »
Ma tu credi realmente che io sia così idiota da non riconoscere un file compilato da uno script?

Il file python è un exe perchè E' COMPILATO.

L'.exe non causa nessun dos, la prima volta, quando ci clicchi due volte si apre senza argomenti, apre se stesso con un argomento in background e chiude quello aperto con i due click.

Il perchè io faccia ciò viene in secondo luogo...

Funziona semi perfettamente, se non fosse che per alcuni decimi di secondo mi mostra "il prompt" di comando della prima apertura del programma e non mi piace.


import sys
import time
import subprocess

# E' passato senza argomenti?
if len(sys.argv) == 1:
    DETACHED_PROCESS = 0x00000008
    # Apre se stesso con un argomento in background
    subprocess.Popen(["test.exe", "bckrnd"], creationflags=DETACHED_PROCESS)
    # Esce
    sys.exit(0)

# Qui sys.argv vale 2
while True:
    # Nothing to do
    time.sleep(1)
« Ultima modifica: Settembre 06, 2018, 12:28 da tommyb1992 »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.138
  • Punti reputazione: 9
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #10 il: Settembre 06, 2018, 13:13 »
Boh, di sicuro non leggi quello che scrivo, decidi poi tu che cosa questo vuol dire.
Quindi adesso ripeto la domanda in modo che forse questa volta la leggi:

> Il file python è un exe perchè E' COMPILATO.

Compilato come?
Compilato come?
Compilato come?
Compilato come?
Compilato come?
Compilato come?
Compilato come?
Compilato come?
Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come? Compilato come?

Compilato c-o-m-e?
Compilato c-o-m-e?
Compilato c-o-m-e?
Compilato c-o-m-e?

COMPILATO COME?
C O M P I L A T O    C O M E ???
COME? COME? COME?

C O M E????

Ecco, spero di essere riuscito a focalizzare la tua attenzione sulla parte importante.

Per il resto,

> L'.exe non causa nessun dos,

sì, l'ho visto, quella era una battuta. La mia... perplessità, diciamo così, sulla... stranezza, diciamo così, di quello che stai cercando di fare invece non è una battuta, e resta comunque.
Ma insomma, saprai tu.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #11 il: Settembre 06, 2018, 13:43 »
Peccato che ti contraddici nei 60 caratteri successivi:


... Il file python è un exe perchè E' COMPILATO ...

... Non è che basta dare un'estensione "exe" a uno script python per renderlo eseguibile. E non è che python sia un linguaggio "da compilare", di solito. Quindi? ...


Comunque per rispondere alla tua domanda: con py2exe

p.s. ho trovato questo
https://blogs.technet.microsoft.com/heyscriptingguy/2014/02/16/powertip-start-hidden-process-with-powershell
appena posso testare vedo se risolve il problema perchè ora non sto su windows

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #12 il: Settembre 06, 2018, 15:02 »
Relax :)

tommyb1992, a volte devi immedesimarti nei panni dei lettori che purtroppo hanno solo una conoscenza limitata del tuo ambiente, sistema operativo, problema, ecc.
Insomma, non e' che sia 100% chiaro cio' che stai facendo... per cui invece di sbraitare, ecc., cerca di capire perche' noi non capiamo il tuo problema.

Consiglio: prima di aprire un topic, rileggi un paio di volte, se non sei sicuro, prova a fare disegni, diagrammi, ma cerca di capire che per noi e' difficile leggere cio' che hai in mente.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.138
  • Punti reputazione: 9
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #13 il: Settembre 06, 2018, 15:08 »
> Peccato che ti contraddici nei 60 caratteri successivi:

NO, non mi contraddico: SICCOME python non è un linguaggio che di solito "compila", ALLORA ti chiedo COME hai compilato il tuo script. Dai che ce la possiamo fare, a leggere quello che scrivo.

> Comunque per rispondere alla tua domanda: con py2exe

E finalmente! Siccome, a quello che dici, il problema si verifica quando esegui lo script compilato con py2exe, allora immagino che sia un problema di py2exe, e non del tuo script particolare, che fa le cose particolari che vuoi fargli fare. Oddio, questo andrebbe testato naturalmente. Ma insomma, capisci perché ti chiedevo COME avevi compilato il tuo script? Capisci che non era una curiosità stupida la mia? Capisci che potrebbe essere il problema che stiamo cercando di risolvere? Bene.
Ma adesso, il punto diventa:
CON QUALE SETUP.PY HAI COMPILATO IL TUO SCRIPT?
Perché capisci che se è un problema di py2exe, allora bisognerebbe vedere COME usi py2exe per compilare il tuo script. Magari possiamo vedere questo script. Magari dobbiamo chiedertelo ancora qualche volta. Non so.

Per inciso, quando ti si chiede di spiegare il problema, è QUESTO che ti si chiede. Di dare i dettagli del problema.

> p.s. ho trovato questo
> appena posso testare vedo se risolve il problema perchè ora non sto su windows

AH, ma ecco quello che stavi cercando di fare! Dirlo prima, no.
Sì, probabilmente quella è una strada migliore. Anzi, quasi certamente. Ma forse basta anche un semplice start foo /D "<...>/python.exe <...>/test.py" /B, dovrei vedere.
Ma piuttosto, a questo punto non vale la pena di eseguire python (l'interprete) e quello script come un servizio? Qualcosa tipo sc create fooservice binPath="<...>/python.exe <...>/test.py"? Oppure provare qualcosa tipo queste soluzioni https://stackoverflow.com/questions/32404/how-do-you-run-a-python-script-as-a-service-in-windows o ricerche analoghe?

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 300
  • Punti reputazione: 0
    • Mostra profilo
Re:[ri-aperto]Py .exe eseguire se stesso in background
« Risposta #14 il: Settembre 06, 2018, 16:08 »
Citazione
CON QUALE SETUP.PY HAI COMPILATO IL TUO SCRIPT?

from distutils.core import setup
import py2exe

setup(console=['hello.py'])


Comunque:

autorun.ps1
Start-Process -WindowStyle hidden -FilePath "C:\Users\Tomas\Desktop\test\dist\hello.exe" background

autorun.bat
powershell -executionpolicy bypass -File C:\Users\Tomas\Desktop\autorun.ps1

Ma il ps1 me lo segnala l'antivirus  :| :| :| :question: :question: :question:
« Ultima modifica: Settembre 06, 2018, 16:10 da tommyb1992 »