Edit detail for PyWin32 revision 1 of 1

1
Editor: pycz
Time: 2006/10/29 16:51:35 GMT+0
Note:

changed:
-
PyWin32

 **win32all, pywin32, Python Win32 Extensions a/nebo Python for Windows Extensions** - synonyma, pod kterými se na Netu ukrývá

 Jedná se balík modulů pro práci pod Windows. Obsahuje modul pro práci s !WinAPI (win32api), s registry (_winreg), s Microsoftí technologií COM (win32com) a další. K těmto modulům je také dodáváno vývojové prostředí !PythonWin. 
 
 Obsahuje, kromě jiných, také tyto moduly (seznam všech se mi nikde na Netu nepodařilo najít, najdete ho až v souboru nápovědy pywin32.chm po instalaci):

- win32api

- win32files

- win32net

- win32print

- win32service

- isapi

- mapi

- pywintypes

- windows editor pythonwin.


Download, Tutoriály, praktické ukázky, kniha:
 
  - https://sourceforge.net/projects/pywin32/

  - http://www.reportlab.com/ftp/talks/PythonWindowsTutorial.doc

  - http://aspn.activestate.com/ASPN/search?query=win32&x=0&y=0&section=PYTHONCKBK&type=Subsection

  - http://www.microsoft.com/technet/scriptcenter/scripts/python/pyindex.mspx

  - http://www.oreilly.com/catalog/pythonwin32/


 Po instalaci 
    
    vám vznikne několik nových adresářů v  adresáři site-packages:
    
    - win32com - pro práci s com objekty
    
    - win32comext - 
    
    - pywin32_system32
    
    - isapi
    
    - win32 - moduly pro práci s win api (síťě, uživatelé, tisk, ...)
    
    - pythonwin - pyeditor pro windows od M. Hammonda
    
    - a jeden soubor nápovědy: pywin32.chm

 
 Python COM
 
    Asi by se slušelo připomenout, že při skriptování pomocí COM umí Python pouze objekty s rozhraním !IDispatch a potom pár objektů, ke kterým je u !PythonCOMu uděláno DLL rozhraní.  Tím myslím přímé vytváření objektů přes !CoCreateInstance a !QueryInterface s daným rozhraním (obecně musí umět !IDispatch).
    
Praktické ukázky
 
 Příklad scriptování Wordu
 
  vložení textu do dokumentu::
 
   # -*- coding: cp1250 -*- 
   import win32com.client
   
   # je snad lepší dávat přednost gencache.EnsureDispatch před Dispatch, 
   # protože se tak zpřístupní všechny možné konstanty
   # zde konkrétně wdNewBlankDocument
   wordApp = win32com.client.gencache.EnsureDispatch("Word.Application")
   
   wordApp.Visible = 1 # jasné
   
   # Nový dokument
   wordApp.Documents.Add(DocumentType=win32com.client.constants.wdNewBlankDocument)
   
   # Vložíme text na pozici kurzoru
   wordApp.Selection.TypeText (Text=u"Tuto větu napsal Python.")
   
   #uložíme
   wordApp.ActiveDocument.SaveAs("Python")
   
   # zavřeme Word
   # wordApp.Application.Quit()
   
 A jak jsem na všechny ty metody wordApp přišel? Pustil jsem si Word, nahrál jsem si makro, které dělalo to co bych chtěl, pak jsem to makro editoval a to co jsem tam našel, jsem s mírnými úpravami (přidělání závorek, změna := na =, apod.) dal do scriptu vždy za objekt wordApp.
 
 Druhý možný způsob je hrabat se "MSDN":http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrtskhowtocreatenewdocuments.asp nebo v "Googlu":http://www.google.com/search?hl=cs&q=%22microsoft+word+object+model%22&btnG=Vyhledat+Googlem&lr= . Hodně štěstí :-)
 
 
 Jaké mám připojené disky?
 
  ::
 
  
   >>> import win32net
   >>> win32net.NetServerDiskEnum()
   Traceback (most recent call last):
    File "<stdin>", line 1, in ?
   TypeError: function takes at least 1 argument (0 given)
   >>> win32net.NetServerDiskEnum(None)
   (u'A:', u'C:', u'D:', u'E:') 
 
  nebo ::
 
    import win32api
 
    s = win32api.GetLogicalDriveStrings()
    print s
 
    lst = s.split('\0')
    print lst
 




PyWin32

win32all, pywin32, Python Win32 Extensions a/nebo Python for Windows Extensions - synonyma, pod kterými se na Netu ukrývá

Jedná se balík modulů pro práci pod Windows. Obsahuje modul pro práci s WinAPI (win32api), s registry (_winreg), s Microsoftí technologií COM (win32com) a další. K těmto modulům je také dodáváno vývojové prostředí PythonWin.

Obsahuje, kromě jiných, také tyto moduly (seznam všech se mi nikde na Netu nepodařilo najít, najdete ho až v souboru nápovědy pywin32.chm po instalaci):

  • win32api
  • win32files
  • win32net
  • win32print
  • win32service
  • isapi
  • mapi
  • pywintypes
  • windows editor pythonwin.

Download, Tutoriály, praktické ukázky, kniha:

Po instalaci

vám vznikne několik nových adresářů v adresáři site-packages:

  • win32com - pro práci s com objekty
  • win32comext -
  • pywin32_system32
  • isapi
  • win32 - moduly pro práci s win api (síťě, uživatelé, tisk, ...)
  • pythonwin - pyeditor pro windows od M. Hammonda
  • a jeden soubor nápovědy: pywin32.chm

Python COM

Asi by se slušelo připomenout, že při skriptování pomocí COM umí Python pouze objekty s rozhraním IDispatch a potom pár objektů, ke kterým je u PythonCOMu uděláno DLL rozhraní. Tím myslím přímé vytváření objektů přes CoCreateInstance a QueryInterface s daným rozhraním (obecně musí umět IDispatch).

Praktické ukázky

Příklad scriptování Wordu

vložení textu do dokumentu:

   # -*- coding: cp1250 -*- 
   import win32com.client

   # je snad lepší dávat přednost gencache.EnsureDispatch před Dispatch, 
   # protože se tak zpřístupní všechny možné konstanty
   # zde konkrétně wdNewBlankDocument
   wordApp = win32com.client.gencache.EnsureDispatch("Word.Application")

   wordApp.Visible = 1 # jasné

   # Nový dokument
   wordApp.Documents.Add(DocumentType=win32com.client.constants.wdNewBlankDocument)

   # Vložíme text na pozici kurzoru
   wordApp.Selection.TypeText (Text=u"Tuto větu napsal Python.")

   #uložíme
   wordApp.ActiveDocument.SaveAs("Python")

   # zavřeme Word
   # wordApp.Application.Quit()

A jak jsem na všechny ty metody wordApp přišel? Pustil jsem si Word, nahrál jsem si makro, které dělalo to co bych chtěl, pak jsem to makro editoval a to co jsem tam našel, jsem s mírnými úpravami (přidělání závorek, změna := na =, apod.) dal do scriptu vždy za objekt wordApp.

Druhý možný způsob je hrabat se MSDN nebo v Googlu . Hodně štěstí :-)

Jaké mám připojené disky?

   >>> import win32net
   >>> win32net.NetServerDiskEnum()
   Traceback (most recent call last):
    File "<stdin>", line 1, in ?
   TypeError: function takes at least 1 argument (0 given)
   >>> win32net.NetServerDiskEnum(None)
   (u'A:', u'C:', u'D:', u'E:') 

nebo :

    import win32api

    s = win32api.GetLogicalDriveStrings()
    print s

    lst = s.split('\0')
    print lst