Windowsデスクトップのアイコンをプログラムで動かす

愚痴

いろーーーんなこと調べたけど
delphi - How do I find the screen location of all desktop shortcuts? - Stack Overflow

の質問の回答の最後の方に
GetDesktopWindow()とか LVM_GETITEMPOSITIONとかSendMessageとか使う方法はWin10ではできないって書いてあった
これでできると思い込んで使った労力返して・・・

ついでなのでメッセージ系の値はここを参照した
List Of Windows Messages - WineHQ Wiki

ちなみにアイコンの位置はレジストリに保存されてるらしい
Where does Windows store icon positions? - Super User

調査結果

で、stackoverflowの方に書いてあるリンク先を調査
devblogs.microsoft.com

IShellWindowsとかをpythonでやろうとしたけど該当dll(Shdocvw.dll ?)をctypes.WinDLLしても
なんかうまくできなかったので諦めてc++に変更



visual studio2019でコンソールアプリとしてプロジェクト作って、
該当コードと
Do you know when your destructors run? Part 1. - The Old New Thing
プログラム内でも言及されてるけどこれのコードを張り付けて実行
アイコンの位置を取得するコードが動いた
で、その次のアイコンの位置を動かすコードも動いた
何をやっているのか全く不明なんだけど、動いたからヨシ!



ついでに、位置をファイルの保存にしようとしたら日本語が化けたりしたけど
標準ライブラリの入出力ストリーム | C++ プログラミング解説
のwofstreamのimbueのところのようにしたらうまくいった

まぁとりあえずできたしこれで記事終わり