OnCustomCommand executes when the Service Control Manager (SCM) passes a custom 
command to the service. Specifies actions to take when a command with the 
specified parameter value occurs.
The only values for a custom command that you can define in your application or 
use in OnCustomCommand are those between 128 and 256.
Integers below 128 correspond to system-reserved values.
Create One Windows Service & Implement Below Code in Service :
namespace 
MyWindowsService
{
    public partial
class Service1 
: ServiceBase
    {
        public enum
SimpleServiceCustomCommands { Command1 = 128, 
Command2 =129, Command3 = 130};
 
        public Service1()
        {
            InitializeComponent();
        }
       
protected override
void OnStart(string[] 
args)
        {
        }
       
protected override
void OnStop()
        {
        }
       
protected override
void OnCustomCommand(int 
command)
        {
            base.OnCustomCommand(command);
           
switch(command)
            {
                case(int)SimpleServiceCustomCommands.Command1:
                //Command1 Implementation
                break;
               
case(int)SimpleServiceCustomCommands.Command2:
                //Command2 Implementation
                
break;
               
case(int)SimpleServiceCustomCommands.Command3:
                //Command3 Implementation
                    break;
                default:
                    break;
 
           }       
        }
    } }
Call Windows Service CustomCommands From 
User Application :