Windows 10 の新しい電卓アプリケーションで、強制的にインスタンスを 1 つだけ開くようにする方法はありますか?

Windows 10 の新しい電卓アプリケーションで、強制的にインスタンスを 1 つだけ開くようにする方法はありますか?

Windows 8.1 から Windows 10 Pro にアップグレードしたばかりですが、キーボードの電卓キーを使用するたびに新しいインスタンスが開く点を除けば、新しい電卓アプリケーションをとても気に入っています。

別のアプリケーションを強制的に使用せずに、Windows 8.1 の電卓のように強制的に単一インスタンス アプリケーションにする方法はありますか?

答え1

使用AHK電卓のキーを次のスクリプトにマップします (これはWin+にマップされますZ)。

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

答え2

アプリを起動してタスクバーにピン留めするだけです。その後、クリックするか、ショートカット (Win+1、Win+2 など) を使用して起動します。クリックとショートカットの使用はどちらも、アプリのインスタンスを 1 つだけ実行します。インスタンスがすでに実行されている場合、ショートカットを繰り返すと、アプリのフォーカスのみが呼び出されます。

別のインスタンスを起動することにした場合は、タスクバーのアイコンを右クリックして、アプリ名をクリックするだけです。私の意見では、これらのショートカットを使用すると、作業効率が上がり、精神的疲労が大幅に軽減されます。

電卓アプリのスクリーンショット

答え3

関与しない方法AHK:

私は、スクリプトを %PATH% から見える場所に置き、レジストリを編集してスクリプトを呼び出すという別の方法を採用しました。

レジストリ編集は次のとおりです。

キーを
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18\ShellExecute
、スクリプト ファイルに名前を付けるために選択した値「scriptname.wsf」に設定します。

私が使用したスクリプトは次のとおりです。

<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>

これはStack Overflowの質問に対する回答に基づいていますWindows で電卓 (calc.exe) の単一インスタンスを実行する方法

しかし、彼らが書いたスクリプトは Windows 10 では動作しなかったため、他のソースからいくつかを組み合わせて、動作するスクリプトを作成しました。私は VBScript について何も知らないので奇跡ですが、AHK を実行したくない場合は、機能するオプションです。

関連情報