Please Help - Commandes "Send" ne sont pas exécutées Topic is solved

Poser vos questions de programmation en AutoHotkey
DeeJayOne

Please Help - Commandes "Send" ne sont pas exécutées  Topic is solved

21 Aug 2018, 17:08

Bonjour,
Je suis un Newbie.
Dans le script ci-dessous, les 2 lignes suivantes ne s’exécutent pas :

Code: Select all

Send, Hello World
Send, ^h
Je m'attendais à ce que la chaîne de caractères "Hello World" soit écrite et que que la bôite de dialogue soit lancée au démarrage de NotePad.

Code: Select all

; Lancement de notepad (et sélection de la fenêtre)
Run, notepad.exe
WinActivate, Untitled - Notepad
WinWaitActive, Untitled - Notepad

; Notepad
; #IfWinActive Untitled - Notepad
; #IfWinActive ahk_class Notepad
Send, Hello World
Send, ^h

#Space::
; MsgBox, You pressed WIN+SPACE in Notepad.
; Send, Hello World
Send, ^h titi
Return

::msg::You typed msg in Notepad
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Please Help - Commandes "Send" ne sont pas exécutées

21 Aug 2018, 20:07

- Untitled - Notepad - il s'agit du titre de la fenêtre dans la version... anglophone du bloc-notes. ;)
- Pour un script plus fiable, il est aussi possible d'utiliser l'identifiant unique de la fenêtre (ID) ou du processus (PID) considéré.
. Un PID peut en particulier être récupéré au lancement d'un programme, lors de l'utilisation de la commande run.
. WinWait mets à jour la 'Last Found Window' dès lors qu'une fenêtre correspondant aux critères passés en paramètres existe ou vient à l'existence avant le temps qui lui est imparti pour ce faire. Or, dans tous les cas où, lors de l'utilisation d'une "fonction-fenêtre" ou d'une "commande-fenêtre" telle que WinWaitActive, WinExist etc., tous les paramètres sont omis, c'est la 'Last Found Window' qui est utilisée par défaut. - Par ailleurs, il existe la directive #If pour créer des hotkeys et des hotstrings sensibles au contexte.

Code: Select all

#NoEnv
#SingleInstance force
SendMode, Input
#Warn

run, notepad.exe,,, PID
WinWait, Sans titre - Bloc-notes
; ou...
; WinWait % "ahk_pid " . PID
WinActivate ; pas de paramètre: on utilise la 'Last Found Window'. Or, WinWait vient de mettre à jour la 'Last Found Window'
WinWaitActive
Send, Hello World
; ou...
; Send, {text}Hello World
Send, ^h
; ou...
; WinMenuSelectItem, % "ahk_id " . ID,, Edition, Remplacer...
; ou encore...
; WinMenuSelectItem, % "ahk_id " . ID,, 2&, 10&
return

#If WinActive("ahk_pid " PID) AND not WinExist("Remplacer") ; il est possible d'identifier une fenêtre à l'aide de plusieurs critères
	#Space::
		Send, ^h
		WinWait, Remplacer
		WinWaitActive
		Send, titi
		; ou...
		; Send, {text}titi
	return
#If

::msg::You typed msg somewhere *but not necessarily* in Notepad
#IfWinActive ahk_class Notepad
	::btw::You typed btw in Notepad
#If
DeeJayOne

Re: Please Help - Commandes "Send" ne sont pas exécutées

26 Aug 2018, 08:12

Merci A_AhkUser pour ces précieuses informations.

J'ai appliqué le script à la lettre mais cela ne change rien au résultat. Toujours pas de "Hello World" écrit dans NotePad à l'ouverture et le CTRL+H n'est pas exécuté.
Le WINDOWS+SPACE, msg et btw fonctionne en revanche correctement.

Pour informations, j'utilise la version "AutoHotkey_1.1.29.01" en fichier ZIP.
Je lance le script via un fichier batch sous Windows 10 :

Code: Select all

AutoHotkeyU64.exe "go_template.ahk"
exit
Le fichier de script "go_template.ahk" contient l'exemple de script.
Les 2 fichiers sont au format (UTF-8 sans BOM).
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Please Help - Commandes "Send" ne sont pas exécutées

27 Aug 2018, 03:16

Salut DeeJayOne,
DeeJayOne wrote:J'ai appliqué le script à la lettre mais cela ne change rien au résultat. Toujours pas de "Hello World" écrit dans NotePad à l'ouverture et le CTRL+H n'est pas exécuté.
Et ce, même en essayant avec l'alternative WinWait commentée - c'est-à-dire en commentant:

Code: Select all

WinWait, Sans titre - Bloc-notes
et en décommentant:

Code: Select all

WinWait % "ahk_pid " . PID
?


[EDIT]

A propos, tu peux t'assurer que la commande WinWait expire en effet et que les commandes subséquentes telles le send, ^h sont exécutées en affichant les lignes récemment exécutées - par exemple à l'aide de ce hotkey:

Code: Select all

^l::
	ListLines
	Pause
return
Guest

Re: Please Help - Commandes "Send" ne sont pas exécutées

27 Aug 2018, 03:51

Ce code ne fonctionne pas.

Code: Select all

WinWait, Sans titre - Bloc-notes ; (ne fonctionne pas)
; ou...
; WinWait % "ahk_pid " . PID
Mais celui-ci

Code: Select all

; WinWait, Sans titre - Bloc-notes ; (ne fonctionne pas)
; ou...
WinWait % "ahk_pid " . PID
fonctionne à merveille !!!

Merci beaucoup, j'avais du oublié de tester cette possibilité.
En revanche, je n'arrive pas expliquer pourquoi "WinWait, Sans titre - Bloc-notes" ne fonctionne pas.
J'ai vérifié plusieurs fois, l'orthographe et la casse est correcte. (vérifié également dans le gestionnaire de tâches Windows)
J'ai même essayé avec des guillemets (WinWait, "Sans titre - Bloc-notes"), mais c'est sans succès.

La commande ListLines permet de vérifier tout cela, merci pour l'info !
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Please Help - Commandes "Send" ne sont pas exécutées

30 Aug 2018, 12:34

Invité wrote:

Code: Select all

; WinWait, Sans titre - Bloc-notes ; (ne fonctionne pas)
; ou...
WinWait % "ahk_pid " . PID
fonctionne à merveille !!!
Cool! :thumbup:
En revanche, je n'arrive pas expliquer pourquoi "WinWait, Sans titre - Bloc-notes" ne fonctionne pas.
J'ai vérifié plusieurs fois, l'orthographe et la casse est correcte. (vérifié également dans le gestionnaire de tâches Windows)
Si l'orthographe et la casse sont corrects, je n'ai, pour ma part, aucune explication quant au fait que ça ne fonctionne pas...
Au reste, le 'title match mode' ne peut pas être en cause ici car Sans titre - Bloc-notes, étant le titre complet, répond aux trois type de matchs proposés par SetTitleMatchMode..
Saches que tu peux aussi t'assurer d'avoir le titre exact de la fenêtre en 'inspectant avec WindowSpy, qui se trouve dans le répertoire de AHK:

Code: Select all

#NoEnv
#SingleInstance force
#Warn
; Windows 8.1 64 bit - Autohotkey v1.1.29.01 32-bit Unicode

SplitPath, % A_AHKPath,, repertoireDeAHK
run % repertoireDeAHK . "\WindowSpy.ahk"
J'ai même essayé avec des guillemets (WinWait, "Sans titre - Bloc-notes"), mais c'est sans succès.
En dehors des expressions - où les guillemets doubles sont interprétées comme définissant une chaîne de caractères -, les guillemets sont signifiantes est valent pour des guillemets littérales. Compare:

Code: Select all

MsgBox % "test > " . 4+7
MsgBox "test > " 4+7
La commande ListLines permet de vérifier tout cela, merci pour l'info !
pas de problèmes! ;)

Return to “J'ai besoin d'aide”

Who is online

Users browsing this forum: No registered users and 2 guests