Page 1 sur 1

Send ne fonctionne pas avec Runas

Posté : mer. 13 déc. 2017 15:39
par sharky29
Bonjour à tous,

je souhaite automatiser une action dans une mmc, que je lance donc en tant qu'admin et je me heurte à ce pb.
J'ai appliqué mon pb avec Notepad qui réagit pareil.

En effet, avec Run, je peux lancer Notepad et envoyer un texte via Send, mais avec RunAs, je n'arrive pas à renvoyer de texte, ou de commande avec Send.
D'ailleurs la fermeture Winclose ne fonctionne pas non plus.

Est ce un pb de droit ???

Bref, merci de votre aide.

Code : Tout sélectionner

#include <AutoItConstants.au3>

Opt("WinTitleMatchMode", 2)
Opt("TrayIconDebug", 1)
Opt("GuiCloseOnEsc", 1)

Local $sUserName = "user"
Local $sPassword = "password"

Local $iPID = RunAs($sUserName, @ComputerName, $sPassword, 0, "notepad.exe", "", @SW_SHOWMAXIMIZED)
;Local $iPID = Run("notepad.exe")  

WinActivate ($iPID)     ;prend le focus

Send ("Ceci est un test")

Send ("!f")			;ALT F		;Fichier
Send ("{q}")		;Q			;Quitter
Send ("{n}")		;N			;Ne pas sauvegarder

MsgBox (64, "Information", "Fermeture de la fenetre de travail")

WinClose ($iPID)

Re: Send ne fonctionne pas avec Runas

Posté : jeu. 14 déc. 2017 11:33
par sharky29
En fait, je pense que cela viens du fait que le script n'est pas lancé en tant qu'admin, alors que celui ci exécute (RunAs) un programme en tant qu'admin.

Je vais donc voir su côté de #RequireAdmin.

Re: Send ne fonctionne pas avec Runas

Posté : jeu. 06 déc. 2018 13:46
par simsap92
Bonjour Sharky29,

Si je peux me permettre je te dépose ce que j'ais pu trouver comme solution à se problème

j'ais d'abords ajouté au début de mon script

Code : Tout sélectionner

 #RequireAdmin
Essaies de remplacer :

Code : Tout sélectionner

WinActivate ($iPID)  ;prend le focus

Par:

Code : Tout sélectionner

WinWaitActive("RunAs", "", 1 ou TimeOut de ton choix)
J'ai pu Tester en admin puis avec un compte user simple sans droits et pour moi cela a fonctionné,
mon script s'effectue bien en administrateur ce qui n'était pas le cas auparavant.

pour le PID, j'ais créé une petite boite de dialogue et ensuite je la clos avec cette commande
bien sur je pense qu'il y a surement mieux mais ça a le mérite de fonctionner en tout cas chez moi

Si ça peut t'aider, Voici ce que j'ais utilisé :

Code : Tout sélectionner

MsgBox($MB_SYSTEMMODAL,"Process En Cours","Le Process Est : " & $_iPID,10)
ProcessClose($_iPID)
Cdlt.