Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
development:python:windows [2019-04-09 18:02] Martin Prochnowdevelopment:python:windows [2019-07-26 15:02] (aktuell) Martin Prochnow
Zeile 1: Zeile 1:
 ====== Windows ====== ====== Windows ======
 +
 +===== Programmfenster in Vordergrund bringen =====
 +Folgende Funktion kann genutzt werden, um unter Windows ein Programm-Fenster in den Vordergrund zu bringen. Parameter ist der Fenstername (wie er in der Titelleiste steht). Text, der dem Namen nachgestellt ist, wird ignoriert.
 +
 +<sxh python>
 +def raiseWindowByName(title):
 +    import win32con
 +    import win32gui
 +
 +    wins = []
 +    win32gui.EnumWindows(lambda x, y: y.append(x), wins)
 +
 +    for winId in wins:
 +        winName = win32gui.GetWindowText(winId)
 +        if winName.startswith(title):
 +            if win32gui.IsIconic(winId):
 +                win32gui.ShowWindow(winId, win32con.SW_RESTORE)
 +                
 +            win32gui.SetForegroundWindow(winId)
 +            
 +            break
 +</sxh>
  
 ===== COM-Wrapper-Klassen erstellen ===== ===== COM-Wrapper-Klassen erstellen =====
Zeile 13: Zeile 35:
 makepy.main() makepy.main()
 </sxh> </sxh>
 +
 +===== Nutzung von IPv4 erzwingen =====
 +Unter neueren Windows-Versionen wird unter Python bei der Namensauflösung für Windows-Rechner (z.B. auch //localhost//) zuerst eine IPv6-Adresse zurückgegeben. Wenn der anzusprechende Server aber kein IPv6 spricht, kommt es aufgrund der entsprechenden Timeouts zu Verzögerungen beim Verbindungsaufbau.
 +
 +Eine Lösung wäre es natürlich, IPv6 im Betriebssystem zu deaktivieren. Das hat aber was von "mit Kanonen auf Spatzen schießen". Man kann Python auch dazu überreden, bei der Namensauflösung nur IPv4-Adressen zu berücksichtigen.
 +
 +<sxh python>
 +import socket
 +origGetAddrInfo = socket.getaddrinfo
 +
 +def getAddrInfoWrapper(host, port, family = 0, socktype = 0, proto = 0, flags = 0):
 +    return origGetAddrInfo(host, port, socket.AF_INET, socktype, proto, flags)
 +
 +socket.getaddrinfo = getAddrInfoWrapper
 +</sxh>
 +
 +[[http://stackoverflow.com/questions/2014534/force-python-mechanize-urllib2-to-only-use-a-requests/6319043#6319043|Quelle]]
  
 ===== Windows-Service ===== ===== Windows-Service =====
  • Zuletzt geändert: 2019-07-26 15:02