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 20:02]
Martin Prochnow
development:python:windows [2019-07-26 17:02]
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 17:02