Dripです。
HSPMakerさん、こんにちは。
タスクトレイにウィンドウを格納するには、櫻屋 林檎さんのおっしゃるように、
APIを呼び出すしかありません。
タスクトレイに格納して戻すだけの簡単なプログラムを以下に示します。
モジュール化されたものよりもかなり簡潔なプログラムですので、参考にしてみて下さい。
#uselib "kernel32.dll"
#func GetModuleFileName "GetModuleFileNameA" int,int,int //自分自身のファイル名を取得する
#uselib "shell32.DLL"
#func ExtractIconEx "ExtractIconExA" int,int,int,int,int //ファイルアイコン取得
#func Shell_NotifyIcon "Shell_NotifyIcon" int,int //タスクトレイのアイコン処理
#define WM_USER $00000400 //メッセージ定義
#define NOTIFY_TRAYICON WM_USER+$00001000
#define NIF_MESSAGE $00000001
#define NIF_ICON $00000002
#define NIM_ADD $00000000
#define NIM_DELETE $00000002
#define WM_LBUTTONDOWN $00000201
oncmd gosub *open, NOTIFY_TRAYICON //タスクトレイアイコンをクリックされたらこのラベルへ
pos 260,210:objsize 120,60:button gosub "タスクトレイへ格納",*close
stop
*open //タスクトレイから復帰
if lparam=WM_LBUTTONDOWN:{
gosub *bktary
gsel 0,1
}
return
*close //タスクトレイへ格納
gsel 0,-1
sdim myNameIs,3200
GetModuleFileName hm,varptr(myNameIs),3200
myiconB=0:myiconS=0
ExtractIconEx varptr(myNameIs),0,varptr(myiconB),varptr(myiconS),1
hIcon=myiconS
dim IconData,22 //NOTIFYICONDATA 構造体
IconData = 88,hwnd,1,NIF_MESSAGE|NIF_ICON,NOTIFY_TRAYICON,hIcon
Shell_NotifyIcon NIM_ADD,varptr(IconData)
return
*bktary
dim IconData,22 //NOTIFYICONDATA 構造体
IconData = 88,hwnd,1,NIF_ICON
Shell_NotifyIcon NIM_DELETE,varptr(IconData)
return