This function should do it:
Code:
void SetTaskbarScreenArea(BOOL bFull){
RECT rcScreen;
GetWindowRect(GetDesktopWindow(),&rcScreen);
if(bFull){
SystemParametersInfo(SPI_SETWORKAREA,0,&rcScreen,SPIF_SENDCHANGE);
} else {
RECT rcVis,rcScreen,rcTask;
HWND taskbar=FindWindow("Shell_TrayWnd",0); // get taskbar window
BOOL istaskbar=taskbar&&IsWindow(taskbar)&&IsWindowVisible(taskbar);
if(istaskbar)
GetWindowRect(taskbar,&rcTask);
else SetRectEmpty(&rcTask);
SubtractRect(&rcVis,&rcScreen,&rcTask);
SystemParametersInfo(SPI_SETWORKAREA,0,&rcVis,SPIF_SENDCHANGE);
}
}
void ShowTaskbar(BOOL bShow){
HWND taskbar=FindWindow("Shell_TrayWnd",0); // get taskbar window
BOOL istaskbar=taskbar&&IsWindow(taskbar);
if(istaskbar){
if(bShow){
ShowWindow(taskbar,SW_RESTORE);
SetTaskbarScreenArea(FALSE);
} else {
ShowWindow(taskbar,SW_HIDE);
SetTaskbarScreenArea(TRUE);
}
}
}