Project using C

Hello Everyone, I am new to this site. I am a beginner in C. I have to do project using C. I decided to do it in Hardware based. I have some idea. But don't this concept already exists or not.

My idea is: We have to control the PC power supply using timer like one exists in TV, Music systems. If we specify time it has to automatically shut down the system. Before shutting down the system it should save the applications currently working in dafault path specified.

Siimilarly, it has to start itself.

Tell me how much my concept is right and some tips to develop my project.

Comments

  • : Hello Everyone, I am new to this site. I am a beginner in C. I have to do project using C. I decided to do it in Hardware based. I have some idea. But don't this concept already exists or not.
    :
    : My idea is: We have to control the PC power supply using timer like one exists in TV, Music systems. If we specify time it has to automatically shut down the system. Before shutting down the system it should save the applications currently working in dafault path specified.
    :
    : Siimilarly, it has to start itself.
    :
    : Tell me how much my concept is right and some tips to develop my project.
    :


    I'm not sure what you are saying, but I believe you are talking about system standby. To set the amount of time programmatically you could use:

    /** This only works with Win32 applications **/
    SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, /*This is the value set */
    seconds, /* int amount of seconds */
    NULL, /* Has to be null */
    NULL); /*Varying values for this parameter. */

    This basically sets the amount of time the power goes into system standby, similar to how you set the power save mode in the windows screensaver menu (actually, this is the same value). All the applications should be perfectly preserved. I don't know your current level of programming so, here is an example ( It's the default project on Dev-C++ projects, with some added codes. Download Dev-C++ if you haven't already, go to http://www.bloodshed.net ):

    _______________________________________________________________________
    #include

    /* Declare Windows procedure */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

    /* Make the class name into a global variable */
    char szClassName[ ] = "WindowsApp";

    int WINAPI WinMain (HINSTANCE hThisInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszArgument,
    int nFunsterStil)

    {
    HWND hwnd; /* This is the handle for our window */
    MSG messages; /* Here messages to the application are saved */
    WNDCLASSEX wincl; /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
    wincl.style = CS_DBLCLKS; /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL; /* No menu */
    wincl.cbClsExtra = 0; /* No extra bytes after the window class */
    wincl.cbWndExtra = 0; /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
    return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
    0, /* Extended possibilites for variation */
    szClassName, /* Classname */
    "Windows App", /* Title Text */
    WS_OVERLAPPEDWINDOW, /* default window */
    CW_USEDEFAULT, /* Windows decides the position */
    CW_USEDEFAULT, /* where the window ends up on the screen */
    544, /* The programs width */
    375, /* and height in pixels */
    HWND_DESKTOP, /* The window is a child-window to desktop */
    NULL, /* No menu */
    hThisInstance, /* Program Instance handler */
    NULL /* No Window Creation data */
    );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
    /* Translate virtual-key messages into character messages */
    TranslateMessage(&messages);
    /* Send message to WindowProcedure */
    DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
    }


    /* This function is called by the Windows function DispatchMessage() */

    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {

    int time_to_shutoff = 10*60; /* 10 minutes. */

    switch (message) /* handle the messages */
    {
    case WM_DESTROY:
    PostQuitMessage (0); /* send a WM_QUIT to the message queue */
    break;


    case WM_CREATE:
    {
    SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, time_to_shutoff,
    NULL,
    NULL);
    }break;
    default:
    return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
    }
    _______________________________________________________________________

    If that doesn't work, there is also a way to do this with , it basically gets the ellapsed time since startup and when that reaches 10 minutes, it puts the computer in standby, but I'd stick with SystemParametersInfo() for now.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

In this Discussion