精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>网络与通讯>>网络蚂蚁(三)

主题:网络蚂蚁(三)
发信人: u_rover(柠檬水)
整理人: wenbobo(2003-08-23 10:59:18), 站内信件
ImageList_Destroy(SendMessage(ghTabWin, 0x1302, 0, 0));  
        ClearClipViewer(hWnd);  
        UninitDDE();  
        SaveJobs();  
        CleanLogWinAndStatusbar();  
        BackupJobHistory();  
        KillTimer(hWnd, 2);  
        KillTimer(hWnd, 3);  
        KillTimer(hWnd, 4);  
        KillTimer(hWnd, 8);  
        KillTimer(hWnd, 9);  
        if (gbBasketTimer)  
            KillTimer(hWnd, 13);  
        PostQuitMessage(0);  
        break;  

    case WM_QUERYENDSESSION:  
        break;  

    case WM_COMMAND:  
        break;  
    }  

    return DefWindowProc(hWnd, uMsg, wParam, lParam);  
}  

// sizeof(LanguageData) == 0x13c  
typedef struct tagLanguageData {  
    char LanguageName[50];  
    char LanguagePath[MAX_PATH + 2];  
    LanguageData* next;  
} LanguageData, *PLanguageData;  

// Search a specific language from a linked list  
LanguageData* SearchLanguageDataList(const char* LanguageName)  
{  
    for (LanguageData* ld = gLanguageDataPtr; ld; ld = ld->next)  
        if (!lstrcmp(ld->LanguageName, LanguageName))  
            return ld;  
    return NULL;  
}  

// Add a language to the linked list  
LanguageData* AddLanguageData(const char* LanguageName, const char* LanguagePath)  
{  
    if (SearchLanguageDataList(LanguageName))  
        return NULL;  

    LanguageData* NewLd = (LanguageData*)malloc(sizeof(LanguageData));  
    if (NewLd == NULL) {  
        ShowErrMsg("Malloc");  
        return NULL;  
    }  

    strcpy(NewLd->LanguageName, LanguageName);  
    if (LanguagePath)  
        lstrcpy(NewLd->LanguagePath, LanguagePath);  
    else  
        NewLd->LanguagePath[0] = 0;  

    LanguageData* InsertAfter = NULL;  
    for (LanguageData* ld = gLageuageDataPtr; ld; ld = ld->next) {  
        if (lstrcmp(ld->LanguageName, LanguageName) >= 0) break;  
        InsertAfter = ld;  
    }  

    if (InsertAfter == NULL) {  
        NewLd->next = gLanguageDataPtr;  
        gLanguageDataPtr = NewLd;  
    }  
    else {  
        NewLd->next = InsertAfter->next;  
        InsertAfter->next = NewLd;  
    }  
    gLanguageDataCount++;  

    return NewLd;  
}  

// Wrap of _vsnprintf, initialize the buf with 0 before call _vsnprintf  
int ZeroVsnprintf(char* buf, int sz, const char* form, va_list argptr)  
{  
    //////////////////////////////////////////////////////////////////////////  
    // From the disassembly code, the author seemed to use folling statement:  
    // memset(buf, sz, 0);  
    // I think it's wrong  
    //////////////////////////////////////////////////////////////////////////  
    memset(buf, 0, sz);  
    _vsnprintf(buf, sz, form, argptr);  
}  

int SetLanguage(const char* LanguageName)  
{  
    LanguageData* ld;  
    if ((ld = SearchLanguageDataList(LanguageName)) == NULL)  
        return -1;  

    gpCurrentLanguage = ld;  

    SendMessage(ghWndMain, 0x810, 0, 0);  
    SendMessage(ghFolderWin, 0x810, 0, 0);  
    SendMessage(ghJobList, 0x810, 0, 0);  
    SendMessage(ghTabWin, 0x810, 0, 0);  
    SendMessage(ghStatusbar, 0x810, 0, 0);  
    SendMessage(ghLogWin, 0x810, 0, 0);  
    SendMessage(ghInfoListWin, 0x810, 0, 0);  
    SendMessage(ghLinkListWin, 0x810, 0, 0);  

    return 1;  
}  

void InitLanguage()  
{  
    char FileName[MAX_PATH], LanguagePath[MAX_PATH];  
    WIN32_FIND_DATA fd;  
    HANDLE hFind;  
    char LanguageName[52];  
    HKEY hKey;  
    DWORD cbData;  

    memset(LanguageName, 0, 50);  
    AddLanguageData(English, NULL);  
      
    // Get all language data  
    ZeroVsnprintf(FileName, MAX_PATH, "%s\\%s\\*.ini", ModuleDir, language);  
    if ((hFind = FindFirstFile(FileName, &fd) != INVALID_HANDLE_VALUE)  
        do {  
            ZeroVsnprintf(LanguagePath, MAX_PATH, "%s\\%s\\%s", ModuleDir, language, fd.cFileName);  
            GetPrivateProfileString("Info", Language, &NullChar, LanguageName, 50, buf);  
            if (lstrlen(LanguageName) && lstrcmp(LanguageName, English))  
                AddLanguageData(LanguageName, LanguagePath);  
        } while (FindNextFile(hFind, &fd));  
    FindClose(hFind);  
      
    // Set current language to the one specified in Registry  
    RegOpenKeyEx(HKEY_CURRENT_USER, "Software\NetAnts\Localization", 0, KEY_ALL_ACCESS, &hKey);  
    cbData = 50;  
    if (RegQueryValueEx(hKey, Language, NULL, NULL, NULL, &cbData) != ERROR_SUCCESS ||  
        !lstrlen(LanguageName) || !SearchLanguageDataList(LanguageName))  
    {  
        lstrcpy(LanguageName, English);  
    }  
    SetLanguage(LanguageName);  
    RegCloseKey(hKey);  
      
    return TRUE;  
}  

char gsOemTitle[100];  
char gsOemWebsite[100];  
char gsOemSplash[MAX_PATH];  
int GetOemData(void)  
{  
    HKEY hKey;  
    int cbData;  

    RegOpenKeyEx(HKEY_CURRENT_USER, "Software\NetAnts\OEM", NULL, KEY_ALL_ACCESS, &hKey);  
    cbData = 100;  
    if (RegQueryValueEx(hKey, "Title", NULL, NULL, &gsOemTitle, &cbData))  
        gsOemTitle[0] = 0;  

    cbData = 100;  
    if (RegQueryValueEx(hKey, "Website", NULL, NULL, &gsOemWebsite, &cbData))  
        gsOemWebsite[0] = 0;  

    cbData = MAX_PATH;  
    if (RegQueryValueEx(hKey, "Splash", NULL, NULL, &gsOemSplash, &cbData))  
        gsOemSplash[0] = 0;  

    RegCloseKey(hKey);  
    return TRUE;  
}  

HANDLE ghSubagentTrapEvent;  
AsnObjectIdentifier gFirstSupportedRegion;  

BOOL (*pfnSnmpExtensionInit)(  
  DWORD dwUptimeReference,                    // see NOTE below  
  HANDLE *phSubagentTrapEvent,                // trap event handle  
  AsnObjectIdentifier *pFirstSupportedRegion  // first MIB subtree  
);  
BOOL (*pfnSnmpExtensionQuery)(  
  BYTE bPduType,                  // SNMPv1 PDU request type  
  SnmpVarBindList *pVarBindList,  // pointer to variable bindings  
  AsnInteger32 *pErrorStatus,    // pointer to SNMPv1 error status  
  AsnInteger32 *pErrorIndex      // pointer to the error index  
);  

#include "snmp.h"  

// load inetmib1.dll (Small Netword Management Protocol) and get the address of  
//    SnmpExtensionInit  
//    SnmpExtensionQuery  
int InitSNMP(void)  
{  
    HMODULE hModule;  

    gbSnmpInitialized = FALSE;  

    if ((hModule = LoadLibrary("inetmib1.dll")) == NULL)  
        return -1;  

    pfnSnmpExtensionInit = GetProcAddress(hModule, "SnmpExtensionInit");  
    pfnSnmpExtensionQuery = GetProcAddress(hModule, "SnmpExtensionQuery");  
    if (pfnSnmpExtensionInit == NULL || pfnSnmpExtensionQuery == NULL) {  
        FreeLibrary(hModule);  
        return -1;  
    }  
      
    if (!(*pfnSnmpExtensionInit)(GetTickCount(),  
        &ghSubagentTrapEvent, &gFirstSupportedRegion))  
    {  
        ShowErrMsg("SnmpExtensionInit");  
        return -1;  
    }  
    gbSnmpInitialized = TRUE;  
    return 1;  
}  

DWORD (*pfnRasDial) (  
  LPRASDIALEXTENSIONS lpRasDialExtensions,  
DWORD (*pfnRasDial) (  
  LPRASDIALEXTENSIONS lpRasDialExtensions,  
                          // pointer to function extensions data  
  LPCTSTR lpszPhonebook,  // pointer to full path and file  
                          //  name of phone-book file  
  LPRASDIALPARAMS lpRasDialParams,  
                          // pointer to calling parameters data  
  DWORD dwNotifierType,  // specifies type of RasDial event handler  
  LPVOID lpvNotifier,    // specifies a handler for RasDial events  
  LPHRASCONN lphRasConn  // pointer to variable to receive  
                          //  connection handle  
);  

DWORD (*pfnRasHangUp) (  
  HRASCONN hrasconn  // handle to the RAS connection to hang up  
);  

DWORD (*pfnRasEnumEntries*) (  
  LPCTSTR reserved,              // reserved, must be NULL  
  LPTCSTR lpszPhonebook,        // pointer to full path and  
                                //  file name of phone-book file  
  LPRASENTRYNAME lprasentryname, // buffer to receive  
                                //  phone-book entries  
  LPDWORD lpcb,                  // size in bytes of buffer  
  LPDWORD lpcEntries            // number of entries written  
                                //  to buffer  
);  

DWORD (*pfnRasEnumConnections)(  
  LPRASCONN lprasconn,  // buffer to receive connections data  
  LPDWORD lpcb,          // size in bytes of buffer  
  LPDWORD lpcConnections // number of connections written to buffer  
);  

DWORD (*pfnRasGetConnectStatus) (  
  HRASCONN hrasconn,  // handle to RAS connection of interest  
  LPRASCONNSTATUS lprasconnstatus  
                      // buffer to receive status data  
);  

DWORD (*pfnRasGetErrorString)(  
  UINT uErrorValue,        // error to get string for  
  LPTSTR lpszErrorString,  // buffer to hold error string  
  DWORD cBufSize          // size, in characters, of buffer  
);  

DWORD (*pfnRasGetEntryDialParams)(  
  LPCTSTR lpszPhonebook,  // pointer to the full path and  
                          //  file name of the phone-book file  
  LPRASDIALPARAMS lprasdialparams,  
                          // pointer to a structure that  
                          //  receives the connection parameters  
  LPBOOL lpfPassword      // indicates whether the user's  
                          //  password was retrieved  
);  





----
 我曾经不只一次的在网络上寻找MM, 
可是,网络一次一次的让我失望, 
因为,那些MM不是一个比一个丑, 
就是一个比一个恐怖, 
直到我遇见她, 
一个比我小很多的小MM, 
我对她几乎是一见钟情, 
可是,她没有发觉我 
发觉我已经喜欢上了她, 
她仍然每次上网 
都是那么的可爱, 
可是,却不知道 
我因她而日子过得了无生趣 
我对她表白,得到的只是 
年龄是个问题,空间是个距离 

[关闭][返回]