pywin32 ??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mulder
User
Beiträge: 49
Registriert: Montag 15. Oktober 2007, 10:36
Wohnort: nürnberg

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:
" schlimmer als stress ist, keinen zu haben"
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mulder
User
Beiträge: 49
Registriert: Montag 15. Oktober 2007, 10:36
Wohnort: nürnberg

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:
" schlimmer als stress ist, keinen zu haben"
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

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
Antworten