CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define NIF_SHOWTIP 128
#define NIF_TIP 4
#define NIF_ICON 2
#define NIF_INFO 16
#define NIM_ADD 0
#define NIM_DELETE 2
#define NIF_MESSAGE 1
#define SC_MINIMIZE 61472
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define IDI_INFORMATION 32516
#define TPM_RETURNCMD 256
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "Shell_NotifyIcon", "Shell_NotifyIconA", "Shell32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll");
external(INT, "TrackPopupMenu", "TrackPopupMenu", "User32.dll");
external(INT, "AppendMenu", "AppendMenuA", "User32.dll");
int static;
char NOTIFYICONDATA[488];
int mouseX, mouseY;
int HMENU, result;
createdialog(0);
showdialog(0, "Dialog",300, 300, 300, 150, 1, 1);
loop()sleep(10);
function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_MINIMIZE) // если окно было свёрнуто
{
ShowWindow(gethwnd(0), SW_HIDE); // скрыть диалог
Shell_NotifyIcon(NIM_ADD, address(#NOTIFYICONDATA[0])); // добавить значок в трей
return;
}
}
function getmessage(0, WM_CREATE)
{
HMENU=CreatePopupMenu(); // создать меню
AppendMenu(HMENU, 0, 1025, "Пункт1"); // добавить пункт
AppendMenu(HMENU, 0, 1026, "Пункт2"); // добавить пункт
AppendMenu(HMENU, 0, 0, 0); // добавить линию
AppendMenu(HMENU, 0, 1027, "Пункт3"); // добавить пункт
static=CreateWindow(0, "STATIC", "Это окно будет сворачиваться в трей"+formatic(13)+formatic(10)+
"При нажатии на значок правой кнопкой мыши откроется меню", WS_CHILD | WS_VISIBLE, 20, 10, 250, 60, gethwnd(0), 0, 0, 0);
initialarray(#NOTIFYICONDATA[0], 0);
writeaddress(sizearray(NOTIFYICONDATA), address(#NOTIFYICONDATA[0]));
writeaddress(gethwnd(0), address(#NOTIFYICONDATA[4]));
writeaddress(1025, address(#NOTIFYICONDATA[8])); // идентификатор иконки
writeaddress(WM_MOUSEMOVE, address(#NOTIFYICONDATA[16]));
writeaddress(NIF_ICON | NIF_SHOWTIP | NIF_TIP | NIF_INFO | NIF_MESSAGE, address(#NOTIFYICONDATA[12]));
writeaddress(LoadIcon(0, IDI_INFORMATION), address(#NOTIFYICONDATA[20])); // одна из стандартных иконок
//writeaddress(LoadImage(0, "C:\Users\Home\Desktop\МОЁ\Kibor\Bot_Icon.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE), address(#NOTIFYICONDATA[20])); // своя иконка
strcpy(#NOTIFYICONDATA[24], "Bot"); // подсказка при наведении на значок
strcpy(#NOTIFYICONDATA[160], "Щёлкните значок в трее, что бы показать окно программы."); // в win10 не работает
strcpy(#NOTIFYICONDATA[420], "Bot"); // в win10 не работает
writeaddress(1, address(#NOTIFYICONDATA[484]));
}
function getmessage(0, WM_MOUSEMOVE)
{
if(message.wparam == 1025) // если курсор наведён на значок с указанным идентификатором
{
if(message.lparam == WM_LBUTTONDOWN) // если был клик левой кнопкой мыши
{
ShowWindow(gethwnd(0), SW_SHOWNORMAL); // показать диалог
Shell_NotifyIcon(NIM_DELETE, address(#NOTIFYICONDATA[0])); // удалить значок из трея
return;
}
//===============
if(message.lparam == WM_RBUTTONDOWN) // если нажата правая кнопка мыши
{
// тут вызов созданного меню, CreatePopupMenu
//messagebox("Нажата правая кнопка мыши");
getmouse(mouseX, mouseY);
result=TrackPopupMenu(HMENU, TPM_RETURNCMD, mouseX, mouseY, 0, gethwnd(0), 0); // вывести меню
if(result==1025)messagebox("Выбран пункт1");
if(result==1026)messagebox("Выбран пункт2");
if(result==1027)messagebox("Выбран пункт3");
return;
}
}
}