code: def getWindowByPID(self, pid, order=0):
          
          if pid <= 0:
              return None
          EnumWindowsProc = ctypes.WINFUNCTYPE(
              ctypes.c_bool,
              ctypes.POINTER(ctypes.c_int),
              ctypes.py_object)
          def callback(hwnd, context):
              if ctypes.windll.user32.IsWindowVisible(hwnd):
                  pid = ctypes.c_ulong()
                  ctypes.windll.user32.GetWindowThreadProcessId(hwnd, ctypes.byref(pid))
                  if context["pid"] == int(pid.value) and not context["handle"]:
                      if context["order"] > 0:
                          context["order"] -= 1
                      else:
                          context["handle"] = hwnd
              return True
          data = {"pid": pid, "handle": None, "order": order}
          ctypes.windll.user32.EnumWindows(EnumWindowsProc(callback), ctypes.py_object(data))
          return data["handle"]
docs: Returns a handle for the first window that matches the provided PID