IProgrammatori.it

Forum programmazione

Forum di supporto alla programmazione in generale e nei principali linguaggi.

Oggi è sab lug 31, 2010 6:41 pm

Tutti gli orari sono UTC + 2 ore




   [ 4 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: [Help] - problema thread
MessaggioInviato: dom ago 24, 2008 12:46 am 
Newbies
Avatar utente
Iscritto il: sab lug 26, 2008 10:29 pm
Messaggi: 38
Località: Roma

Salve a tutti.

ho un problema, inizialmente avevo scritto questo pezzo di codice:

Codice:
from win32api import *
from win32gui import *

def Hide_Desktop():
  h_progman = FindWindow(u"Progman",None) #Hidda il desktop
  h_desktop = FindWindowEx(h_progman, 0, u"SHELLDLL_DefView", None)
  h_desktop_listview = FindWindowEx(h_desktop, 0, u"SysListView32", None)
  ShowWindow(h_progman, 0)
 



def Hide_StartBar():
  Mimmo_Mimmo = FindWindowEx(0,0,"Shell_TrayWnd",None) #Hidda la barra start
  ShowWindow(Mimmo_Mimmo,0)
 
 
Hide_StartBar()
Hide_Desktop()


poi volendo far in modo che "Hide_Desktop" e "Hide_StartBar" si avviassero contemporaneamente ho usato threading ed ho scritto in questo modo il nuovo codice:

Codice:
from win32api import *
from win32gui import *
import threading


def Hide_Desktop():
    h_progman = FindWindow(u"Progman",None) #Hidda il desktop
    h_desktop = FindWindowEx(h_progman, 0, u"SHELLDLL_DefView", None)
    h_desktop_listview = FindWindowEx(h_desktop, 0, u"SysListView32", None)
    ShowWindow(h_progman,0)

def Hide_StartBar():
    Mimmo_Mimmo = FindWindowEx(0,0,"Shell_TrayWnd",None)
    ShowWindow(Mimmo_Mimmo,0)


class Operazione1 ( threading.Thread):
    def run ( self ):
        Hide_Desktop()

class Operazione2 ( threading.Thread):
    def run ( self ):
        Hide_StartBar()


Operazione1().start()
Operazione2().start()


ma il problema è che se avvio il nuovo script con pythonwin funziona perfettamente, se lo avvio con IDLE mi da degli errori incomplensibili sui quali ho già fatto un altro post (anche se lo script funziona lostesso):
http://forum.big-bug.net/python/errore-t1853.html
se invece lo avvio con PyScripter mi nasconde solo il desktop e solamente se avvio 2 volte lo script mi nasconde anche la barra di start.

Infine ho provato a convertire in esecutibile questo script (perchè il mio script è destinato a diventare tale) ed il risultato è lo stesso di PyScripter, ovvero se avvio l'exe una volta sola mi si nasconde solamente il desktop e soltanto se lo avvio una seconda volta mi nasconde anche la barra di start.
Vi è un errore nell'utilizzo delle classi e di thread?
Perchè lo script si comporta in questo modo strano??
Qualcuno saprebbe aiutarmi??

_________________
Salute a voi


   
 Oggetto del messaggio: Re: [Python] - problema thread
MessaggioInviato: lun ago 25, 2008 8:55 am 
Moderatore
Iscritto il: mar giu 27, 2006 11:52 am
Messaggi: 260

premetto ke python nn lo conosco affatto.....

nonostante questo è possibile ke tu richiami o abbia definito male i thread in quanto sentendo il tuo errore sembra ke lui esegua la operazione1, aspetta la sua esecuzione e solo dopo esegue la operazione2.

quindi a mio parere il problema è sicuramente sull'utilizzo sbagliato dei thread


   
 Oggetto del messaggio: Re: [Python] - problema thread
MessaggioInviato: lun ago 25, 2008 11:01 am 
Newbies
Avatar utente
Iscritto il: sab lug 26, 2008 10:29 pm
Messaggi: 38
Località: Roma

cypher ha scritto:
premetto ke python nn lo conosco affatto.....

nonostante questo è possibile ke tu richiami o abbia definito male i thread in quanto sentendo il tuo errore sembra ke lui esegua la operazione1, aspetta la sua esecuzione e solo dopo esegue la operazione2.

quindi a mio parere il problema è sicuramente sull'utilizzo sbagliato dei thread


Si, credo anche io che vi sia un problema di questo tipo, ma non riesco comunque a trovare l'errore

_________________
Salute a voi


   
 Oggetto del messaggio: Re: [Help] - problema thread
MessaggioInviato: dom set 14, 2008 4:49 pm 
Newbies
Avatar utente
Iscritto il: gio giu 07, 2007 5:15 pm
Messaggi: 43

mhm, mi sembra strano che tu abbia questo:

Codice:
Operazione1().start()
Operazione2().start()


e non:

Codice:
op1 = Operazione1()
op2 = Operazione2()
op1.start()
op2.start()


   
Visualizza ultimi messaggi:  Ordina per  
   [ 4 messaggi ] 

Tutti gli orari sono UTC + 2 ore


 Chi c’è in linea

Visitano il forum: Yahoo [Bot] e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a: