Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
?Input mezőből visszakapott adat probléma
?HTML-ben a Flash átméretezés torzul
Eredeti mezőnevek lekérdezése
Oldalon keresés 8x írja ki az eredményt
?XML-ből sok szövegmező
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
Cikkek
»Bevezetés a genetikus algoritmusokba
»Bevezetés az adatkezelésbe
»Bevezetés a CSS alapjaiba
»GroupWise-kiegészítők készítése Python-ban
»Aspektus-orientált programozás
» több cikk
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Cikkek

»

Programozási nyelvek

»

Python

»

GroupWise-kiegészítők készítése Python-ban

A sorozat további cikkei:
szerző: FowlerTrainer, idő: 2005.03.22., értékelés: 5 (1 szavazat)
  Betűméret növelése Betűméret csökkentése Kapcsolódó fórum Felvétel kedvencekhez Küldés emailben Nyomtatható verzió
Korunk rémálma a "SPAM", amiből naponta 100-200 db is "beeshet" a postaládánkba. Természetesen sok szolgáltató már felszerelkezett a modern szűrőkkel, de elképzelhető, hogy nálunk ilyen nincsen. Írjunk tehát egy kiegészítőt erre a feladatra!

Ez a cikk azok számára készült, akik rendelkeznek némi előismerettel a COM/OLE technológiák tekintetében, illetve a GroupWise levelezőklienst használják, de nincsenek megelégedve annak jelenlegi képességeivel.

Az itt leírtak a program módosításával természetesen más nyelvekben is hasznosíthatóak, lévén az ActiveX komponensek kis változtatással (paraméter típusok, hívási konvenciók, stb.) minden nyelvben alkalmazhatóak.

A COM/OLE objektum létrehozása

Pythonban a win32com modulban találunk segédeszközöket COM/OLE objektumok készítéséhez. A win32com modul a Win32 Extensions, külön letölthető csomagban áll rendelkezésre.

Megjegyzés: mielőtt letöltenénk a legújabb Pythont, érdemes megnézni, hogy mely modulok lettek "hozzáigazítva" ehhez verzióhoz. Könnyen előfordulhat, mint az a jelen cikk írójával is történt, hogy a Python aktuális verziójához még nem létezett Win32 Extensions csomag. Ekkor érdemesebb az előző verziókhoz fordulni, mivel azok támogatása valószínűbb.

Ezen túl javasolható még az ActivePython használata, amely majdnem egy időben jelenik meg a a "standard" Pythonnal, valamint ebben teljesen jól működnek a mellékelt win32 extension-ök. Amiben kényelmesebb, hogy minden adott hozzá (nem kell külön telepíteni), továbbá "*.chm" súgófájlok is rendelkezésre állnak. Az ActivePython egyébiránt nem sokban (zlib, bzip2, Tix) különbözik egy Python + pywin32 párostól. További információk, letöltés itt, és itt.

A következő példából látható, hogy a COM/OLE objektumok létrehozása esetében pl. a Delphi-től eltérően nincsen szükség típusmegjelölésre a változóknál (ld. Variant, vagy OLE Variant, stb.), mivel a Python változók típusa futás közben derül ki, illetve állítódik be. Első lépésben tehát be kell importáljuk a megfelelő modult, majd Dispatch segítségével le kell kérnünk a megfelelő objektumot (osztályosítani kell).

 import win32com.client
 GW = win32com.client.Dispatch('NovellGroupWareSession')
Fenti példa tehát létrehoz egy objektumot, amin keresztül tulajdonképpen elérjük a GroupWise klienst. Természetesen a kliens telepítve kell legyen a gépünkre, ellenkező esetben a következőhöz hasonló hibaüzenetet kaphatunk:
> Végrehajtás...: C:\Program Files\ConTEXT\ConExec.exe "C:\Python\python.exe" "U:\gwpys\gwpy1.py"

Traceback (most recent call last):
  File "U:\gwpys\gwpy1.py", line 2, in ?
    GW = win32com.client.Dispatch('NovellGroupWareSession')
  File "C:\Python\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python\lib\site-packages\win32com\client\dynamic.py", line 84, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python\lib\site-packages\win32com\client\dynamic.py", line 72, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221005, '\xc9rv\xe9nytelen oszt\xe1ly\xfa karakterl\xe1nc', None, None)
> Végrehajtás...

A COM/OLE objektum meghívása

Ennél mi sem egyszerűbb. A létrehozott ActiveX komponenst egyszerűen úgy használjuk, mintha egyszerű, "sima" Python objektum volna.
Tehát meghívhatjuk metódusait, elérhetjük mezőit, stb.

 import win32com.client
 GW = win32com.client.Dispatch('NovellGroupWareSession')
 uid="your login name"
 pwd="your password"
 Account=GW.Login(uid,'',pwd)
Itt most létrehoztunk egy GroupWise alapobjektumot, majd bejelentkezés után egy GroupWise Account-ot. Az Account-ot fogjuk használni minden olyan objektum elérésére, amely a postafiókunk kezeléséhez szükséges, hiszen az Account (és vele a privát adatok) csak a konkrét bejelentkezés után válnak láthatóvá, "hívhatóvá". Bővebben erről itt olvashatunk.

Küldés emailben Küldés emailben Nyomtatható verzió Nyomtatható verzió
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock280
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Hack100
»Riha60
»Akhiles50
»mrchandra50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen