ايران ويج

نسخه‌ی کامل: سوال در مورد ران شدن يه سرويس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
فعلآ بی خیالش شدم !
Iron_Fist نوشته است:فعلآ بی خیالش شدم !
ا مرد حسابي من رو حرف شما حساب كردم. منتظر جواب شمام. اون وقت ان قدر راحت ميگي بي خيالش شدم.
حالا از شوخي گذشته من واقعا منتظر جواب شمام. از چند نفر ديگم پرسيدم كه اگه جواب بگيرم اين جا اعلام ميكنم. حالا شمام يه كاري بكن ديگه. گفته بودي اگه كاري رو نتوني بكني يه هفته به خيل ميشي. الآن كه 2 هفته گذشته.
نقل قول: گفته بودي اگه كاري رو نتوني بكني يه هفته به خيل ميشي
الآن كه 2 هفته گذشته
به پایین توجه کن !

نقل قول: ... بی خیال سواله می شم و بعد از اون مدت
اگه شرایط روحیم مساعد بود ...
فعلا که شرایط روحیم مساعد نیست !
شوخی کردم [تصویر:  biggrin.gif]
نقل قول: حالا شمام يه كاري بكن ديگه
رو چشم ! بازم تلاشم رو می کنم
امیدوارم که موفق بشم !
همچين ميگي اگه شرايط روحيم مساعد بود كه انگاري شكست عاطفي خوردي. Biggrin
پیمان جان من هر زوری زدم به جایی نرسیدم
تصمیم گرفتم مثال های C++ ام اس دی ان در مورد این قضیه رو به وی بی بر
گردونم ( با علم ناقصم از C++ )
نظر شما چیه ؟
به جایی رسیدی ؟
منم خواستم همين كار رو بكنم. ولي خيلي پيچيدست. نميشه سر در اورد. از چند نفر راهنمايي خواستم. حالا شنبه طرفو ميبينم. بپرسم ببينم جواب ميگيرم يا نه.
حالا ببین چی می شه که اگه نشد خودم دست به کار شم
ok. خبرشو ميدم.
وقت نكرده بود جوابو بياره. ميلمو دادم قرار شد بميله.
جناب Iron_Fist ببين ميتوني اينو به vb تبديل كني. خيلي سعي كردم ولي چند جاش گيره و كار نميكنه. شايد شما بتوني تبديل كني.
من بيشتر سر خط RegisterServiceCtrlHandler گيرم. پارامتر دومشو نميدونم چي بدم.
کد:
#include <windows.h>
#include <stdio.h>

#define SLEEP_TIME 5000
#define LOGFILE "C:\\MyServices\\memstatus.txt"

SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

void  ServiceMain(int argc, char** argv);
void  ControlHandler(DWORD request);
int InitService();

int WriteToLog(char* str)
{
    FILE* log;
    log = fopen(LOGFILE, "a+");
    if (log == NULL)
        return -1;
    fprintf(log, "%s\n", str);
    fclose(log);
    return 0;
}

void main()
{
    SERVICE_TABLE_ENTRY ServiceTable[2];
    ServiceTable[0].lpServiceName = "MemoryStatus";
    ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;

    ServiceTable[1].lpServiceName = NULL;
    ServiceTable[1].lpServiceProc = NULL;
    // Start the control dispatcher thread for our service
    StartServiceCtrlDispatcher(ServiceTable);  
}


void ServiceMain(int argc, char** argv)
{
    int error;

    ServiceStatus.dwServiceType        = SERVICE_WIN32;
    ServiceStatus.dwCurrentState       = SERVICE_START_PENDING;
    ServiceStatus.dwControlsAccepted   = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
    ServiceStatus.dwWin32ExitCode      = 0;
    ServiceStatus.dwServiceSpecificExitCode = 0;
    ServiceStatus.dwCheckPoint         = 0;
    ServiceStatus.dwWaitHint           = 0;

    hStatus = RegisterServiceCtrlHandler(
        "MemoryStatus",
        (LPHANDLER_FUNCTION)ControlHandler);
    if (hStatus == (SERVICE_STATUS_HANDLE)0)
    {
        // Registering Control Handler failed
        return;
    }  
    // Initialize Service
    error = InitService();
    if (error)
    {
        // Initialization failed
        ServiceStatus.dwCurrentState       = SERVICE_STOPPED;
        ServiceStatus.dwWin32ExitCode      = -1;
        SetServiceStatus(hStatus, &ServiceStatus);
        return;
    }
    // We report the running status to SCM.
    ServiceStatus.dwCurrentState = SERVICE_RUNNING;
    SetServiceStatus (hStatus, &ServiceStatus);

    MEMORYSTATUS memory;
    // The worker loop of a service
    while (ServiceStatus.dwCurrentState == SERVICE_RUNNING)
    {
        char buffer[16];
        GlobalMemoryStatus(&memory);
        sprintf(buffer, "%d", memory.dwAvailPhys);
        int result = WriteToLog(buffer);
        if (result)
        {
            ServiceStatus.dwCurrentState       = SERVICE_STOPPED;
            ServiceStatus.dwWin32ExitCode      = -1;
            SetServiceStatus(hStatus, &ServiceStatus);
            return;
        }

        Sleep(SLEEP_TIME);
    }
    return;
}

// Service initialization
int InitService()
{
    int result;
    result = WriteToLog("Monitoring started.");
    return(result);
}

// Control handler function
void ControlHandler(DWORD request)
{
    switch(request)
    {
        case SERVICE_CONTROL_STOP:
             WriteToLog("Monitoring stopped.");

            ServiceStatus.dwWin32ExitCode = 0;
            ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
            SetServiceStatus (hStatus, &ServiceStatus);
            return;

        case SERVICE_CONTROL_SHUTDOWN:
            WriteToLog("Monitoring stopped.");

            ServiceStatus.dwWin32ExitCode = 0;
            ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
            SetServiceStatus (hStatus, &ServiceStatus);
            return;
        
        default:
            break;
    }

    // Report current status
    SetServiceStatus (hStatus,  &ServiceStatus);

    return;
}
پیمان جان خالی بندی نمی کنم
زیاد سراغ این قضیه نرفتم
فکر کنم حدود 7~8~10 ساعت دنبالش رفته باشم
تو همون  7~8~10ساعت چیز جالبی گیرم نیومد
ولی این کد با اینکه مشکلات خودش رو داره کارت رو راه می ندازه

اون تبدیل کد وی سی به وی بی رو هم متاسفانه به دلیل
امتحانات دانشگاه و یسری بدبختی دیگه ای الآن نمی تونم انجام بدم
صفحه‌ها: 1 2 3 4