Existe uma maneira de forçar o novo aplicativo de calculadora no Windows 10 a abrir apenas uma instância dele?

Existe uma maneira de forçar o novo aplicativo de calculadora no Windows 10 a abrir apenas uma instância dele?

Acabei de atualizar do Windows 8.1 para o Windows 10 Pro e estou gostando muito do novo aplicativo de calculadora, exceto pelo fato de que ele abre uma nova instância sempre que uso a tecla de calculadora do teclado.

Existe uma maneira de forçá-lo a ser um aplicativo de instância única, como a calculadora do Windows 8.1, sem me forçar a usar um aplicativo diferente?

Responder1

UsarAHK. Mapeie a tecla da sua calculadora para o seguinte script (este é mapeado para Win+ Z):

#z::
IfWinExist Calculator
WinActivate
else
Run calculator://
return

Responder2

Basta iniciar o aplicativo e fixá-lo na barra de tarefas. Então você inicia clicando ou usando os atalhos Win+1, Win+2 etc. Clicar e usar o atalho executa apenas uma instância do aplicativo. Se a instância já estiver em execução e você repetir o atalho, você apenas chamará o foco do aplicativo.

Se você decidir iniciar outra instância, basta clicar com o botão direito no ícone da barra de tarefas e clicar no nome do aplicativo. Na minha opinião, usar esses atalhos aumenta a eficiência do trabalho e reduz significativamente o esgotamento mental.

captura de tela do aplicativo calculadora

Responder3

Um método que não envolveAHK:

Optei por outro método que envolvia colocar um script em algum lugar visível para% PATH% e editar o registro para chamar o script.

Essa edição do registro é a seguinte:

Defina a chave
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18\ShellExecute
como o valor "scriptname.wsf", que é o nome que você escolher para nomear o arquivo de script.

O script que usei foi:

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshShell = WScript.CreateObject ("WScript.Shell")
         Set colProcessList = GetObject("Winmgmts:").ExecQuery ("Select * from Win32_Process")
         
         For Each objProcess in colProcessList
         If objProcess.name = "Calculator.exe" then
         vFound = True
         End if
         Next
         
         If vFound then
         WshShell.AppActivate "Calculator"
         Else
         WshShell.run "calc.exe", 5, false
         End If
      </script>
   </job>
</package>

Isso foi baseado em uma resposta à pergunta Stack OverflowComo executar uma única instância da calculadora (calc.exe) no Windows.

Mas o script que eles escreveram não funcionou no Windows 10, então combinei alguns bits de outras fontes para fazer o meu, o que funciona. Um milagre, já que não sei nada sobre VBScript, mas é uma opção funcional, se você não quiser rodar AHK.

informação relacionada