2016-04-22 19 views
0

Ich mache eine Anwendung, die einen Browser mit SendKeys steuert. Aber da SendKeys die volle Kontrolle über die Tastatur haben, möchte ich diese App unter dem anderen Benutzer ausführen. Auf diese Weise werde ich arbeiten, die Anwendung wird tun, was sie zu tun hat, und wir werden keine Probleme füreinander machen.Python - Steuerelement-Anwendung durch den anderen Benutzer in Windows gestartet

Die einfachste Code ist

import time 
import SendKeys 

time.sleep(10) 
SendKeys.SendKeys('hello') 

ich es laufen, konzentrieren sich auf den Bereich, wo ich will meinen Text „Hallo“, und warten einzufügen. Wenn ich den Benutzer nicht ändere, wird alles wie erwartet ausgeführt. Aber wenn ich es ausführen, den Benutzer ändern und nach 10 Sekunden zurückkehren, sehe ich, dass SendKeys nichts an das Programm gesendet.

Wie senden Tastenanschläge an das Programm unter dem anderen Benutzer?

(Ich habe versucht, das gleiche mit pywinauto, aber das Ergebnis war fast das gleiche - alles ist gut, wenn ich den Benutzer nicht ändern, und Fehler, wenn ich es ändere. So dachte ich, dass es viel einfacher ist um dieses Problem nur mit SendKeys zu lösen).

+1

Eine Anwendung, die mit Benutzer X ausgeführt wird, der Tastenanschläge an Anwendungen von Benutzer Y senden kann, wäre ein großes Sicherheitsproblem. Das sollte nicht möglich sein. –

+0

Wie läuft es mit dem Automatisierungsskript unter Benutzer Y? Dazu benötigen Sie natürlich ein einfaches Launcher-Skript. –

+0

@ João Pinto Nein, Benutzer X führen das Programm und es sollte in der Umgebung von X ausgeführt werden. Auch wenn der Benutzer geändert wird, sollten alle seine Programme weiterhin funktionieren. Wenn ich zum Beispiel das Skript ausführe, das etwas berechnet und den Benutzer zu einem anderen ändert, sehe ich nach der erneuten Anmeldung, dass das Skript die ganze Zeit funktioniert hat. – SKulibin

Antwort

1

Um nur unsere Diskussion in Kommentaren und im Chat zusammenzufassen. Deine Wünsche sind sehr weit gefasst. Ich versuche dir nur ein paar Richtungen zu zeigen.

Wenn Sie die Methoden (als echter Benutzer) verwenden möchten, müssen Sie Ihr Automatisierungsskript in der Remotesitzung ausführen, nicht lokal. Dies wird ausführlich in meiner anderen Antwort erläutert: SetCursorPos fail with "the parameter is incorrect" after rdp session terminated.

Wenn Sie die Automatisierung still auf der gleichen Maschine (im minimierten Zustand) ausführen möchten, gibt es ein Beispiel für den Umgang mit versteckten Fenstern: Python - Control window with pywinauto while the window is minimized or hidden. Minimieren Sie einfach das Fenster und verwenden Sie stille Methoden (fast alle außer und TypeKeys).

Fühlen Sie sich frei, detailliertere Fragen über pywinauto und GUI-Automatisierung zu stellen.