🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
2 messages
2 total messages Started by ak3031884 Thu, 06 Aug 2009 16:07
program jako usługa c.d.
#26451
Author: ak3031884
Date: Thu, 06 Aug 2009 16:07
160 lines
5621 bytes
Witam napisałam programik (sprawdzający w regedit  domyślnego klienta
poczty, pobiera HOME zalogowango użytkkownika i wyszukuje Plik
magazyju klienta poczty sprawdza wielkość i w zależności od
zajmowanego miejsca jeśli jest  powyżej pewnej ustalonej normy
informuje użytkownika aby wyczyścił skrzynkę pocztową)  zgodnie z tym
co podpowiedzieli koledzy wcześniej
na podstawie tego tutorila. http://islascruz.org/html/index.php?gadget=StaticPage&action=Page&id=6
Stworzyłem usługę i  przy uruchomieniu jej w menadżerze usług  pojawia
się okienko
"Usługa outlook na Komputer lokalny uruchomiła się, a następnie
zatrzymała. Niektóre usługi zatrzymują się automatycznie, jeśli są
bezczynne, na przykład usługa Dzienniki wydajności i alerty."

no i czemu bezczynna? jak jest ładowana klasa która raczej w funcji
main() powinna sie odpalić i wykonywać zadanie a tu nic dlaczego tak ?
nie pojmuje.

outlook_ost.py:

import os
from os.path import join, getsize
import pygtk
pygtk.require('2.0')
import gtk
import sys
import cairo
import pangocairo
import pango
import atk
from _winreg import *
import time

class OutlookInit():
      def __init__(self):
         thread.start_new(Outlook(), tuple())
         while True:
             if getattr(sys,'stopservice', False):
                sys.exit()
             time.sleep(0.3)



class Outlook():
    def __init__ (self):
        self.dia = gtk.MessageDialog(parent=None, flags=0,
type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_NONE)
        self.dia.connect("destroy", self.destroy)
        self.dia.set_title(u"Blad systemu")
        regpath = "SOFTWARE\\Clients\\Mail"
        reg = QueryValue(HKEY_LOCAL_MACHINE, regpath)

        if reg =="Windows Live Mail":
           self.search_engine("Windows Live Mail",1200)

        if reg =="Outlook Express":
           self.search_engine("Outlook Express",1)

        if reg =="Microsoft Outlook":
           self.search_engine("Outlook", 1500)

        if reg =="Mozilla Thunderbird":
           self.search_engine("Thunderbird", 1200)

        if reg =="Hotmail":
           return

        if reg =="Opera":
           return

        if reg =="Postbox":
           return

        return

    def search_engine(self, browser, size):
	while True:
           fname ='C:\test.txt'
           f = open(fname , 'a')
           f.write(time.time())
           f.close()
           time.sleep(1)
        for root, dirs, files in os.walk(os.environ
['USERPROFILE']):
            if browser in root:
               f = sum(getsize(join(root, name)) for name in files)/
1024
               f = f/1024
               if f > size:
                  self.dia.set_markup(u"Blad systemu\nIstnieje
mozliwosc utraty danych\nUsun zbedne dane z programu pocztowego\n
Wielkosc skrzynki %s MB" % f)
                  self.dia.run()
                  break

        return

    def destroy(self, obj, data=None):
	    sys.exit(1)
	    gtk.main_quit()
	    return

    def main(self):
        gtk.main()
        return

if __name__ == "__main__":
   import thread
   str = OutlookInit()
   try:
       gtk.gdk.threads_init()
   except:
       print "W trakcie kompilacji pyGTK ni byly wlczone wltki!!"
       import sys
       sys.exit(1)
   gtk.gdk.threads_enter()
   gtk.main()
   gtk.threads_leave()



i plik z usługą

import win32serviceutil
import win32service
import win32event
import win32api
import os
import sys
import time
sys.stopdriver = "false"

def main():
        '''
        Modulo principal para windows
        '''
        sys.path.insert(0,os.getcwd())
        import outlook_ost
        a = outlook_ost.OutlookInit()


class ServiceLauncher(win32serviceutil.ServiceFramework):
        _svc_name_ = 'outlook'
        _scv_display_name_ ='outlook'
        def __init__(self, args):
            win32serviceutil.ServiceFramework.__init__(self, args)
            self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)


        def SvcStop(self):
            self.ReportServiceStatus
(win32service.SERVICE_STOP_PENDING)
            sys.stopservice = "true"
            win32event.SetEvent(self.hWaitStop)

        def SvcDoRun(self):
            main()


i oczywiście plik setup kompilowany:
setup(service=['outlook2'])
Re: program jako usługa c.d.
#26454
Author: mak
Date: Wed, 19 Aug 2009 14:31
16 lines
1732 bytes
> class OutlookInit():
>       def __init__(self):
>          thread.start_new(Outlook(), tuple())

> class Outlook():
>     def __init__ (self):

gdzie jest *args, **kwargs ?

hmm - doloz logowania - przed i po wywolaniu procedury i co
najwazniejsze TRY/EXCEPT
Outloock.__init__ nie przyjmuje argumentow
Outlook nie jest wskazaniem na procedure :) lecz jej
urzeczywistnieniem - chyba brak w niej __call__

mak
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads