Il est difficile de faire en sorte que votre application réponde spécifiquement à un utilisateur qui clique sur son icône de dock. Une tâche plus simple consiste à faire en sorte que votre application réponde à l'acquisition du focus là où il appartenait auparavant à une autre application, c'est-à-dire chaque fois que votre application est amenée au premier plan, ce que fera un clic sur l'icône du dock.
J'ai fortement commenté le script ci-dessous pour vous guider à travers ce qui est pertinent. Tout ce que je n'ai pas commenté ou auquel je n'ai pas fait spécifiquement référence dans les commentaires devrait être laissé seul et là où il est, à moins que vous ne soyez sûr de savoir ce que vous faites.
Évidemment, cela ne servira pas à grand-chose s'il est simplement géré de l'intérieur. scriptÉditeur Vous devez donc l'incorporer dans le code AppleScript de votre application (ou, plutôt, incorporer le code AppleScript de votre application dans ce code), l'enregistrer et exécuter l'applet. Si vous n'y apportez aucune modification, une fois l'applet sauvegardée, vous verrez apparaître toutes les 10 secondes une notification vous indiquant que l'application est en cours d'exécution. "au ralenti..." et une boîte de dialogue s'ouvrira à chaque fois que l'application sera mise au point pour vous informer qu'elle est en cours de développement. "Focalisation acquise". .
-----------------------------------------------------------|
on run
_init()
# Your startup code goes here, which will
# execute once when your application runs
# e.g.
# do shell script "/path/to/start-script.sh"
end run
on idle
# Any code you need to run repeatedly can
# go here. Otherwise, you can delete this
# entire handler
# The following line is test code:
display notification "idling..."
# The return value is how often (in seconds)
# this handler will be called
return 10
end idle
on activate
# Insert code you want to execute whenever
# your application receives focus, e.g.
#
# tell application "System Events" to ¬
# open folder "~/Path/To/Folder/"
# The following line is test code:
display dialog "Focus acquired."
end activate
on quit
global |@|
|@|'s removeObserver:me
# Any other clean-up code that needs to
# execute just before your application
# exits should go here, e.g.
# do shell script "/path/to/quit-script.sh"
continue quit
end quit
-----------------------------------------------------------|
# PRIVATE HANDLERS:
use framework "Foundation"
use framework "AppKit"
use scripting additions
property |@| : a reference to my NSWorkspace's ¬
sharedWorkspace's notificationCenter
on _init()
"NSWorkspaceDidActivateApplicationNotification"
|@|'s addObserver:me selector:("_notify:") ¬
|name|:result object:(missing value)
idle
end _init
to _notify:notification
local notification
if my id = the notification's userInfo()'s ¬
NSWorkspaceApplicationKey's ¬
bundleIdentifier() as text ¬
then activate me
end _notify:
-----------------------------------------------------------|
0 votes
Le fait de cliquer spécifiquement sur l'icône du dock est plutôt difficile à mettre en œuvre. Toutefois, étant donné qu'un clic sur l'icône du dock activerait ou mettrait au point votre application, il s'agit d'une fonctionnalité relativement simple à mettre en œuvre.
0 votes
Je suis content que ce soit simple. Des conseils sur la façon de le mettre en œuvre ?