Logoff Nachricht verschicken mit OnQueryEndSession()



  • Hallo zusammen,

    ich bin echt kurz vorm verzweifeln, sitz ich doch jetzt schon geschlagene zwei Tage an einem Problem, das ich nicht in den Griff bekomme...also folgendes:

    Ich schreibe einen Nachrtichtendienst bzw. Chat Programm. Dieses kleine Programm soll nicht durch den User beendet werden sondern beendet sich selbst, wenn man sich bei Windows abmeldet bzw. Windows runterfährt. Dafür gibt es die nette Methode OnQueryEndSession(), welche von Windows automatisch aufgerufen wird, wenn man sich abmeldet. In dieser Methode kann man dann noch diverse Aufräumarbeiten ausführen lassen oder so wie ich z.B. eine Logoff Nachricht an einen Server verschicken. Das eigentliche Problem liegt jetzt darin, daß die Nachricht nicht schnell genug an den Server übermittelt werden kann bevor der Abmeldevorgang bei Windows vollzogen ist. Mein Code dazu sieht folgendermaßen aus:

    BOOL CMessengerDlg::OnQueryEndSession()
    {
    TCHAR tszName[256];
    LPTSTR UserName = tszName;
    DWORD cchBuff = 256;
    ::GetUserName(UserName, &cchBuff);
    CString s_uName = UserName;

    KillTimer(1);

    //AbmeldeNachricht an Server
    m_connect.DatenSenden("192.168.1.23", "1;"+s_uName+";"+sOwnIP, 1);

    CString fileName;
    CFileFind find;
    BOOL bWork = find.FindFile("C:/MsgTemp/*.txt");
    while (bWork)
    { bWork = find.FindNextFile(); fileName= find.GetFilePath();
    CFile::Remove(fileName);
    }

    //Hier müsste eine Verzögerung eingebaut werden, damit die Nachricht
    //verschickt werden kann

    return TRUE;
    }

    Kann mir jemand eine Methode nennen, mit der ich das beenden soweit rauszögern kann, bis die Nachricht wirklich an den server verschickt wurde. hab schon diverse Dinge versucht, wie Zählschleife, etc.
    Vielen Dank im Voraus...

    MfG

    zippo

    Hallo,

    hab mittlerweile selbst ne Lösung gefunden. 😃

    MfG

    zippo


Anmelden zum Antworten