Извините, нет возможности опубликовать на каком либо сервере, поэтому кидаю как есть.
Эта программа выгружается по CTRL+ALT+F12 и делает ку-ку по CTRL+ALT+F11 (это если сроччно посмотреть хочется).
файл kuku.wav можно подставить любой свой.
пользуйтесь на здоровье — программа OpenSource
#include <windows.h>
#pragma comment(lib,"winmm.lib")
#define IDHOTKEY_CLOSE_KUKU 1
#define IDHOTKEY_DO_KUKU 2
LPSTR lpszClassName = "KuKu window class", lpszAppName = "KuKu";
HWND hWnd;
int last_hour;
int GetHour()
{
SYSTEMTIME systime;
GetLocalTime(&systime);
return ((systime.wHour%=12) == 0) ? 12 : systime.wHour;
}
int DoKuku(int nTimes)
{
for (int i = 0; i < nTimes; i++)
{
mciSendString("set cdaudio door open wait", NULL, 0, NULL);
BOOL res = PlaySound("kuku.wav",NULL,SND_FILENAME|SND_SYNC);
mciSendString("set cdaudio door closed wait", NULL, 0, NULL);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int hour = 0;
switch(message) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_HOTKEY:
if ((int)wParam == IDHOTKEY_CLOSE_KUKU)
{
PostMessage(hWnd,WM_CLOSE,0,0);
}
if ((int)wParam == IDHOTKEY_DO_KUKU)
{
DoKuku(last_hour);
}
break;
case WM_CLOSE:
MessageBox(NULL,"KuKu quit OK",lpszAppName,MB_OK);
UnregisterHotKey(hWnd,IDHOTKEY_CLOSE_KUKU);
UnregisterHotKey(hWnd,IDHOTKEY_DO_KUKU);
KillTimer(hWnd,0);
return DefWindowProc(hWnd,message,wParam,lParam);
break;
case WM_TIMER:
hour = GetHour();
if (hour != last_hour)
{
last_hour = hour;
DoKuku(hour);
}
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASS wc;
memset(&wc,0,sizeof(wc));
wc.hInstance = hInstance;
wc.lpszClassName = lpszClassName;
wc.lpfnWndProc = (WNDPROC) WindowProc;
if (!RegisterClass(&wc))
{ MessageBox(NULL,"Window class can't be registred",lpszAppName,MB_OK|MB_ICONSTOP);
return 1; }
hWnd = CreateWindow(lpszClassName,lpszAppName,0,0,0,0,0,NULL,NULL,hInstance,0);
if (!hWnd)
{ MessageBox(NULL,"Can't create window",lpszAppName,MB_OK|MB_ICONSTOP);
UnregisterClass(lpszClassName,hInstance);
return 1; }
RegisterHotKey(hWnd,IDHOTKEY_CLOSE_KUKU,MOD_CONTROL|MOD_ALT,VK_F12); // close program
RegisterHotKey(hWnd,IDHOTKEY_DO_KUKU,MOD_CONTROL|MOD_ALT,VK_F11); // do kuku now
SetTimer(hWnd,0,500,NULL);
last_hour = GetHour();
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(lpszClassName,hInstance);
return 0;
}