(AutoHotkey)(自分で使っているライブラリの最新版)(投げやりVer)

 テキストファイルに保存して includeするなり .ahkファイル内にコピペするなりで使ってください < ここら辺が投げやり
まぁ依存関係のある関数があるから includeするほうが面倒無いかも・・・
突然何事かと思ったかもしれませんが
今日 久々に ちょっとだけ AutoHotkey のファイルをいじったので 衝動的に書き込んだだけです 笑)

; CharLower(ByRef Expression)                                                     文字列変数内 の 大文字を 小文字に 置き換えてしまう、 2バイト文字も可能
; CharUpper(ByRef Expression)                                                     文字列変数内 の 小文字を 大文字に 置き換えてしまう、 2バイト文字も可能
; DiscEject(DriveName, LimenTime = 1000)                                          CD/DVDドライブを開閉する
; E2D(Expression, BufferSize = 1000)                                              ファイル名と思われる文字列から ディレクトリと思われる部分抜き出す
; E2DF(Expression, BufferSize = 1000)                                             ファイル名と思われる文字列から 拡張子以外と思われる部分を抜き出す
; E2Dri(Expression)                                                               ファイル名と思われる文字列から ドライブ名と思われる部分だけを抜き出す
; E2E(Expression, BufferSize = 1000)                                              ファイル名と思われる文字列から 拡張子と思われる部分だけを抜き出す
; E2F(Expression, BufferSize = 1000)                                              ファイル名と思われる文字列から 拡張子を含まないファイル名と思われる部分を抜き出す
; E2FE(Expression, BufferSize = 1000)                                             ファイル名と思われる部分から 拡張子を含むファイル名と思われる部分を抜き出す
; FN2FL(FileName, BufferSize = 1000)                                              ファイル名 を 「フルパス」の「ロングファイル名」に 変換
; FN2FS(FileName, BufferSize = 200)                                               ファイル名 を 「フルパス」の「ショートファイル名」に 変換
; FN2IsD(FileName)                                                                指定されたファイルが ディレクトリか調べる
; FN2IsE(FileName)                                                                ファイルが 存在するか調べる
; FN2L(FileName, BufferSize = 1000)                                               ファイル名 を 「ロングファイル名」に 変換
; FN2S(FileName, BufferSize = 200)                                                ファイル名 を 「ショートファイル名」 に 変換
; H2C(hWindow, BufferSize = 121)                                                  ハンドル を クラス名 に 変換する
; H2C2R(hWindow, RegularExpression, BufferSize = 121)                             ハンドルのクラス名 に 正規表現がマッチするかを調べる
; H2CL(hWindow)                                                                   ウインドウのハンドルを コントロールリスト に 変換する
; H2ExS(hWindow)                                                                  ウインドウのハンドル を 拡張ウインドウスタイル に 変換する
; H2hCL(hWindow)                                                                  ウインドウのハンドルを コントロールリスト に 変換する
; H2IsE(hWindow)                                                                  ハンドルのウインドウが 有効かどうかを調べる
; H2IsI(hWindow)                                                                  ハンドルのウインドウが 最小化状態かどうかを調べる
; H2IsV(hWindow)                                                                  ハンドルのウインドウ が 可視状態 か 不可視状態 かを 調べる
; H2IsW(hWindow)                                                                  ハンドルのウインドウが 存在するかどうかを調べる
; H2IsZ(hWindow)                                                                  ハンドルのウインドウが 最大化常態かどうかを調べる
; H2PID(hWindow)                                                                  ウインドウのハンドル を プロセスID に 変換する
; H2PN(hWindow, BufferSize = 120)                                                 ウインドウのハンドル を プロセス名 に 変換する
; H2S(hWindow)                                                                    ウインドウのハンドル を ウインドウスタイル に 変換する
; H2T(hWindow, BufferSize = 120)                                                  ウインドウのハンドル を タイトル に 変換する
; H2T2R(hWindow, RegularExpression, BufferSize = 120)                             ハンドルのタイトル に 正規表現がマッチするかを調べる
; IME_GetConv(hWindow)                                                            ハンドルのウインドウの IMEの 入力モードを取得する
; IME_IsON(hWindow)                                                               ハンドルのウインドウの IMEの ON OFF を 調べる
; IME_ON(hWindow, IsON)                                                           対象のウインドウの IMEを ON OFF する
; IME_SetConv(hWindow,ConversionMode)                                             対象のウインドウの IMEの 入力モードを設定する
; IsLeapYear(YYYY)                                                                うるう年かどうかを調べる
; KeyDown(VirtualKeyCode, WaitTime = 10)                                          アクティブなウインドウに対して KeyDownイベントを発生させる
; KeyPush(VirtualKeyCode, WaitTime = 10)                                          アクティブなウインドウに対して キーストロークを発生させる
; KeyUp(VirtualKeyCode, WaitTime = 10)                                            アクティブなウインドウに対して KeyUpイベントを発生させる
; M2A()                                                                           マウスポインタの 下の ウインドウを アクティブにする
; M2H()                                                                           マウスポインタの位置を ウインドウ の ハンドル に変換する (子ウインドウ も 対象)
; M2PH()                                                                          マウスポインタの位置を 親ウインドウ の ハンドル に変換する
; PstCmd(hWindow, wParam, lParam = 0)                                             WM_COMMAND を 送って即座に次の処理に移る、成功時0以外、失敗時0
; PstSysCmd(hWindow, wParam, lParam = 0)                                          WM_SYSCOMMAND を 送って即座に次の処理に移る、成功時0以外、失敗時0
; RandomFileSelect(FileMatchPatterns)                                             ファイルマッチパターンにマッチするファイルの中から 一つをランダムに選ぶ
; RunEx(ExecuteFileName, Parameter, WorkDirectory = "", SW_xxxx = 1)              Runコマンドの拡張版
; SetWallPaper(BmpFileName, Style = 0)                                            指定したBMPファイルを 壁紙に設定する、 0=中央 1=タイル 2以上=伸張
; SndCmd(hWindow, wParam, lParam = 0)                                             WM_COMMAND を 送る、 ウインドウプロシージャの戻り値を受け取る
; SndSysCmd(hWindow, wParam, lParam = 0)                                          WM_SYSCOMMAND を 送る、 ウインドウプロシージャの戻り値を受け取る
; ToBMP(InputFileName, OutputFileName, Option = "", NewSize = 0)                  BMP JPG PNG GIFファイル を BMPファイルとして書き出す
; ToJPG(InputFileName, OutputFileName, Quality = 100, Option = "", NewSize = 100) BMP JPG PNG GIFファイル を JPGファイルとして書き出す


;-------------------------------------------------------------------------------------------------------------------------------------------------------
; CharLower(ByRef Expression)    文字列変数内 の 大文字を 小文字に 置き換えてしまう、 2バイト文字も可能
;                                戻り値 は 指定した文字列のアドレス
CharLower(ByRef Expression)
{
	Return DllCall("user32.dll\CharLowerA", "Str", Expression, "UInt")
}
                                                                                                                                                                                                                                                                                                            • -
; CharUpper(ByRef Expression) 文字列変数内 の 小文字を 大文字に 置き換えてしまう、 2バイト文字も可能 ; 戻り値 は 指定した文字列のアドレス CharUpper(ByRef Expression) { Return DllCall("user32.dll\CharUpperA", "Str", Expression, "UInt") } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; DiscEject(DriveName, LimenTime = 1000) CD/DVDドライブを開閉する ; 開いたら Open、 閉じたら Close、エラー時 Error DiscEject(DriveName, LimenTime = 1000) { TickCount := DllCall("kernel32.dll\GetTickCount") Drive, Eject, %DriveName%: If ( ErrorLevel ) Return "Error" If ( (DllCall("kernel32.dll\GetTickCount") - TickCount) < LimenTime ) { Drive, Eject, %DriveName%: ,1 If ( ErrorLevel ) Return "Error" Return "Close" } Return "Open" } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2D(Expression, BufferSize = 1000) ファイル名と思われる文字列から ディレクトリと思われる部分抜き出す ; 最後の「\」は付かない ; ファイルの存在はチェックしていない ; 由来:ExpressionToDirectory E2D(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) Buf := Expression DllCall("shlwapi.dll\PathRemoveFileSpecA", "Str", Buf) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2DF(Expression, BufferSize = 1000) ファイル名と思われる文字列から 拡張子以外と思われる部分を抜き出す ; <ドライブ名>:\<フォルダ名>\・・・\<拡張子を含まないファイル名> ; ファイルの存在はチェックしていない ; 由来:ExpressionToDirectoryFilename E2DF(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) Buf := Expression DllCall("shlwapi.dll\PathRemoveExtensionA", "Str", Buf) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2Dri(Expression) ファイル名と思われる文字列から ドライブ名と思われる部分だけを抜き出す ; 「:\」は付かない ; ファイルの存在はチェックしていない ; 由来:ExpressionToDriveLetter E2Dri(Expression) { Buf := DllCall("shlwapi.dll\PathGetDriveNumberA", "Str", Expression) If ( Buf == -1 ) Return "" Return Chr(0x41 + Buf) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2E(Expression, BufferSize = 1000) ファイル名と思われる文字列から 拡張子と思われる部分だけを抜き出す ; 最初に「.」が付く ; ファイルの存在はチェックしていない ; 由来:ExpressionToExtension E2E(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\lstrcpyA", "Str", Buf, "UInt", DllCall("shlwapi.dll\PathFindExtensionA", "Str", Expression)) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2F(Expression, BufferSize = 1000) ファイル名と思われる文字列から 拡張子を含まないファイル名と思われる部分を抜き出す ; ファイルの存在はチェックしていない ; 由来:ExpressionToFilename E2F(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\lstrcpyA", "Str", Buf, "Int", DllCall("shlwapi.dll\PathFindFileNameA", "Str", Expression) ) DllCall("shlwapi.dll\PathRemoveExtensionA", "Str", Buf) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; E2FE(Expression, BufferSize = 1000) ファイル名と思われる部分から 拡張子を含むファイル名と思われる部分を抜き出す ; ファイルの存在はチェックしていない ; 由来:ExpressionToFilenameExtension E2FE(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\lstrcpyA", "Str", Buf, "Int", DllCall("shlwapi.dll\PathFindFileNameA", "Str", Expression) ) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2FL(FileName, BufferSize = 1000) ファイル名 を 「フルパス」の「ロングファイル名」に 変換 ; ファイルが存在しない時は 値無し(="") FN2FL(FileName, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\GetLongPathNameA", "Str", FileName, "Str", Buf, "UInt", BufferSize) DllCall("kernel32.dll\GetFullPathNameA", "Str", Buf, "UInt", BufferSize, "Str", Buf, "UInt", 0) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2FS(FileName, BufferSize = 200) ファイル名 を 「フルパス」の「ショートファイル名」に 変換 ; ファイルが存在しない時は 値無し(="") FN2FS(FileName, BufferSize = 200) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\GetShortPathNameA", "Str", FileName, "Str", Buf, "UInt", BufferSize) DllCall("kernel32.dll\GetFullPathNameA", "Str", Buf, "UInt", BufferSize, "Str", Buf, "UInt", 0) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2IsD(FileName) 指定されたファイルが ディレクトリか調べる FN2IsD(FileName) { If ( DllCall("shlwapi.dll\PathIsDirectoryA", "Str", FileName) ) Return True Else Return False } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2IsE(FileName) ファイルが 存在するか調べる FN2IsE(FileName) { Return DllCall("shlwapi.dll\PathFileExistsA", "Str", FileName) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2L(FileName, BufferSize = 1000) ファイル名 を 「ロングファイル名」に 変換 ; 相対パスの場合は 相対パスのまま ; ファイルが存在しない時は 値無し(="") FN2L(FileName, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\GetLongPathNameA", "Str", FileName, "Str", Buf, "UInt", BufferSize) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; FN2S(FileName, BufferSize = 200) ファイル名 を 「ショートファイル名」 に 変換 ; 相対パスの場合は 相対パスのまま ; ファイルが存在しない時は 値無し(="") FN2S(FileName, BufferSize = 200) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("kernel32.dll\GetShortPathNameA", "Str", FileName, "Str", Buf, "UInt", BufferSize) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2C(hWindow, BufferSize = 121) ハンドル を クラス名 に 変換する H2C(hWindow, BufferSize = 121) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("user32.dll\GetClassNameA", "UInt", hWindow, "Str", Buf, "UInt", BufferSize) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2C2R(hWindow, RegularExpression, BufferSize = 121) ハンドルのクラス名 に 正規表現がマッチするかを調べる H2C2R(hWindow, RegularExpression, BufferSize = 121) { Return RegExMatch(H2C(hWindow, BufferSize), RegularExpression) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2CL(hWindow) ウインドウのハンドルを コントロールリスト に 変換する ; 戻り値は コントロール名が 改行区切り H2CL(hWindow) { WinGet, Buf, ControlList, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2ExS(hWindow) ウインドウのハンドル を 拡張ウインドウスタイル に 変換する H2ExS(hWindow) { WinGet, Buf, ExStyle, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2hCL(hWindow) ウインドウのハンドルを コントロールリスト に 変換する ; H2CL との違いは コントロール名ではなくて ハンドル一覧になる H2hCL(hWindow, BufferSize = "") { WinGet, Buf, ControlListHWND, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2IsE(hWindow) ハンドルのウインドウが 有効かどうかを調べる H2IsE(hWindow) { Return DllCall("user32.dll\IsWindowEnabled", "UInt", hWindow) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2IsI(hWindow) ハンドルのウインドウが 最小化状態かどうかを調べる H2IsI(hWindow, BufferSize = "") { Return DllCall("user32.dll\IsIconic", "UInt" , hWindow) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2IsV(hWindow) ハンドルのウインドウ が 可視状態 か 不可視状態 かを 調べる H2IsV(hWindow) { Return DllCall("user32.dll\IsWindowVisible", "UInt", hWindow) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2IsW(hWindow) ハンドルのウインドウが 存在するかどうかを調べる H2IsW(hWindow) { Return DllCall("user32.dll\IsWindow", "UInt", hWindow) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2IsZ(hWindow) ハンドルのウインドウが 最大化常態かどうかを調べる H2IsZ(hWindow) { Return DllCall("user32.dll\IsZoomed", "UInt", hWindow) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2PID(hWindow) ウインドウのハンドル を プロセスID に 変換する H2PID(hWindow) { WinGet, Buf, PID, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2PN(hWindow, BufferSize = 120) ウインドウのハンドル を プロセス名 に 変換する H2PN(hWindow) { WinGet, Buf, ProcessName, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2S(hWindow) ウインドウのハンドル を ウインドウスタイル に 変換する H2S(hWindow) { WinGet, Buf, Style, ahk_id %hWindow% Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2T(hWindow, BufferSize = 120) ウインドウのハンドル を タイトル に 変換する ; 子ウインドウの場合は キャプション H2T(hWindow, BufferSize = 120) { VarSetCapacity(Buf, BufferSize, 0x00) DllCall("user32.dll\GetWindowTextA", "UInt", hWindow, "Str", Buf, "UInt", BufferSize) Return Buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; H2T2R(hWindow, RegularExpression, BufferSize = 120) ハンドルのタイトル に 正規表現がマッチするかを調べる H2T2R(hWindow, RegularExpression, BufferSize = 120) { Return RegExMatch(H2T(hWindow, BufferSize), RegularExpression) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; IME_GetConv(hWindow) ハンドルのウインドウの IMEの 入力モードを取得する ; 戻り値 は 以下の一覧 ; 0 かな入力 半角英数 ; 3 かな入力 半角カナ ; 8 かな入力 全角英数 ; 9 かな入力 全角ひらがな ; 11 かな入力 全角カタカナ ; 16 ローマ字入力 半角英数 ; 19 ローマ字入力 半角カナ ; 24 ローマ字入力 全角英数 ; 25 ローマ字入力 全角ひらがな ; 27 ローマ字入力 全角カタカナ IME_GetConv(hWindow) { ; WM_IME_CONTROL = 0x0283 ; IMC_GETCONVERSIONMODE = 0x0001 bufCurrentDetectMode := A_DetectHiddenWindows DetectHiddenWindows, On buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow) , "UInt", 0x0283, "Int", 0x0001, "Int", 0) DetectHiddenWindows, %bufCurrentDetectMode% Return buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; IME_IsON(hWindow) ハンドルのウインドウの IMEの ON OFF を 調べる ; 戻り値 ; 「ONの時 True(=1)」 ; 「OFFの時 False(=0)」 IME_IsON(hWindow) { ; WM_IME_CONTROL = 0x0283 ; IMC_GETOPENSTATUS = 0x0005 bufCurrentDetectMode := A_DetectHiddenWindows DetectHiddenWindows, On buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow) , "UInt", 0x0283, "Int", 0x0005, "Int", 0) DetectHiddenWindows, %bufCurrentDetectMode% Return buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; IME_ON(hWindow, IsON) 対象のウインドウの IMEを ON OFF する ; IsON には ONにしたい時は True、 OFFにしたい時は False ; 戻り値 ; 「成功時」 は 「0」 ; 「失敗時」 は 「0以外」 IME_ON(hWindow, IsON) { ; WM_IME_CONTROL = 0x0283 ; IMC_SETOPENSTATUS = 0x0006 bufCurrentDetectMode := A_DetectHiddenWindows DetectHiddenWindows, On buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow) , "UInt", 0x0283, "Int", 0x0006, "Int", IsON) DetectHiddenWindows, %bufCurrentDetectMode% Return buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; IME_SetConv(hWindow,ConversionMode) 対象のウインドウの IMEの 入力モードを設定する ; 0 かな入力 半角英数 ; 3 かな入力 半角カナ ; 8 かな入力 全角英数 ; 9 かな入力 全角ひらがな ; 11 かな入力 全角カタカナ ; 16 ローマ字入力 半角英数 ; 19 ローマ字入力 半角カナ ; 24 ローマ字入力 全角英数 ; 25 ローマ字入力 全角ひらがな ; 27 ローマ字入力 全角カタカナ ; 戻り値 ; 「成功時」 は 「0」 ; 「失敗時」 は 「0以外」 IME_SetConv(hWindow,ConversionMode) { ; WM_IME_CONTROL = 0x0283 ; IMC_SETCONVERSIONMODE = 0x0002 bufCurrentDetectMode := A_DetectHiddenWindows DetectHiddenWindows, On buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow) , "UInt", 0x0283, "Int", 0x0002, "Int", ConversionMode) DetectHiddenWindows, %bufCurrentDetectMode% Return buf } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; IsLeapYear(YYYY) うるう年かどうかを調べる IsLeapYear(YYYY) { ; うるう年 とは 西暦 が 4で 割り切れる 年 ; ただし 100で割り切れる場合 は 除く、が 400で割り切れる場合 は 含む YYYY := Floor(YYYY) If (YYYY < 0) Return False If ( Mod(YYYY, 4) == 0 ) { If ( Mod(YYYY, 400) == 0 ) Return True If ( Mod(YYYY, 100) == 0 ) Return False Return True } Return False } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; KeyDown(VirtualKeyCode, WaitTime = 10) アクティブなウインドウに対して KeyDownイベントを発生させる ; WaitTime は 関数が呼び出されてから 実際にイベントを発生させるまでの時間 ; Sendコマンドで問題が無ければ Sendコマンドを使う事を推奨 KeyDown(VirtualKeyCode, WaitTime = 10) { Sleep, WaitTime DllCall("user32.dll\keybd_event", "UChar", VirtualKeyCode, "UChar", 0, "Int", 0, "Int" ,0) Return } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; KeyPush(VirtualKeyCode, WaitTime = 10) アクティブなウインドウに対して キーストロークを発生させる ; WaitTime は 関数が呼び出されてから 実際にイベントを発生させるまでの時間 ; KeyPush関数の場合は ダウンイベント アップイベント 両方に 指定したウエイトが掛かる ; Sendコマンドで問題が無ければ Sendコマンドを使う事を推奨 KeyPush(VirtualKeyCode, WaitTime = 10) { KeyDown(VirtualKeyCode, WaitTime) KeyUp(VirtualKeyCode, WaitTime) Return } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; KeyUp(VirtualKeyCode, WaitTime = 10) アクティブなウインドウに対して KeyUpイベントを発生させる ; WaitTime は 関数が呼び出されてから 実際にイベントを発生させるまでの時間 ; Sendコマンドで問題が無ければ Sendコマンドを使う事を推奨 KeyUp(VirtualKeyCode, WaitTime = 10) { Sleep, WaitTime DllCall("user32.dll\keybd_event", "UChar", VirtualKeyCode, "UChar", 0, "Int", 2, "Int" ,0) Return } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; M2A() マウスポインタの 下の ウインドウを アクティブにする M2A() { hWindow := M2PH() WinActivate, ahk_id %hWindow% Return } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; M2H() マウスポインタの位置を ウインドウ の ハンドル に変換する (子ウインドウ も 対象) M2H() { CoordMode, Mouse, Screen MouseGetPos, PosX, PosY CoordMode, Mouse, Relative Return DllCall("user32.dll\WindowFromPoint", "Int", PosX, "Int", PosY) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; M2PH() マウスポインタの位置を 親ウインドウ の ハンドル に変換する ; 子ウインドウを指していても その親ウインドウのハンドル M2PH() { MouseGetPos, , , hWindow Return hWindow } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; PstCmd(hWindow, wParam, lParam = 0) WM_COMMAND を 送って即座に次の処理に移る、成功時0以外、失敗時0 PstCmd(hWindow, wParam, lParam = 0) { Return DllCall("user32.dll\PostMessageA", "UInt", hWindow, "UInt", 0x0111, "Int", wParam, "Int", lParam) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; PstSysCmd(hWindow, wParam, lParam = 0) WM_SYSCOMMAND を 送って即座に次の処理に移る、成功時0以外、失敗時0 PstSysCmd(hWindow, wParam, lParam = 0) { Return DllCall("user32.dll\PostMessageA", "UInt", hWindow, "UInt", 0x0112, "Int", wParam, "Int", lParam) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; RandomFileSelect(FileMatchPatterns) ファイルマッチパターンにマッチするファイルの中から 一つをランダムに選ぶ ; 複数個の ファイルマッチパターンを指定する場合は 「改行区切り」で指定する RandomFileSelect(FileMatchPatterns) { Count := 0 Loop, Parse, FileMatchPatterns, `n { If ( A_LoopField == "" ) Break Loop, %A_LoopField% Count++ } Random, RandomIndex, 1, %Count% Count := 0 Loop, Parse, FileMatchPatterns, `n { Loop, %A_LoopField% { Count++ If ( Count == RandomIndex ) Return A_LoopFileLongPath } } Return "" } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; RunEx(ExecuteFileName, Parameter, WorkDirectory = "", SW_xxxx = 1) Runコマンドの拡張版 ; 引数は順に 「実行したいファイル名」「コマンドライン引数」「作業ディレクトリ(省略可)」「起動時の状態(省略可)」 ; 「実行したいファイル名」 は ロングファイル名 で 間に 半角スペース を含んでいても そのままで大丈夫、 ショートファイル名でも可 ; 「コマンドライン引数」 は 不必要時でも "" と 明記する必要がある ; 「作業ディレクトリ」 は 省略した時は 「実行したいファイル名」と同じディレクトリが対象になる ; 「起動時の状態」 は 省略した時は 普段 Explorerから ダブルクリックで実行した時と 同じ挙動をする ; SW_xxxx の値に関しては 「通常 = 1」「最小化 = 2」「最大化 = 3」「最小化(非アクティブ) = 7」 など ; その他の動作は SW_で始まる定数を参照のこと RunEx(ExecuteFileName, Parameter, WorkDirectory = "", SW_xxxx = 1) { If ( (ExecuteFileName := FN2FL(ExecuteFileName)) == "" ) Return 0 If ( WorkDirectory == "" ) WorkDirectory := E2D(ExecuteFileName) . "\" Return DllCall("shell32.dll\ShellExecuteA", "UInt", 0 , "Str", "open" , "Str", ExecuteFileName , "Str", Parameter , "Str", WorkDirectory , "UInt", SW_xxxx) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; SetWallPaper(BmpFileName, Style = 0) 指定したBMPファイルを 壁紙に設定する、 0=中央 1=タイル 2以上=伸張 ; 戻り値 は 結果を文字列で SetWallPaper(BmpFileName, Style = 0) { If ( !FN2IsE(BmpFileName) ) Return "ファイルが存在しない" If ( !RegExMatch(E2E(BmpFileName), "[bB][mM][pP]" ) ) Return "拡張子が BMPではない" If ( Style == 0 ) { RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, TileWallpaper, 0 RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, WallpaperStyle, 0 }Else{ If ( Style == 1) { RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, TileWallpaper, 1 RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, WallpaperStyle, 0 }Else{ RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, TileWallpaper, 0 RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, WallpaperStyle, 2 } } ; SPI_SETDESKWALLPAPER = 0x0014 ; SPIF_SENDWININICHANGE = 0x0002 ; SPIF_UPDATEINIFILE = 0x0001 ; SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE = 0x0003 If ( DllCall("user32.dll\SystemParametersInfoA", "UInt", 0x00014, "UInt", 0x0000 , "Str", BmpFileName , "UInt", 0x0003) ) Return "壁紙変更に成功" Else Return "壁紙変更に失敗" } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; SndCmd(hWindow, wParam, lParam = 0) WM_COMMAND を 送る、 ウインドウプロシージャの戻り値を受け取る SndCmd(hWindow, wParam, lParam = 0) { Return DllCall("user32.dll\SendMessageA", "UInt", hWindow, "UInt", 0x0111, "Int", wParam, "Int", lParam) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; SndSysCmd(hWindow, wParam, lParam = 0) WM_SYSCOMMAND を 送る、 ウインドウプロシージャの戻り値を受け取る SndSysCmd(hWindow, wParam, lParam = 0) { Return DllCall("user32.dll\SendMessageA", "UInt", hWindow, "UInt", 0x012, "Int", wParam, "Int", lParam) } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; ToBMP(InputFileName, OutputFileName, Option = "", NewSize = 100) BMP JPG PNG GIFファイル を BMPファイルとして書き出す ; Option は 省略 は オリジナルサイズ ; "W" は 幅を指定してリサイズ ; "H" は 高さを指定してリサイズ ; NewSize は 指定したいサイズ ; リサイズは いずれも アスペクト比を保つ ; 戻り値 は 処理内容の リポート ;------------------------------------------------------------------------------------------------------ ; >>>>>>>> 「imgctl.dll」 は ルーチェさんが開発したものです HP は http://www.ruche-home.net/ <<<<<<<< ;------------------------------------------------------------------------------------------------------ ToBMP(InputFileName, OutputFileName, Option = "", NewSize = 100) { Report := "" If ( FN2IsE(InputFileName) ) Report .= InputFileName . "の 存在を確認`n" Else Report .= InputFileName . "が 存在しない`n" If ( (hLib := DllCall("kernel32.dll\LoadLibrary", "Str", "imgctl.dll")) ) Report .= "imgctl.dll をロード成功`n" Else Report .= "imgctl.dll の ロードに失敗`n" If ( (hDIB := DllCall("imgctl.dll\ToDIB", "Str", InputFileName)) ) Report .= "イメージファイルのロードに成功`n" Else Report .= "イメージファイルのロードに失敗`n" If ( Option ) { Report .= "リサイズオプション有り → " If ( (Option == "w") or (Option == "W") ) If ( DllCall("imgctl.dll\ResizeDIB", "UInt", hDIB, "Int", NewSize, "Int", -1) ) Report .= "幅指定 の リサイズに成功`n" Else Report .= "幅指定 の リサイズに失敗`n" If ( (Option == "h") or (Option == "H") ) If ( DllCall("imgctl.dll\ResizeDIB", "UInt", hDIB, "Int", -1, "Int", NewSize) ) Report .= "高さ指定 の リサイズに成功`n" Else Report .= "高さ指定 の リサイズに失敗`n" }Else{ Report .= "リサイズオプション無し → リサイズ処理をスルー`n" } If ( DllCall("imgctl.dll\DIBtoBMP", "Str", OutputFileName, "UInt", hDIB) ) Report .= "BMPファイルの書き出しに成功`n" Else Report .= "BMPファイルの書き出しに失敗`n" If ( DllCall("imgctl.dll\DeleteDIB", "UInt", hDIB) ) Report .= "イメージの解放に成功`n" Else Report .= "イメージの解放に失敗`n" If ( DllCall("kernel32.dll\FreeLibrary", "UInt", hLib) ) Report .= "imgctl.dll の解放に成功`n" Else Report .= "imgctl.dll の解放に失敗`n" Return Report } ;------------------------------------------------------------------------------------------------------------------------------------------------------- ; ToJPG(InputFileName, OutputFileName, Quality = 100, Option = "", NewSize = 100) BMP JPG PNG GIFファイル を JPGファイルとして書き出す ; Quality は JPG の 画質、 1〜100で指定する ; Option は 省略 は オリジナルサイズ ; "W" は 幅を指定してリサイズ ; "H" は 高さを指定してリサイズ ; NewSize は 指定したいサイズ ; リサイズは いずれも アスペクト比を保つ ; 戻り値 は 処理内容の リポート ;------------------------------------------------------------------------------------------------------ ; ToBMP と 同じく ルーチェさんの 「imgctl.dll」を 利用しています ;------------------------------------------------------------------------------------------------------ ToJPG(InputFileName, OutputFileName, Quality = 100, Option = "", NewSize = 100) { Report := "" If ( FN2IsE(InputFileName) ) Report .= InputFileName . "の 存在を確認`n" Else Report .= InputFileName . "が 存在しない`n" If ( (hLib := DllCall("kernel32.dll\LoadLibrary", "Str", "imgctl.dll")) ) Report .= "imgctl.dll をロード成功`n" Else Report .= "imgctl.dll の ロードに失敗`n" If ( (hDIB := DllCall("imgctl.dll\ToDIB", "Str", InputFileName)) ) Report .= "イメージファイルのロードに成功`n" Else Report .= "イメージファイルのロードに失敗`n" If ( Option ) { Report .= "リサイズオプション有り → " If ( (Option == "w") or (Option == "W") ) If ( DllCall("imgctl.dll\ResizeDIB", "UInt", hDIB, "Int", NewSize, "Int", -1) ) Report .= "幅指定 の リサイズに成功`n" Else Report .= "幅指定 の リサイズに失敗`n" If ( (Option == "h") or (Option == "H") ) If ( DllCall("imgctl.dll\ResizeDIB", "UInt", hDIB, "Int", -1, "Int", NewSize) ) Report .= "高さ指定 の リサイズに成功`n" Else Report .= "高さ指定 の リサイズに失敗`n" }Else{ Report .= "リサイズオプション無し → リサイズ処理をスルー`n" } If ( DllCall("imgctl.dll\DIBtoJPG", "Str", OutputFileName, "UInt", hDIB, "UInt", Quality, "UInt", 0) ) Report .= "JPGファイルの書き出しに成功`n" Else Report .= "JPGファイルの書き出しに失敗`n" If ( DllCall("imgctl.dll\DeleteDIB", "UInt", hDIB) ) Report .= "イメージの解放に成功`n" Else Report .= "イメージの解放に失敗`n" If ( DllCall("kernel32.dll\FreeLibrary", "UInt", hLib) ) Report .= "imgctl.dll の解放に成功`n" Else Report .= "imgctl.dll の解放に失敗`n" Return Report }