LoginSignup
1
1

More than 1 year has passed since last update.

AHK(AutoHotkey)の iniファイルを使い 「署名やURL」「パスワード」管理をMenuで実現する 【F12】でメニューを表示 バージョンアップ版

Last updated at Posted at 2021-09-10

AHK(AutoHotkey)の iniファイルを使い 「署名やURL」「パスワード」管理をMenuで実現する 【F12】でメニューを表示 バージョンアップ版です。

初期設定では、登録出来る個数は25個ですが、例えば50個でもOKですし、もちろん10個に減らしてもOKです。
最近のWindows10では「マイドキュメント」とか「デスクトップ」とかのフォルダを知らぬ間に【OneDrive】へ同期していることがあるので
気になる方は、プログラムの起動前にSendPS.iniファイルのPathをドライブCとは別のドライブに変更しておくと良いと思います。

【重要】パスワード等を保存する「SendPS.ini」は暗号化せずに保存しているのでご注意ください
    無保証ですので自己責任でお使いください!

【F12】を押して起動するとこんな感じになります
01_SendPS.jpg

02_SendPS.jpg

03_SendPS.jpg

GitHubでは最新のソースコードを公開しています。
https://github.com/kuhen-org/akh/blob/main/SendPS.ahk


【参考サイト】Windows IME On Off 制御
https://qiita.com/neokix/items/83ac2ac8e1dd405528b0

【参考サイト】F12 を押す回数で処理を選択
https://pouhon.net/ahk-keywait/2848/

以下がAHKのコードです。

追記:2021-10-14に「署名」内に「ドライブ」「ネットワーク」へのリンクがあれば自動で開くようにしました。


;https://www.autohotkey.com/ からAutoHotKeyをダウンロードしてからお使いください
;このコードを【SendPS.ahk】として保存すること

;//////////////////////////////////////////////
;【署名】【URL】【ログインID PW】 管理プログラム
; By skojima@kuhen.org

Vertext=Ver.2021-10-14_0730

;//////////////////////////////////////////////

;///////////////
; 初期設定
;///////////////

;登録可能数を設定
Gvarkosu=25

;使用するiniファイルのパスとファイル名

global Gvarinifile ;グローバル変数宣言
Gvarinifile=%A_MyDocuments%\SendPS.ini

;///////////////

MsgBox ,, 【署名】【URL】【ログインID PW】 管理プログラム %Vertext%,【F12】 1回:メニュー 2回:設定ファイル直接編集 長押し:設定再読込\n\nこのプログラムは無保証です自己責任でお使いください By skojima@kuhen.org , 3

;/// マイドキュメント内に SendPS.ini が存在しないなら>初期設定
IfNotExist, %Gvarinifile%
{
FileAppend,,%Gvarinifile%
msgbox,【重要】今から署名、パスワード保存用として\n\n【%Gvarinifile%】\n\nを作成&使用します!\n\n保存されるデータは暗号化されませんのでご注意ください!
}

;---------------------------------------------------------------
;/// 署名の最大個数を読込
IniRead, sig_kosu,%Gvarinifile%, sig, kosu

;/// エラーなら>初期設定
IfEqual, sig_kosu,ERROR
{
IniWrite, %Gvarkosu% , %Gvarinifile%, sig, kosu
IniRead, sig_kosu,%Gvarinifile%, sig, kosu

MsgBox, 登録可能「署名」数 %sig_kosu%

Loop , %Gvarkosu% {
IniWrite, "" , %Gvarinifile%, sig, sigid%A_index%
IniWrite,"", %Gvarinifile%, sig, sigdata%A_index%

}

}

;/// 署名出力用メニュー作成
Loop , %sig_kosu% {
IniRead, sig_id,%Gvarinifile%, sig, sigid%A_index%
IniRead, sig_data,%Gvarinifile%, sig, sigdata%A_index%
Menu , kuhensig , Add , 【sigid%A_index%】 %sig_id% %sig_data%,SENDSIG
}

;/// 署名設定用メニュー作成
Loop , %sig_kosu% {
IniRead, sig_id,%Gvarinifile%, sig, sigid%A_index%
Menu , kuhensigset , Add ,【sigid%A_index%】%sig_id%,SAVESIG
}

;---------------------------------------------------------------
;/// パスワードの最大個数を読込
IniRead, pw_kosu,%Gvarinifile%, pw, kosu

;/// エラーなら>初期設定
IfEqual, pw_kosu,ERROR
{
IniWrite, %Gvarkosu% , %Gvarinifile%, pw, kosu
IniRead, pw_kosu,%Gvarinifile%, pw, kosu

MsgBox, 登録可能「パスワード」数 %pw_kosu%

Loop , %Gvarkosu% {
IniWrite, "" , %Gvarinifile%, pw, pwid%A_index%
IniWrite,"", %Gvarinifile%, pw, pwdata%A_index%
}

}

;/// パスワード出力用メニュー作成
Loop , %pw_kosu% {
IniRead, pw_id,%Gvarinifile%, pw, pwid%A_index%
Menu , kuhenpw , Add ,【pwid%A_index%】 %pw_id%,SENDPW
}

;/// パスワード設定用メニュー作成
Loop , %pw_kosu% {
IniRead, pw_id,%Gvarinifile%, pw, pwid%A_index%
Menu , kuhenpwset , Add ,【pwid%A_index%】%pw_id%,SAVEPW

}

;===============================================================================================
;Menu , kuhen , Add , 【重要】保存パスワードは暗号化されてません!  %Vertext%,nothing
;Menu , kuhen , Add ,    無保証です自己責任でお使いください By skojima@kuhen.org,nothing
;Menu , kuhen , Add , 【F12】 1回:メニュー表示 2回:設定ファイル直接編集 長押し:設定再読込,nothing
;Menu , kuhen , Add ;

Menu , kuhen , Add ,■【署名】【URL】等を出力, :kuhensig
Menu , kuhen , Add ;
Menu , kuhen , Add ,■【パスワードのID、PWを出力】, :kuhenpw
Menu , kuhen , Add ;
Menu , kuhen , Add ,   ◆【署名等設定】  「登録名」と「署名本文」、パスワードで使う「URL」や「メモ」等を設定, :kuhensigset
Menu , kuhen , Add ;
Menu , kuhen , Add ,   ◆【パスワード設定】  「ID」 と 「パスワード」 を設定, :kuhenpwset
Menu , kuhen , Add ;
Menu , kuhen , Add ,(&!v) [ Alt+ V ] 【ペイント起動】+【貼り付け】, ALT_V

;===============================================================================================

return

;---------------------------------------------------------------
;/// Menuのコメント用(何も処理しない)
;------------
nothing:
Return

;------------
!v:: ; Alt+v
;------------

ALT_V:

IMEGetstateOFF()
Sleep,300

run, C:\Windows\System32\mspaint.exe
Sleep,1000

Send ^v ; Ctrl+v

Return

;---------------------------------------------------------------
;登録している「署名」「URL」等を出力
;
SENDSIG(Item){

ichi := InStr(Item,"】")-7
StringMid, id , Item , 7 , %ichi%

Sleep,300

IMEGetstateOFF()

IniRead, sig_id,%Gvarinifile%, sig, sigid%id%
Sleep,200
IniRead, sig_data,%Gvarinifile%, sig, sigdata%id%
Sleep,200

SIGVar=%sig_data%
SIGVar:=RegExReplace(SIGVar,"\n","\n")
Clipboard =%SIGVar%

If StrLen(sig_data) = 0{
MsgBox,,,エラー:署名が「空白」です!\n\n◆【署名設定】で登録を!
}else{

;URLなら開く
If SubStr( sig_data,1,4)="http" {
;MsgBox,4,,【 %sig_id% 】nn%SIGVar%nnを開きますか?
; IfMsgBox, Yes
Run , %sig_data%
}

;ドライブCなら開く
If SubStr( sig_data,2,2)=":\" {
;MsgBox,4,,【 %sig_id% 】nn%SIGVar%nnを開きますか?
; IfMsgBox, Yes
Run , %sig_data%
}

;ネットフォルダなら開く
If SubStr( sig_data,1,2)="\" {
;MsgBox,4,,【 %sig_id% 】nn%SIGVar%nnを開きますか?
; IfMsgBox, Yes
Run , %sig_data%
}

}

}

;---------------------------------------------------------------
;登録している「ID」「PW」を出力
;
SENDPW(Item){

ichi := InStr(Item,"】")-6
StringMid, id , Item , 6 , %ichi%

Sleep,200

IMEGetstateOFF()

IniRead, pw_id,%Gvarinifile%, pw, pwid%id%

Sleep,200
Clipboard =%pw_id%

IniRead, pw_data,%Gvarinifile%, pw, pwdata%id%

If StrLen(pw_data) = 0{
MsgBox,,,エラー:パスワードが「空白」です!\n\n◆【パスワード設定】で登録を!
}else{
MsgBox,4096,,現在【 %pw_id% 】が「貼り付け」で使えます\n\nこの後は「パスワード」が「貼り付け」で使えます
}

Sleep,300
Clipboard =%pw_data%

}

;---------------------------------------------------------------
;「署名」「URL」を保存
;
SAVESIG(Item){

ichi := InStr(Item,"】")-7
StringMid, id , Item , 7 , %ichi%

SIGSET(id)

}

;---------------------------------------------------------------
;「ID」と「PW」を保存
;
SAVEPW(Item){
ichi := InStr(Item,"】")-6
StringMid, id , Item , 6 , %ichi%

PWSET(id)

}

;---------------------------------------------------------------
; F12 を押す回数で処理を選択
;
;https://pouhon.net/ahk-keywait/2848/
#UseHook ;UseHookをOnにした状態で使用
F12::
key := "F12"
KeyWait, %key%, T0.3
If(ErrorLevel){ ;長押しした場合
msgbox, 今から「設定ファイル」を再読み込みします!
Reload
KeyWait, %key%
return
}
KeyWait, %key%, D, T0.2
If(!ErrorLevel){ ;2度押しした場合
Run , %Gvarinifile%
KeyWait, %key%
return
}else{ ;短押しした場合

Menu , kuhen , show

KeyWait, %key%
return

}
return

;---------------------------------------------------------------
;「署名」「URL」等を登録
;
SIGSET(No){

IMEGetstateON()

IniRead, sig_sigid,%Gvarinifile%, sig, sigid%No%

InputBox, new_sig_sigid,【署名】「表示名」を登録,【2-1】現在の【表示名】→【 %sig_sigid% 】\n\n登録したい 「表示名」を入力\n\n変更 しない→【Cancel】,,600,200,,,,,%sig_sigid%

If ErrorLevel = 0
{
IniWrite, %new_sig_sigid% , %Gvarinifile%, sig, sigid%No%
sleep 300
IniRead, sig_sigid2,%Gvarinifile%, sig, sigid%No%
sleep 300
msgbox,現在の【表示名】は\n\n【 %sig_sigid2% 】\n\nです。
}
Else
{
MsgBox,キャンセル:「表示名」は更新しませんでした!
}

IniRead, sig_sigdata,%Gvarinifile%, sig, sigdata%No%

InputBox, new_sig_sigdata,【署名】「本文」を登録,【2-2】現在の【署名「本文」】→【 %sig_sigdata% 】\n\n登録したい 【署名】「本文」、「URL」等 を入力\n\n【改行】は → ¥n を半角で入力してください\n\n変更 しない→【Cancel】,,800,250,,,,,%sig_sigdata%

If ErrorLevel = 0
{
IniWrite, %new_sig_sigdata% , %Gvarinifile%, sig, sigdata%No%
sleep 300
IniRead, sig_sigdata2,%Gvarinifile%, sig, sigdata%No%
sleep 300
msgbox,現在の【「署名」本文】は\n\n【 %sig_sigdata2% 】\n\nです。

}
Else
{
MsgBox,キャンセル:「署名」本文は更新しませんでした!
}

Reload

return
}

;---------------------------------------------------------------
;「ID」「PW」を登録
;
PWSET(No){

IMEGetstateOFF()

IniRead, pw_pwid,%Gvarinifile%, pw, pwid%No%

InputBox, new_pw_pwid,【パスワード】のIDを登録,【2-1】現在の【ID】→【 %pw_pwid% 】\n\n登録ログイン用 「ID」 を入力\n\n変更 しない→【Cancel】,,500,250,,,,,%pw_pwid%

If ErrorLevel = 0
{
IniWrite, %new_pw_pwid% , %Gvarinifile%, pw, pwid%No%
sleep 300
IniRead, pw_pwid2,%Gvarinifile%, pw, pwid%No%
sleep 300
msgbox,現在の【ID】は\n\n【 %pw_pwid2% 】\n\nです。
}
Else
{
MsgBox,キャンセル:【ID】は更新しませんでした!
}

IniRead, pw_pwdata,%Gvarinifile%, pw, pwdata%No%

InputBox, new_pw_pwdata,【パスワード】の登録,【2-2】現在の【パスワード】→【 %pw_pwdata% 】\n\n登録ログイン用 「パスワード」 を入力\n\n変更 しない→【Cancel】,,500,250,,,,,%pw_pwdata%

If ErrorLevel = 0
{
IniWrite, %new_pw_pwdata% , %Gvarinifile%, pw, pwdata%No%
sleep 300
IniRead, pw_pwdata2,%Gvarinifile%, pw, pwdata%No%
sleep 300
msgbox,現在の【パスワード】は\n\n【 %pw_pwdata2% 】\n\nです。
}
Else
{
MsgBox,キャンセル:【パスワード】は更新しませんでした!
}

Reload

return

}

;===============================================================================================
;Windows IME On Off 制御
;https://qiita.com/neokix/items/83ac2ac8e1dd405528b0
;

IMEGetstateOFF(){
DetectHiddenWindows, ON
WinGet, vcurrentwindow, ID, A
vgetdefault := DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint", vcurrentwindow)
vimestate := DllCall("\user32.dll\SendMessageA", "UInt", vgetdefault, "UInt", 0x0283, "Int", 0x0005, "Int", 0)
DetectHiddenWindows, Off

If (vimestate=0) ;imeがoffなら
{
;Offだから何もしない
}
else
{
Send, {vkf3}
}

return

}

IMEGetstateON(){
DetectHiddenWindows, ON
WinGet, vcurrentwindow, ID, A
vgetdefault := DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint", vcurrentwindow)
vimestate := DllCall("user32.dll\SendMessageA", "UInt", vgetdefault, "UInt", 0x0283, "Int", 0x0005, "Int", 0)
DetectHiddenWindows, Off

If (vimestate=0) ;imeがoffなら
{
Send, {vkf3}
}
else
{
;Onだから何もしない
}

return

}
;===============================================================================================

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1