2016-05-23 14 views
0

Ich habe einen Code, der bei jedem Looping eine Cursorposition einstellt (ich habe gehört, dass dies eine schlechte Methode ist, aber ich habe keine alternative Methode im Hinterkopf.) Ich werde diese Nachricht ab und zu bekommen die Schale:Python 2.7.11 - 'SetCursorPos' 'Zugriff verweigert.'

Traceback (letzter Anruf zuletzt): Datei "C: \ Benutzer \ mjesionowski \ Desktop \ ExcelScript \ EXTRABETA.py", Linie 211, in win32api.SetCursorPos ((200,95)) Fehler: (5, 'SetCursorPos', 'Zugriff verweigert.')

Irgendwelche Hilfe?

Danke, Mason J

+0

Passwortgeschützte Bildschirmschoner, System gesperrt, etc. –

Antwort

0

Die MSDN doc aufzählt mindestens zwei Fällen, in denen es mit etwas fehlschlagen kann wie Zugang verweigert:

  1. A window should move the cursor only when the cursor is in the window's client area.
  2. The input desktop must be the current desktop when you call SetCursorPos.

Während ich bin nicht sicher, dass Windows tatsächlich erzwingt die 1, kann es abhängen, welche Art von Anwendung hat die Maus oder den Fokus: Wenn es ein UAC-Fenster ist, dann ist es wahrscheinlich verboten, den Cursor zu bewegen. Genauso, wenn Sie sich auf dem Sicherheits-Desktop befinden (was angezeigt wird, wenn Sie Strg + Alt + Entf drücken) oder wenn die Station gesperrt ist.

Mein Rat, wenn Sie darauf bestehen, die SetCursorPos() Hack zu tun, ist die access denied Fehler zu ignorieren und hoffe, es funktioniert nur irgendwie ... mehr oder weniger.

+0

Der Fehler würde bei 2 verschiedenen Zeilen des Codes auftreten, wo ich es nannte. Ich habe vor jedem Aufruf von SetCursorPos eine time.sleep (0.01) hinzugefügt und keine Fehler mehr! Definitiv ein Fall von "Ich weiß nicht, warum es funktioniert, aber gut." Danke für die Hilfe. –