Seite 1 von 1

pywin32 ??

Verfasst: Freitag 11. Januar 2008, 10:49
von mulder
moin moin!

kennst jemand eine kleine "einfuehrung" in pywin32? .. oder howto oder tutorial??

ich will nicht einfach blind drauf los testen ... und nur stumpf die referenzen durch lesen bin ich zu faul! ... :oops:

Re: pywin32 ??

Verfasst: Freitag 11. Januar 2008, 13:35
von Leonidas
mulder hat geschrieben:und nur stumpf die referenzen durch lesen bin ich zu faul! ... :oops:
Sollen wir bei dir vorbeikommen und sie im Chor vorlesen, damit du dich nicht überarbeitest? :twisted:

Nein, im Ernst: Das wirst du wohl machen müssen, wenn du damit was machen willst. Aber keine Sorge: pywin32 ist eher schlecht dokumentiert, daher gibt es nicht allzuviel zu lesen. Mir hat oft eine Google-Suche mehr geholfen. Oft kann man an der Stelle von pywin32 ebenso einfach ctypes verwenden. Manchmal findest du auch hier was.

Verfasst: Montag 14. Januar 2008, 10:14
von mulder
Sollen wir bei dir vorbeikommen und sie im Chor vorlesen, damit du dich nicht überarbeitest?
sowas macht ihr? .. das ist aber nett .. okay ich haette am donnerstag zeit ... :P

danke .. also doch die "harte" tour! .. naja .. :roll:

Verfasst: Dienstag 15. Januar 2008, 10:12
von DER Olf
Ich empfehle dir, ein paar C, C++ oder Pascal Tutorials zur Win32 Programmierung durchzulesen. Wenn du das dann beherrschst ist es eine Kleinigkeit, das dort gelesene mit Hilfe der Referenz (einige Funktionsaufrufe wurden OOP-isiert, einige Funktionen haben weniger Parameter, da man sich ja nicht selbstständig um Buffergrößen und dergleichen kümmern muss) nach Python zu übersetzen.

Kleines Beispiel (nicht getestet): Alle Desktop Fenster anzeigen lassen

C++ (ich verzichte mal auf stl)

Code: Alles auswählen

BOOL CALLBACK enumProc(HWND hWnd, LPARAM lParam)
{
  int len = GetWindowTextLength(hWnd) + 1;
  char* buf = new buf[len];
  GetWindowText(hWnd, buf, len);
  printf("%s\n", buf);
  delete[] buf;

  return TRUE;
}

[...]

HDESK hDesk = GetThreadDesktop(GetCurrentThreadId());
EnumDesktopWindows(hDesk, enumProc, 0);
und so in python:

Code: Alles auswählen

#! /usr/bin/python

import win32api
import win32gui
import win32service

_id = win32api.GetCurrentThreadId()
desk = win32service.GetThreadDesktop(_id)
windowList = desk.EnumDesktopWindows()
for w in windowList:
    print win32gui.GetWindowText(w)
mit ein wenig verständnis für die winapi und ein wenig Doku lesen und ausprobieren (gerade die aufspaltung auf die module macht ein wenig arbeit.
beispiel: GetCurrentThreadId() befindet sich in win32api (glaube ich zumindest), aber GetThreadDesktop() befindet sich in win32service :)

liebe grüße, olf