https://news.yahoo.co.jp/pickup/6505250
🙏
タスクビュー、バグってるやん。新規に起動したときにデフォルトアイコンが表示される。スクリプトをリロードして動作確認した場合は問題なかったのに、新規で起動された場合はデフォルトのアイコンが…w これは酷い。だめだこりゃー
バグ修正したので貼っておく。
キーのリマッピングの方は、「Alt」+「1」キーと「Alt}+「3」キーの2回目の押下で動作が違う。画面が大きくなる動作で統一した方がいいのか悪いのか、この辺りは好みの問題かもしれないけど、自分で作成すると細かいところまで自由に直せるのはいいよねえ。作りながら直しながら使えるものができるといいなぁとは思う。明日直せるかな。
画面の移動まわりの処理を修正したので貼っておく。
; Home/End
!Left:: Send "{Home}"
!Right:: Send "{End}"
!+Left:: Send "+{Home}"
!+Right:: Send "+{End}"
; 画面移動(上/下)
!e:: setWindowPosition("e")
!d:: setWindowPosition("d")
初期値ではホットキーを3回押下すると元のサイズに戻ります。
; 画面移動ホットキーの再押下(1サイクル)
; 1以上の整数を指定する
ROTATION_LENGTH := 3
; 以下の配列の先頭から「ROTATION_LENGTH」個まで使用している
; 再押下ごとの画面サイズを百分率で指定する
; Alt + [1]
LEFT_WIDTH := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
; Alt + [2]
CENTER_WIDTH := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
; Alt + [3]
RIGHT_WIDTH := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
; Alt + [qwe]
UPPER_HEIGHT := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
; Alt + [asd]
LOWER_HEIGHT := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
スクリプトを編集した場合は、スクリプトの再起動が必要です。
例1:
ホットキーの再押下で画面サイズを変更したくない場合
ROTATION_LENGTH := 1
1を指定すると配列の1つ目の値だけが使用されます。0.5 = 50% の大きさで画面の幅や高さが設定されます。
例2:
少しずつ画面サイズを大きくする場合
ROTATION_LENGTH := 6
ホットキーを6回押下すると元のサイズに戻ります。
例3:
少しずつ画面サイズを大きくする場合2
; ----------------------------------------
; User define
; ----------------------------------------
;
; ・・・ もともとのやつ ・・・
;
ROTATION_LENGTH := 12
LEFT_WIDTH := [0.4, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
CENTER_WIDTH := [0.4, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
RIGHT_WIDTH := [0.4, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
UPPER_HEIGHT := [0.4, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
LOWER_HEIGHT := [0.4, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]
; ----------------------------------------
; define
; ----------------------------------------
配列の要素数や要素の値は可変です。ROTATION_LENGTHで指定した要素数だけ値を定義してください。
変数は再代入して上書きできますので上記のようにもとものコードの下に変更した内容を追記できます。もともとのコードはコピペ時のテンプレとして使用してください。
今日はこれ。おいしーーーー!
メモ書き。
タスクビュー、バグってるやん。新規に起動したときにデフォルトアイコンが表示される。スクリプトをリロードして動作確認した場合は問題なかったのに、新規で起動された場合はデフォルトのアイコンが…w これは酷い。だめだこりゃー
キーのリマッピングの方は、「Alt」+「1」キーと「Alt}+「3」キーの2回目の押下で動作が違う。画面が大きくなる動作で統一した方がいいのか悪いのか、この辺りは好みの問題かもしれないけど、自分で作成すると細かいところまで自由に直せるのはいいよねえ。作りながら直しながら使えるものができるといいなぁとは思う。明日直せるかな。
あとは不定期のblogの投稿よりは、1か所にまとめて記事があった方がいいよな。AutohotKey V2をインストールしてくださいみたいなところからちゃんと整理して使えるようにしたいけどしばらくはこのままかもしれない。
パブリックドメイン
本サイトで公開する情報は、すべてパブリックドメインに供与いたします。自由に改変していただいて構いません。著作権も含めてすべての権利を放棄いたします。
的なことよりURLのドメインどうするかの方が悩ましい。
https://kozawa.tokyo
https://猫猫猫.tokyo
実名ドメインに戻す?サブドメインとして混ぜる?
https://猫猫猫.kozawa.tokyo
猫猫猫さん、著名人でいたんだよなぁ。ドメイン取得前に気づくべきだった… どうしようかな。
少し修正したので貼っておこー
#Requires AutoHotkey v2.0+
#SingleInstance Force
; ----------------------------------------
; define
; ----------------------------------------
PREV := "Prev"
NEXT := "Next"
OK := True
NG := False
BASE_DIR := "C:\tool\taskview\"
VDA_PATH := BASE_DIR . "VirtualDesktopAccessor.dll"
TRAYICON_PATH := BASE_DIR . "images\"
hVirtualDesktopAccessor := DllCall("LoadLibrary", "Str", VDA_PATH, "Ptr")
GetDesktopCountProc := DllCall("GetProcAddress", "Ptr", hVirtualDesktopAccessor, "AStr", "GetDesktopCount", "Ptr")
GoToDesktopNumberProc := DllCall("GetProcAddress", "Ptr", hVirtualDesktopAccessor, "AStr", "GoToDesktopNumber", "Ptr")
GetCurrentDesktopNumberProc := DllCall("GetProcAddress", "Ptr", hVirtualDesktopAccessor, "AStr", "GetCurrentDesktopNumber", "Ptr")
MoveWindowToDesktopNumberProc := DllCall("GetProcAddress", "Ptr", hVirtualDesktopAccessor, "AStr", "MoveWindowToDesktopNumber", "Ptr")
; ----------------------------------------
; helper function
; ----------------------------------------
GetDesktopCount() {
count := DllCall(GetDesktopCountProc, "Int")
return count
}
GoToDesktopNumber(number) {
if (number > GetDesktopCount())
return
; Win + 左右キーのアニメーションに操作感を合わせるため、
; 移動前後に0.5秒の待ち時間を設定している(機能的には不要)
Sleep 500
DllCall(GoToDesktopNumberProc, "Int", number - 1)
Sleep 500
}
GetCurrentDesktopNumber() {
number := DllCall(GetCurrentDesktopNumberProc, "Int")
number++ ; デスクトップ番号を1オリジンで指定するため + 1
return number
}
MoveWindowToDesktopNumber(number) {
WinWaitActive WinExist("A")
retry := 0
Loop
try {
activeHwnd := WinGetID("A")
number-- ; dllには0オリジンで渡すため - 1
DllCall(MoveWindowToDesktopNumberProc, "Ptr", activeHwnd, "Int", number, "Int")
result := OK
break
} catch {
Sleep 250
result := NG
retry++
}
until retry == 10
return result
}
moveWindow(desktop) {
current := GetCurrentDesktopNumber()
max := GetDesktopCount()
if (desktop == PREV) {
if (current == 1) {
result := MoveWindowToDesktopNumber(max)
} else {
result := MoveWindowToDesktopNumber(current - 1)
}
} else if (desktop == NEXT) {
if (current == max) {
result := MoveWindowToDesktopNumber(1)
} else {
result := MoveWindowToDesktopNumber(current + 1)
}
} else {
result := MoveWindowToDesktopNumber(desktop)
}
return result
}
moveDesktop(desktop) {
current := GetCurrentDesktopNumber()
max := GetDesktopCount()
if (desktop == PREV) {
if (current == 1) {
GoToDesktopNumber(max)
} else {
Send "^#{Left}"
}
KeyWait "Left"
} else if (desktop == NEXT) {
if (current == max) {
GoToDesktopNumber(1)
} else {
Send "^#{Right}"
}
KeyWait "Right"
} else {
GoToDesktopNumber(desktop)
}
}
moveWindowMoveDesktop(desktop) {
result := moveWindow(desktop)
if (result == OK)
moveDesktop(desktop)
}
; ----------------------------------------
; tasktray
; ----------------------------------------
; メニュー追加
A_TrayMenu.Add()
num := 1
Loop GetDesktopCount() {
A_TrayMenu.Add("desktop " . num, MenuHandler)
num++
}
MenuHandler(itemName, itemPos, myMenu) {
itemCount := DllCall("GetMenuItemCount", "ptr", A_TrayMenu.Handle)
startNum := itemCount - GetDesktopCount()
newNum := itemPos - startNum
moveDesktop(newNum)
}
; タスクトレイ更新
iconNum := 1
Loop {
currNum := GetCurrentDesktopNumber()
if (iconNum != currNum) {
try {
; アイコン
TraySetIcon(TRAYICON_PATH . currNum . ".png")
; メニュー
num := 1
Loop GetDesktopCount() {
A_TrayMenu.Uncheck("desktop " . num)
num++
}
A_TrayMenu.Check("desktop " . currNum)
}
iconNum := currNum
}
Sleep 1000
}
; ----------------------------------------
; main
; ----------------------------------------
; アクティブ画面移動
^+Left:: moveWindow(PREV)
^+Right:: moveWindow(NEXT)
^+F1:: moveWindow(1)
^+F2:: moveWindow(2)
^+F3:: moveWindow(3)
^+F4:: moveWindow(4)
^+F5:: moveWindow(5)
^+F6:: moveWindow(6)
; デスクトップ移動
^#Left:: moveDesktop(PREV)
^#Right:: moveDesktop(NEXT)
^#F1:: moveDesktop(1)
^#F2:: moveDesktop(2)
^#F3:: moveDesktop(3)
^#F4:: moveDesktop(4)
^#F5:: moveDesktop(5)
^#F6:: moveDesktop(6)
; アクティブ画面/デスクトップ移動
^#+Left:: moveWindowMoveDesktop(PREV)
^#+Right:: moveWindowMoveDesktop(NEXT)
^#+F1:: moveWindowMoveDesktop(1)
^#+F2:: moveWindowMoveDesktop(2)
^#+F3:: moveWindowMoveDesktop(3)
^#+F4:: moveWindowMoveDesktop(4)
^#+F5:: moveWindowMoveDesktop(5)
^#+F6:: moveWindowMoveDesktop(6)