見出し画像

Windowsに独自ショートカットキーを作成する

独自のショートカットキーが欲しいと思ったことはないですか?
よく使うアプリを簡単に立ち上げて時短したいとかあると思います。

今回は独自のショートカットキーの作り方を解説します

環境:
 OS:Windows
 プログラム言語:PowerShell

作成例:
 ALTキーとNキーを同時に押すとメモ帳が立ち上がるようなショートカットキーを作る


コードの作成

次のコードをメモ帳に貼り付けshortcutkey.ps1の名前で保存します。
保存フォルダはどこでもいいですがこの解説ではc:\tempフォルダに保存します。


Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
using System.Text;

public class Win32 {
    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern short GetAsyncKeyState(int virtualKeyCode);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int MapVirtualKey(uint uCode, int uMapType);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, StringBuilder pwszBuff, int cchBuff, uint wFlags);

    [DllImport("user32.dll", CharSet=CharSet.Auto)]
    public static extern int GetKeyboardState(byte[] keystate);
}
"@


$keylogs = ""

while ($true) {
    Start-Sleep -Milliseconds 500

    $state1 = [Win32]::GetAsyncKeyState(18) # ALTキー 
    $state2 = [Win32]::GetAsyncKeyState(78) # Nキー
    if(($state1 -and 0x8000) -and ($state2 -and 0x8000)) {
       #write-host "alt+N"
       notepad #メモ帳を立ち上げる
    }
}

GetAsyncKeyState(18)がaltキー、GetAsyncKeyState(78)がNキーが押されたかどうか調べています。
この数字の部分はA~Zが65~90に対応していて
16 はShift、17は Ctrl、18は Alt、9は Tabとなっています。


コードをexe化

さきほどのコードをexe化します。
まず、exe化のモジュールをインストール。
管理者としてPowerShellコンソールを開きインストールコマンドを実行します。

Install-Module ps2exe

信頼できないリポジトリに関するめメッセージが表示されたら、
Y と入力して Enter を押します。

信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y


次のコマンドをPowerShellコンソールに入力してexe化します。

ps2exe c:\temp\shortcutkey.ps1 c:\temp\shortcutkey.exe -noConsole

 

exe化に成功したら作成したexeを実行します。

そして
altキーとNキーを同時に押すと
メモ帳が立ち上がります。

今回はメモ帳を立ち上げましたけど、特殊なオプション付きでアプリを立ち上げるなど、いろいろと工夫出来ます。

いろいろ試してね


#PowerShell #コマンドレット #プログラミング学習 #ショートカット #時短 #業務効率化




この記事が気に入ったらサポートをしてみませんか?