UWSCのフォームをタスクバーに最小化する
stuncloudさんの投稿で、フォームをタスクバーに入れるニーズがあることに気付いた。
ということでやってみた。
スクリプト
フォームは表示済みとして、以下のスクリプトを追加する。
(平行処理とかの想定ね。スレッドでいけるかは未検証)
DIM hwnd = IDTOHND(GETID(GET_FORM_WIN)) DEF_DLL GetWindowLongW(HWND, int): DWORD: user32 DEF_DLL SetWindowLongW(HWND, int, DWORD): DWORD: user32 DEF_DLL ShowWindow(HWND, int): BOOL: user32 ShowWindow(hwnd, 0) SetWindowLongW(hwnd, -20, GetWindowLongW(hwnd, -20) OR $40000) ShowWindow(hwnd, 5)
XPだとShowWindowは不要だけど、Win7では必要らしい。
問題点
タスクバーに出ちゃう。
いや、希望動作ですけど、既にあるUWSCのタスクと別にタスクバーに出るのです。
(これを統合する方法は未検討)
EXE化の場合、EXEのタスクとフォームのタスクになる。
EXE化では、タスクバーに表示しないをチェックすれば良いですが、、、
今度は起動時にタスクバーに出ない、という問題が発生する。
上記の追加スクリプトがすぐ流れれば、フォームの分が表示されますが。
参考
参考にしたのは、
http://stackoverflow.com/questions/7219063/win32-how-to-hide-3rd-party-windows-in-taskbar-by-hwnd
もっともこれは、非表示にする方法だけどね。