Keresés
Hírlevél
 
Kiemelt témák
»Hogyan védjem meg a portálomat?
»Google wave
»Assembly :: röviden
Állás/munka
»Profi PHP szakit sörért felbérelnék :)
»IPhone App elkészítése
»Profi sitebuildert keresünk projekt alapon
»IT projektkoordinátort keresek Tatabányára
»Másodállást keresek, C# és C++
» több téma
Tudástár
?Szövegszerkesztő c#
?Link szövegének értékátadása fájlba
?Termékkereső típusra, gyártóra, kategóriára
?PHP mappa méretének meghatározása+ kiterjesztés
?TGridPanel - adott rész színének megváltoztatása.
?Listbox elem színezése
?Rajzolás Canvas-re JAVA-ban
?Statikus adattag
Ajax ellenőrzés, eredményfüggő megjelenítés
?Kép megjelenítési probléma
?C#-ban txt-ből másolás és írás
?Word szövegdoboz adatainak kimásolása
?C# 8 bites szabványos HEX file beolvasása
?C# kép betöltése futásidőben
?Free pascal unicode stringek
» több téma
Társalgó
»Trial megvalositasa
»Melyik főiskola vagy egyetem?
»PHP fejlesztés felsőfokon eladó !
»Eclipse 3.5.2 és Visual Editor 1.4
»C#-ban txt-ből másolás
»Adatvédelmi nyilvántartás
»Oracle SQL*PLUS windows kliens
»Weblap véleményezés
»HTML szerkesztő
»Webcam -> Flash -> Socket server
» 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
Top pontgyűjtők
»Micu1.800
»Árnyék910
»vinie530
»Frostech0440
»Riha420
»djjjozsi410
»pelz350
»stl340
»klorand320
»NevemTeve230
Hírek
»Cassandra-ra tér át a MySQL-ről a Digg is
»Letölthető a Mozilla Jetpack SDK első kiadása
»Saját alkalmazásboltot nyitott a Google
»Súlyos sebezhetőség minden Apache kiszolgálóban
»Natív 3D-s támogatás a legújabb Android fejlesztőkészletben
» több hír
PC Fórum hírek
»Lopta a Firefox Jetpack terveit a Mozilla ?
»Minden weboldalra beköltözne a Facebook
»Nem boldogul az legújabb merevlemezekkel az XP és a Linux
»Átírják a Firefox licencszerződését
»Több tízezer nebuló a Microsuliban
»Sebezhető az Internet Explorer és az Opera is
»Még márciusban megjelenik az Intel nyolcmagos szerverlapkája
»Hamis Core i7 processzorokat árultak a neten
Tagi blogok
»USB
»PHP, mint sablonmotor egyszerűen
»Én és linux
»Coming out