/*
 * 				Shell Library Functions
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "windows.h"


/*************************************************************************
 *				RegOpenKey			[SHELL.1]
 */
int RegOpenKey(void) 
{
	printf("RegOpenKey : Empty Stub !!!\n");
}

/*************************************************************************
 *				RegCreateKey		[SHELL.2]
 */
int RegCreateKey(void) 
{
	printf("RegCreateKey : Empty Stub !!!\n");
}

/*************************************************************************
 *				RegCloseKey			[SHELL.3]
 */
int RegCloseKey(void) 
{
	printf("RegCloseKey : Empty Stub !!!\n");
}

/*************************************************************************
 *				RegDeleteKey		[SHELL.4]
 */
int RegDeleteKey(void) 
{
	printf("RegDeleteKey : Empty Stub !!!\n");
}


/*************************************************************************
 *				ShellExecute		[SHELL.20]
 */
int ShellExecute(LPSTR ptr)
{
	printf("ShellExecute : Empty Stub !!!\n");
}


/*************************************************************************
 *				RegisterShellHook	[SHELL.102]
 */
int RegisterShellHook(void *ptr) 
{
	printf("RegisterShellHook : Empty Stub !!!\n");
}

/*************************************************************************
 *				ShellHookProc		[SHELL.103]
 */
int ShellHookProc(void) 
{
	printf("ShellHookProc : Empty Stub !!!\n");
}



