How can I turn off a Wireless Xbox 360 Controller for Windows?

If you're playing a 'Games for Windows Live' enabled game, you should be able to shut it off through the fancy Windows Live menu that appears get when you press and hold the Guide button (the big green X in the center).

If you're not playing a Windows Live, enabled game, it looks like you're out of luck; the only way to shut off your controller short of popping the batteries out is to leave it inactive for a period of time (reports online vary; anywhere from 10 to 20 minutes seems to cover the range).


However, you're not the only one who has been annoyed by this, it seems. I found a free utility for Windows that appears to give you some extra functionality when you press and hold the Guide button, and it allows you to shut off your controller through a brand new dialog box.

Fancy-pants dialog box for powering off your controller

Check it out: Xbox 360 Controller Manager


Note: The english description is below the Hungarian one on the linked website.


Try this alternative application: https://sourceforge.net/projects/turnoffxboxcontroller/

From it's sourceforge description:

This program have only one function. Double click it and all Xbox Controllers will be turned off.

Program have no dialogs or settings. It don't required administrator rights. It don't running as service or startup application, after turning off controller program will exit itself.

You can add shortcut to desktop and configure hot key to turn off your controller.

Examining the source files leaves us with no doubts, its an elegant and simple solution.

#include "windows.h"
#include "xinput.h"

#pragma comment(lib, "XInput.lib")

int main(int argc, char *argv[])
{
    HINSTANCE hXInputDLL = LoadLibraryA("XInput1_3.dll");
    if (hXInputDLL == NULL)return 1;

    for(short i=0; i<4; ++i)
    {
        XINPUT_STATE state;
        memset(&state, 0, sizeof(XINPUT_STATE));
        if(XInputGetState(i,&state)==ERROR_SUCCESS)
        {
            typedef DWORD (WINAPI* XInputPowerOffController_t)(DWORD i);
            XInputPowerOffController_t realXInputPowerOffController=(XInputPowerOffController_t) GetProcAddress(hXInputDLL, (LPCSTR) 103);
            realXInputPowerOffController(i);
        }
        ZeroMemory(&state, sizeof(XINPUT_STATE));
    }
    FreeLibrary(hXInputDLL);
    return 0;
}