
https://www.suntory.co.jp/beer/thepremiummalts/umibenoale
おいしーーーー!
少し修正したので貼っておこー
#SingleInstance force
#WinActivateForce
; define
DATA_FILE := "デスクトップの表示.dat"
DESKTOP_CLASS := "ahk_class Progman"
POPUP1_CLASS := "XamlExplorerHostIslandWindow_WASDK"
POPUP2_CLASS := "WorkerW"
; ----------------------------------------
; helper function
; ----------------------------------------
getString(hwndList) {
ret := ""
for index, value in hwndList
ret .= "|" . value
return LTrim(ret, "|")
}
restoreWindow(hwndList, statusList) {
for index, value in hwndList {
reverseIndex := hwndList.Length - index + 1
hwnd := Integer(hwndList[reverseIndex])
if WinExist(hwnd)
if (statusList[reverseIndex] != -1) ; skip minimize window
WinActivate(hwnd)
}
}
; ----------------------------------------
; duplicate run
; ----------------------------------------
if FileExist(DATA_FILE) {
; read data file
FileObj := FileOpen(DATA_FILE, "r")
hwndString := FileObj.ReadLine()
hwnd := StrSplit(hwndString, "|")
statusString := FileObj.ReadLine()
status := StrSplit(statusString, "|")
; restore window
restoreWindow(hwnd, status)
; delete data file
FileDelete(DATA_FILE)
; exit
ExitApp
}
; ----------------------------------------
; main process
; ----------------------------------------
; get window handles for restore
hwnd := WinGetList()
; get window status
status := []
for index, value in hwnd
status.Push(WinGetMinMax(value))
; creat data file
FileAppend(getString(hwnd), DATA_FILE)
FileAppend("`n", DATA_FILE)
FileAppend(getString(status), DATA_FILE)
FileAppend("`n", DATA_FILE)
; show desktop and focus
Send "#d"
Sleep 1000
hwndDesktop := WinGetID(DESKTOP_CLASS)
ControlFocus(hwndDesktop)
; get window handles for monitoring
hwnd1 := WinGetList()
; wait new window
WinWaitNotActive WinExist("A")
Loop {
Sleep 500
hwnd2 := WinGetList()
try {
className := WinGetClass("A")
if ((className != POPUP1_CLASS) && (className != POPUP2_CLASS))
if getString(hwnd1) != getString(hwnd2)
break
} catch {
} finally {
activeId := WinExist("A")
hwnd2 := WinGetList()
}
}
; restore window
restoreWindow(hwnd, status)
; active new window
try {
WinActivate(activeId)
} catch {
WinActivate(hwnd2[1])
}
; delete data file
if FileExist(DATA_FILE)
FileDelete(DATA_FILE)
以下の2ファイルを差し替えてください。
C:\tool\desktop
├─デスクトップの表示.ahk
└─デスクトップの表示.exe
ショートカットファイルの再作成は不要です。
タスクバーの最左端にショートカットファイルを配置し、「Win」+「1」キーで実行する使用方法を想定しています。「Win」+「Tab」、「Alt」+「Tab」などと共に使用してください。
たまに動作おかしいのでまたバグ修正するかもしれません。
いじわるテストするとすぐに不具合が発生する。
プロセスの一覧に変更があったことを検知して画面の復元を開始しているが、デスクトップを表示して1秒未満でアプリを実行されると画面の復元が開始できない。Autohotkeyで正しくプロセスの一覧が取得できるようになるまでタイムラグがあり1秒待ちを外すとプロセスを正しく監視できない。
また、起動されるアプリについても多様なアプリが存在していてプロセスの一覧が変わったからといって画面を復元するためのウインドハンドルが取得できるわけではないため、ここでも待ち時間が必要となり動きとしては復元開始までにタイムラグが発生してしまっている。動きがもっさりして気持ち悪いが、仕方ないかと。
デスクトップを表示した後、以下のようなアプリや操作ではプロセスの状態が正しく取得できず画面が復元されない場合がある。
二重起動したら画面を復元するようにしたので画面の配置を壊して終わることはなくなったが、正しく動かないケースが多々あると思われる。
自分でソースを修正するような人は、そもそもこんなツールは使わないのかもしれないけれど、個々の環境で待ち時間のチューニングなどが必要かもしれないのでコンパイル方法を記載しておきます。
2. 「Compile」を選択する。
初回の選択時にコンパラがインストールされます。
3. 「Compile」を起動し、「Base File」を選択を「Sava」ボタンをクリックします。
4. 「デスクトップの表示.ahk」ファイルを右クリックし、「Compile script(GUI)」を選択します。
C:\tool\desktop
├─デスクトップの表示.ahk
└─デスクトップの表示.exe
5. 「Convert」ボタンをクリックします。
→「デスクトップの表示.exe」が生成されます。
コンパイル方法を書いておけば怪しげなEXEファイルを添付する必要がないかもしれない。これを貼っておこー
「デスクトップの表示.ahk」を直接実行できるが、「デスクトップの表示.ahk」をタスクバーにピン止めするとアイコンが変更できない。アイコンを変更するためにはEXEファイルのショートカットである方が都合が良いとの理由でEXEを添付したのだけど、怪しげな野良EXEセキュリティ的には実行したくはないよな。
環境によっては、「C:\tool\desktop」フォルダに対して除外の設定が必要かもしれない。
読んだ。👍
脳の解説本。この3冊、高校生に講義するシリーズいいね。
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト
🤖
https://www.itmedia.co.jp/aiplus/articles/2405/29/news052.html
😮
「デスクトップの表示.exe – ショートカット」を作ったので貼っておこー
「通り抜けループ」や「WipeOut」でデスクトップ上のアイコンにアクセスしようとしたけれど古いアプリなので正常に動作しないことが分かった。
macOSのミッションコントロールのホットコーナーで「デスクトップ」を指定したときのようにデスクトップにアクセスしたい。
「Win」キー + D でデスクトップが表示できる。
→デスクトップを表示した後、アプリを起動した場合、再度ショートカットを押下しても画面の配置が復元されない。
「通り抜けループ」や「WipeOut」の動作確認、および類似ソフトを調査した。
WinXCornersRegistryFix
https://github.com/vhanla/winxcorners/releases
Windowsでもホットコーナーの「デスクトップ」が設定可能かと思ったら元の画面の配置は復元されなかった。
#SingleInstance force
; show desktop
Send "#d"
Sleep 1000
; get window handles
hwnd1 := WinGetList()
; time out 60s.
Loop 60
{
Sleep 1000
; window handles monitoring
hwnd2 := WinGetList()
if getString(hwnd1) != getString(hwnd2)
break
if GetKeyState("Esc")
break
}
; window restore
for index, value in hwnd2
{
hwnd := hwnd2[hwnd2.Length - index + 1]
if WinExist(hwnd)
WinActivate(hwnd)
}
; helper function
getString(array)
{
ret := ""
for index, value in array
ret .= "|" . value
ret := LTrim(ret, "|")
return ret
}
「デスクトップの表示」を実行するとデスクトップが表示されます。デスクトップで何かしらのアプリを起動/操作などすると元の画面の配置を復元します。
また、Escキーの長押し、60秒経過でも終了します。
以下の手順では、ショートカットファイルを作成してアイコンを変更しています。アイコンを変更する必要がない場合は作業不要です。直接、ahkファイルを実行してください。
1.「show_desktop_ext_20240526.zip」ファイルを展開し、C:ドライブの直下に格納します。
C:\tool\desktop
├─デスクトップの表示.ahk
└─デスクトップの表示.exe
※格納場所任意。
2. 「デスクトップの表示.exe」を右クリックして「ショートカットの作成」を選択します。
3. 作成された「デスクトップの表示.exe – ショートカット」を右クリックして「プロパティ」を選択します。
4. 「ショートカット」タブで「アイコンの変更」ボタンを選択します。
5. 「参照」ボタンでエクスプローラーを指定し、アイコンを選択します。
6. 「デスクトップの表示.exe – ショートカット」をタスクバーにピン止めして実行します。
2. ダウンロードしたフォルダごと削除します。
たまに動作おかしいのでバグ修正するかもしれません。
WinGetList
https://ahkscript.github.io/ja/docs/v2/lib/WinGetList.htm
戻り値
ウィンドウは、(デスクトップ上の積み重ね方に従って)最上位から最下位へと順番に検索される。
おかしいなぁ…