home *** CD-ROM | disk | FTP | other *** search
- #include <windows.h>
- #include <math.h>
- #include "ipdh.h"
-
- #include "resource.h"
-
- const char *G_CAPTION="Nullsoft Beep v0.3 (Status Window)";
-
- int (*beepdll_get)();
- void (*beepdll_init)(HWND,HINSTANCE);
- void (*beepdll_quit)();
-
- extern void audioClose();
- extern char *audioOpen(HWND);
-
- HINSTANCE g_hlib;
-
- int need_beep;
- int g_cpu_use=0;
- double cpu_scale;
-
- typedef PDH_STATUS (WINAPI *PDH_OPEN)(LPCTSTR, DWORD_PTR, HQUERY);
- typedef PDH_STATUS (WINAPI *PDH_ADD)(HQUERY, LPCTSTR, DWORD_PTR, HCOUNTER);
- typedef PDH_STATUS (WINAPI *PDH_CLOSE)(HQUERY);
- typedef PDH_STATUS (WINAPI *PDH_FORMAT)(HCOUNTER, DWORD, LPDWORD, PPDH_FMT_COUNTERVALUE);
- typedef PDH_STATUS (WINAPI *PDH_COLLECT)(HQUERY);
-
- int pdh_err;
- PDH_OPEN PdhOpenQuery;
- PDH_ADD PdhAddCounter;
- PDH_CLOSE PdhCloseQuery;
- PDH_FORMAT PdhGetFormattedCounterValue;
- PDH_COLLECT PdhCollectQueryData;
- HMODULE PdhLib;
- HQUERY PdhQuery;
- HCOUNTER PdhCounter;
-
- int get_cpu_usage()
- {
- int ret=50;
- DWORD Reserved,dataType,dataLen=4096;
-
- OSVERSIONINFO os = { sizeof(OSVERSIONINFO), };
- GetVersionEx(&os);
- if (pdh_err) return 69;
- if (os.dwPlatformId == VER_PLATFORM_WIN32_NT)
- {
- if (!PdhLib) PdhLib=LoadLibrary("pdh.dll");
- if (PdhLib)
- {
- if (!PdhOpenQuery)
- {
- PdhOpenQuery = (PDH_OPEN)GetProcAddress (PdhLib,"PdhOpenQueryA");
- PdhAddCounter = (PDH_ADD)GetProcAddress(PdhLib, "PdhAddCounterA");
- PdhCloseQuery = (PDH_CLOSE)GetProcAddress (PdhLib,"PdhCloseQuery");
- PdhGetFormattedCounterValue = (PDH_FORMAT)GetProcAddress(PdhLib, "PdhGetFormattedCounterValue");
- PdhCollectQueryData = (PDH_COLLECT)GetProcAddress(PdhLib, "PdhCollectQueryData");
- }
- if (PdhOpenQuery && PdhAddCounter && PdhCloseQuery && PdhGetFormattedCounterValue && PdhCollectQueryData)
- {
-
- if (PdhQuery || PdhOpenQuery( NULL, 0, &PdhQuery ) == ERROR_SUCCESS)
- {
- if (!PdhCounter) PdhAddCounter( PdhQuery, "\\Processor(_Total)\\% Processor Time", 0, &PdhCounter );
-
- PDH_FMT_COUNTERVALUE fmtValue;
- PdhCollectQueryData( PdhQuery );
- PdhGetFormattedCounterValue(PdhCounter, PDH_FMT_LONG, 0, &fmtValue);
- ret = fmtValue.longValue;
- }
- }
- else pdh_err=1;
- }
- else pdh_err=1;
- }
- else
- {
- HKEY regperfcpu;
- HKEY startregperfcpu;
- char data[4096];
-
- if (RegOpenKey(HKEY_DYN_DATA, "PerfStats\\StatData", ®perfcpu) == ERROR_SUCCESS)
- {
- if (RegOpenKey(HKEY_DYN_DATA, "PerfStats\\StartStat", &startregperfcpu) == ERROR_SUCCESS)
- {
- if (RegQueryValueEx(startregperfcpu, "KERNEL\\CPUUsage", &Reserved, &dataType, (UCHAR *) data, &dataLen) == ERROR_SUCCESS &&
- RegQueryValueEx(regperfcpu, "KERNEL\\CPUUsage", &Reserved, &dataType, (UCHAR *) data, &dataLen) == ERROR_SUCCESS)
- ret=*data;
- // got it.
- RegCloseKey(startregperfcpu);
- }
- RegCloseKey(regperfcpu);
- }
- }
-
- return ret;
- }
-
-
-
-
-
-
- void generate_samples(short *buf, int samplelength)
- {
- int x;
- static double last_cpu_scale;
- for (x = 0; x < samplelength; x ++)
- {
- double d=0.0;
-
- // pulsing low frequencies
- {
- static double a=0.0;
- d+=sin(a)*sin(a*0.004) * last_cpu_scale;
- a+=3.14159*100/44100.0;
- last_cpu_scale=last_cpu_scale*0.99999+cpu_scale*0.00001;
- }
-
- // beeps
- if (need_beep>0) {
- static double pv=0.1;
- static int t;
- if (t++ > 0)
- {
- if (t > 1000)
- {
- need_beep--;
- pv=0.05+(double)(rand()%1024)*0.2/1024.0;
- t=0;
- }
- else d+=sin(t*pv)*0.05;
- }
- }
-
- int iv;
- iv=(int)(d*32767.5 - 0.5);
- if (iv < -32768) iv=-32768;
- else if (iv > 32767) iv=32767;
- buf[x]=(short)iv;
- }
- }
- void systray_add(HWND hwnd)
- {
- NOTIFYICONDATA tnid;
- tnid.cbSize = sizeof(NOTIFYICONDATA);
- tnid.hWnd = hwnd;
- tnid.uID = 6969;
- tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
- tnid.uCallbackMessage = WM_USER+6969;
- tnid.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1));
- strcpy(tnid.szTip,"Nullsoft Beep");
- Shell_NotifyIcon(NIM_ADD, &tnid);
- }
-
- void systray_del(HWND hwnd)
- {
- NOTIFYICONDATA tnid;
- tnid.cbSize = sizeof(NOTIFYICONDATA);
- tnid.hWnd = hwnd;
- tnid.uID = 6969;
- Shell_NotifyIcon(NIM_DELETE, &tnid);
- }
-
-
- void SetAutoRunKey(int add)
- {
- HKEY key;
- if (RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&key) == ERROR_SUCCESS)
- {
- if (add)
- {
- char s[1024];
- s[0]='\"';
- GetModuleFileName(NULL,s+1,sizeof(s)-2);
- lstrcat(s,"\"");
- RegSetValueEx(key,"NullsoftBeep",0,REG_SZ,(unsigned char*)s,strlen(s));
- }
- else
- RegDeleteValue(key,"NullsoftBeep");
- RegCloseKey(key);
- }
- }
-
- int g_need_audioclose;
-
- int g_needhide=1;
-
- static BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_USER+6969:
- if (LOWORD(lParam) == WM_LBUTTONDOWN && !IsWindowVisible(hwndDlg))
- ShowWindow(hwndDlg,SW_SHOW);
- return 0;
- case WM_INITDIALOG:
- systray_add(hwndDlg);
- SetWindowText(hwndDlg,G_CAPTION);
- if (beepdll_init) beepdll_init(hwndDlg,g_hlib);
-
- {
- char *t=audioOpen(hwndDlg);
- if (t)
- {
- MessageBox(hwndDlg,t,"Nullsoft Beep - Error Initializing Audio",MB_OK|MB_ICONSTOP);
- }
- else g_need_audioclose=1;
- }
- SetAutoRunKey(1);
- SetTimer(hwndDlg,1,100,NULL);
- return 0;
- case WM_TIMER:
- if (g_needhide)
- {
- g_needhide=0;
- ShowWindow(hwndDlg,SW_HIDE);
- }
- {
- static int a;
- if (a++ > 10)
- {
- a=0;
- char data[512];
- g_cpu_use=get_cpu_usage();
- if (g_cpu_use < 0) g_cpu_use=0;
- wsprintf(data,"System CPU utilization: %d%%",g_cpu_use);
- SetDlgItemText(hwndDlg,IDC_CPU,data);
- double t=(g_cpu_use*1.25/(double)(100.0));
- if (t<0.05) t=0.05;
- if (t>1.0) t=1.0;
- cpu_scale=t;
- }
- }
-
- if (beepdll_get)
- {
- int a=beepdll_get();
- if (a > 16) a= 16;
- if (a) need_beep+=2+(rand()%6);
- }
- return 0;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDCANCEL:
- ShowWindow(hwndDlg,SW_HIDE);
- break;
- case ID_QUIT:
- systray_del(hwndDlg);
- SetAutoRunKey(0);
- EndDialog(hwndDlg,0);
- break;
- }
- return 0;
- case WM_CLOSE:
- ShowWindow(hwndDlg,SW_HIDE);
- return 0;
- case WM_ENDSESSION:
- if (wParam) EndDialog(hwndDlg,0);
- return 0;
- }
- return 0;
- }
-
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam, int nCmdShow)
- {
- if (FindWindow("#32770",G_CAPTION)) return 0;
- g_hlib=LoadLibrary("beep.dll");
- if (g_hlib)
- {
- beepdll_get=(int(__cdecl*)(void))GetProcAddress(g_hlib,"get");
- beepdll_init=(void(__cdecl*)(HWND,HINSTANCE))GetProcAddress(g_hlib,"init");
- beepdll_quit=(void(__cdecl*)(void))GetProcAddress(g_hlib,"quit");
- }
-
- if (beepdll_get)
- {
- DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,dlgProc);
- if (g_need_audioclose) audioClose();
-
- if (beepdll_quit) beepdll_quit();
- }
- else
- MessageBox(NULL,"Error loading beep.dll", "Nullsoft Beep Error",MB_OK|MB_ICONSTOP);
- if (PdhCloseQuery && PdhQuery) PdhCloseQuery(PdhQuery);
- if (PdhLib) FreeModule(PdhLib);
- if (g_hlib) FreeModule(g_hlib);
- return 0;
- }
-