Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <tchar.h>
- #include <wininet.h>
- #pragma comment(lib,"wininet")
- #include "resource.h"
- #define WM_FLIPPED_TO_TRAY (WM_APP + 1234)
- #define ID_FLIPPED_TO_TRAY 1234
- #define MAIN_TEXT _TEXT("diafan.CMS")
- #pragma pack(1)
- typedef struct _SETTINGS
- {
- LONG uid;
- LONG time;
- } SETTINGS, *PSETTINGS;
- #pragma pack()
- LRESULT CALLBACK GarikWinProc (HWND,UINT,UINT,LONG);
- NOTIFYICONDATA nid;
- HICON hIcon,hIcon2=NULL;
- HINSTANCE hInst;
- SETTINGS opt;
- DWORD WINAPI th_main(PVOID data) {
- while(1) {
- nid.hIcon=hIcon;
- _stprintf(nid.szTip,MAIN_TEXT);
- // инициализируем WinInet
- HINTERNET hInternet = InternetOpen(MAIN_TEXT, INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL, 0);
- if (hInternet != NULL) {
- // открываем HTTP сессию
- HINTERNET hConnect = InternetConnect(hInternet,_TEXT("host.ru"),INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1u);
- if (hConnect != NULL) {
- TCHAR get[128];
- _stprintf(get,_TEXT("/%d"),opt.uid);
- // открываем запрос
- HINTERNET hRequest = HttpOpenRequest(hConnect,_TEXT("GET"),get,NULL,NULL,0,INTERNET_FLAG_KEEP_CONNECTION,1);
- if (hRequest != NULL) {
- // посылаем запрос
- if (HttpSendRequest(hRequest, NULL,0, NULL,0)) {
- DWORD dwBytesRead;
- char szData[128];
- if(InternetReadFile(hRequest,szData,sizeof(szData)-1,&dwBytesRead))
- {
- szData[dwBytesRead]=0;
- if(szData[0]!='0')
- {
- nid.hIcon=hIcon2;
- _stprintf(nid.szTip,_TEXT("%s\n%S новое событие"),MAIN_TEXT,szData);
- }
- }
- }
- // закрываем запрос
- InternetCloseHandle(hRequest);
- }
- // закрываем сессию
- InternetCloseHandle(hConnect);
- }
- InternetCloseHandle(hInternet);
- }
- Shell_NotifyIcon(NIM_MODIFY, &nid);
- Sleep(opt.time);
- }
- return 0;
- }
- BOOL CALLBACK DialogProc(HWND hwndDlg,UINT Message, UINT wParam, LONG lParam)
- {
- switch (Message)
- {
- case WM_INITDIALOG:
- SetDlgItemInt(hwndDlg,IDC_EDIT1,opt.uid,FALSE);
- SetDlgItemInt(hwndDlg,IDC_EDIT2,opt.time,FALSE);
- return TRUE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDOK:
- InterlockedExchange(&opt.uid,GetDlgItemInt(hwndDlg,IDC_EDIT1,NULL,FALSE));
- InterlockedExchange(&opt.time,GetDlgItemInt(hwndDlg,IDC_EDIT2,NULL,FALSE));
- case IDCANCEL:
- EndDialog(hwndDlg, wParam);
- return TRUE;
- }
- }
- return FALSE;
- }
- BOOL init_options(BYTE set)
- {
- DWORD MaxValueLen;
- LONG lResult;
- HKEY hKey;
- if(RegCreateKeyEx(HKEY_CURRENT_USER, _TEXT("Software\\diafan.CMS"), 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &MaxValueLen)!=ERROR_SUCCESS) {
- return FALSE;
- }
- if(MaxValueLen == REG_CREATED_NEW_KEY) {
- set=1;
- DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
- }
- if(set==0){
- MaxValueLen=sizeof(opt.uid);
- RegQueryValueEx(hKey, _TEXT("uid"), NULL, NULL, (LPBYTE)&opt.uid, &MaxValueLen);
- MaxValueLen=sizeof(opt.time);
- RegQueryValueEx(hKey, _TEXT("time"), NULL, NULL, (LPBYTE)&opt.time, &MaxValueLen);
- }
- else
- {
- MaxValueLen=sizeof(opt.uid);
- RegSetValueEx(hKey,_TEXT("uid"),0,REG_DWORD,(BYTE *)&opt.uid,MaxValueLen);
- MaxValueLen=sizeof(opt.time);
- RegSetValueEx(hKey,_TEXT("time"),0,REG_DWORD,(BYTE *)&opt.time,MaxValueLen);
- }
- RegCloseKey(hKey);
- return TRUE;
- }
- int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,int nShowCmd)
- {
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
- MSG Msg;
- WNDCLASS WndClass={};
- hIcon2=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));
- nid.uID = ID_FLIPPED_TO_TRAY;
- nid.uCallbackMessage = WM_FLIPPED_TO_TRAY;
- nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
- _stprintf(nid.szTip,MAIN_TEXT);
- WndClass.lpfnWndProc=GarikWinProc;
- WndClass.hInstance = hInst = hInstance;
- WndClass.hIcon= nid.hIcon = hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));
- WndClass.lpszClassName=nid.szTip;
- opt.time=30*1000;
- opt.uid=0;
- init_options(0);
- RegisterClass(&WndClass);
- nid.hWnd=CreateWindow(WndClass.lpszClassName,NULL,WS_POPUP,
- 0,0,
- 0,0,
- NULL,NULL,
- hInstance,NULL);
- Shell_NotifyIcon(NIM_ADD, &nid);
- while(GetMessage(&Msg,NULL,0,0))
- {
- TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- Shell_NotifyIcon(NIM_DELETE, &nid);
- return (int)Msg.wParam;
- }
- LRESULT CALLBACK GarikWinProc(HWND hWnd,UINT Message, UINT wParam, LONG lParam)
- {
- switch(Message)
- {
- case WM_CREATE:
- CreateThread(NULL,0,th_main,NULL,0,NULL);
- break;
- case WM_FLIPPED_TO_TRAY:
- if(lParam == WM_LBUTTONUP) {
- ShellExecute(0,_TEXT("open"),_TEXT("http://diafan.ru"),NULL,NULL,SW_SHOW);
- return 0;
- }
- if(lParam == WM_RBUTTONUP) {
- DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
- init_options(1);
- return 0;
- }
- if(lParam == WM_LBUTTONDBLCLK)
- {
- SendMessage(hWnd,WM_DESTROY,0,0);
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- return 0;
- }
- return DefWindowProc(hWnd,Message,wParam,lParam);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement