⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    unsigned long ret_code=0;

    wchar_t *cmd = new wchar_t[wcslen(path)+wcslen(app)+5];
    wsprintf(cmd, TEXT("%s\\%s"), path, app);

    if( CreateProcess( cmd, cmdline,
                       NULL, NULL, FALSE, 0,
                       NULL, NULL, NULL, &procinfo ) ) {
        ret_code =  procinfo.dwProcessId;
    }
    else
        ret_code= 0;

    if(path)
        {path=NULL;}
    if(cmd)
    {delete [] cmd; cmd=NULL;}

    return ret_code;
}

void deregister()
{
    startprogram(TEXT("handleservice.exe"), TEXT("deregister"));
}

void deregisterSMS()
{
    startprogram(TEXT("startsync.exe"), TEXT("deregister"));
}

void registerPush()
{
    startprogram(TEXT("handleservice.exe"), TEXT("register"));
}

void registerSMS()
{
    startprogram(TEXT("startsync.exe"), TEXT("register"));
}

void registerCradle() {
    startprogram(TEXT("handleservice.exe"), TEXT("registerCradle"));
}

void deregisterCradle() {
    startprogram(TEXT("handleservice.exe"), TEXT("deregisterCradle"));
}

void restoreNotificationSettings() {

    
    wchar_t rpath[MAX_PATH] = TEXT("");
    wsprintf(rpath ,TEXT("\\Software\\%s\\SyncclientPIM"),getAppName());
    wchar_t* value = readPropertyValue(rpath, TEXT("push"));
    if (value && wcscmp(value, TEXT("0")) != 0) {
        registerPush();
    }
    if (value) { delete [] value; value = NULL; }

    value = readPropertyValue(rpath, TEXT("sms"));
    if (value && wcscmp(value, TEXT("0")) != 0) {
        registerSMS();
    }

}

BOOL deleteFilesInRoot() {
    DeleteFile(FILE12);
    DeleteFile(FILE13);
    DeleteFile(FILE14);
    DeleteFile(FILE15);
    DeleteFile(FILE16);
    DeleteFile(FILE17);
    return true;
}


BOOL deleteFiles() {

    WIN32_FIND_DATA FileData;

    HANDLE hFind;
    wchar_t toFind    [512];
    wchar_t szNewPath [512];
    wchar_t filterPattern [256];
    wchar_t dir       [512];

    BOOL ret = TRUE;
    szNewPath[0] =   0;
    int lung = 0;

    DWORD dwAttrs;

    BOOL fFinished = FALSE;
    wcscpy(dir, getProgramPath());
    wsprintf(filterPattern, TEXT("*.*"));

    wsprintf(toFind, TEXT("%s/%s"), dir, filterPattern);

    hFind = FindFirstFile(toFind, &FileData);

    if (hFind != INVALID_HANDLE_VALUE) {

        while (!fFinished) {

            wsprintf(szNewPath, TEXT("%s/%s"), dir, FileData.cFileName);

            dwAttrs = GetFileAttributes(szNewPath);

            if (dwAttrs == FILE_ATTRIBUTE_DIRECTORY) { }

            else {
                if (   (wcsstr(szNewPath, FILE1) != NULL) ||
                       (wcsstr(szNewPath, FILE2) != NULL) ||
                       (wcsstr(szNewPath, FILE3) != NULL) ||
                       (wcsstr(szNewPath, FILE4) != NULL) ||
                       (wcsstr(szNewPath, FILE5) != NULL) ||
                       (wcsstr(szNewPath, FILE6) != NULL) ||
                       (wcsstr(szNewPath, FILE7) != NULL) ||
                       (wcsstr(szNewPath, FILE8) != NULL) ||
                       (wcsstr(szNewPath, FILE9) != NULL) ||
                       (wcsstr(szNewPath, FILE10) != NULL) ||
                       (wcsstr(szNewPath, FILE11) != NULL) ||
                       (wcsstr(szNewPath, FILE18) != NULL) ||
                       (wcsstr(szNewPath, FILE19) != NULL)
                       ) {

                        DeleteFile(szNewPath);
                }
            }

            if (!FindNextFile(hFind, &FileData)) {
                if (GetLastError() == ERROR_NO_MORE_FILES) {
                    fFinished = TRUE;
                }
                else  {
                    return FALSE;
                }
            }
        }

        FindClose(hFind);
    }

    deleteFilesInRoot();

    //RemoveDirectory(dir);
    return ret;
}

BOOL deleteDirectory() {

    wchar_t dir       [512];
    wcscpy(dir, getProgramPath());
    RemoveDirectory(dir);
    return TRUE;
}

BOOL createDirectory() {

    wchar_t dir       [512];
    wcscpy(dir, getProgramPath());
    CreateDirectory(dir, NULL);
    return TRUE;
}

DWORD getProcessPid(const wchar_t *processName)
{
    PROCESSENTRY32 lppe;
    BOOL next = TRUE;
    HANDLE hProcess = 0;
    DWORD pid = 0;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (hSnapshot == INVALID_HANDLE_VALUE)
        return 0;

    lppe.dwSize = sizeof( PROCESSENTRY32 );

    if (!Process32First(hSnapshot, &lppe))
        return 0;

    if (wcsstr(lppe.szExeFile, processName) != NULL) {
        pid = lppe.th32ProcessID;
    }

    do {
        next = Process32Next(hSnapshot, &lppe);

        if (!next)
            break;

        if (wcsstr(lppe.szExeFile, processName) != NULL ) {
            pid = lppe.th32ProcessID;
            break;
        }

    } while(next);

    if (hSnapshot)
        CloseToolhelp32Snapshot(hSnapshot);
    CloseHandle(hProcess);
    return pid;
}


DWORD checkSyncInProgress(){
    DWORD pid = 0;
    // Try to create the mutex
    HANDLE hMutex = CreateMutex(NULL, TRUE, TEXT("FunSyncInProgress") );
    if(hMutex){
        if(GetLastError() == ERROR_ALREADY_EXISTS){
            pid = getProcessPid( TEXT("startsync.exe") );
        }
        CloseHandle( hMutex );
    }
    return pid;
}

DWORD checkUI()
{
    DWORD pid = 0;
    
    wchar_t value[MAX_PATH] = TEXT("");
    wsprintf(value ,TEXT("%s.exe"),getAppName());
    pid = getProcessPid( value );
    return pid;
}
int closeMail() {
    DWORD out = 0;
    PROCESSENTRY32 lppe;
    BOOL next = TRUE;
    HANDLE hProcess = 0;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 0 is however ignored

    if (hSnapshot == INVALID_HANDLE_VALUE)
        return 0;

    lppe.dwSize = sizeof( PROCESSENTRY32 );

    if (!Process32First(hSnapshot, &lppe))
        return 1;

    if (wcsstr(lppe.szExeFile, TEXT("tmail.exe")) != NULL) {
        hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
        TerminateProcess(hProcess, -1);
        goto exit;
    }

    do {
        next = Process32Next(hSnapshot, &lppe);

        if (!next)
            break;

        if (wcsstr(lppe.szExeFile, TEXT("tmail.exe")) != NULL ) {
            hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
            TerminateProcess(hProcess, -1);
            goto exit;
        }

    } while(next);

exit:
    if (hSnapshot)
        CloseToolhelp32Snapshot(hSnapshot);
    CloseHandle(hProcess);
    return 0;

}

int closeFunambol() {
    DWORD out = 0;
    PROCESSENTRY32 lppe;
    BOOL next = TRUE;
    HANDLE hProcess = 0;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 0 is however ignored

    if (hSnapshot == INVALID_HANDLE_VALUE)
        return 0;

    lppe.dwSize = sizeof( PROCESSENTRY32 );

    if (!Process32First(hSnapshot, &lppe))
        return 1;

    
    wchar_t value[MAX_PATH] = TEXT("");
    wsprintf(value ,TEXT("%s.exe"),getAppName());
    if (wcsstr(lppe.szExeFile, value) != NULL ||
        wcsstr(lppe.szExeFile, TEXT("startsync.exe")) != NULL) {
        hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
        TerminateProcess(hProcess, -1);
        CloseHandle(hProcess);
        //goto exit;
    }

    do {
        next = Process32Next(hSnapshot, &lppe);

        if (!next)
            break;

        wchar_t value[MAX_PATH] = TEXT("");
        wsprintf(value ,TEXT("%s.exe"),getAppName());
        if (wcsstr(lppe.szExeFile, value) != NULL ||
            wcsstr(lppe.szExeFile, TEXT("startsync.exe")) != NULL) {
            hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
            TerminateProcess(hProcess, -1);
            CloseHandle(hProcess);
            //goto exit;
        }

    } while(next);

//exit:
    if (hSnapshot)
        CloseToolhelp32Snapshot(hSnapshot);
    CloseHandle(hProcess);
    return 0;

}

int closeFunambol30() {
    DWORD out = 0;
    PROCESSENTRY32 lppe;
    BOOL next = TRUE;
    HANDLE hProcess = 0;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 0 is however ignored

    if (hSnapshot == INVALID_HANDLE_VALUE)
        return 0;

    lppe.dwSize = sizeof( PROCESSENTRY32 );

    if (!Process32First(hSnapshot, &lppe))
        return 1;

    if (wcsstr(lppe.szExeFile, TEXT("pvbload.exe")) != NULL ) {
        hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
        TerminateProcess(hProcess, -1);
        CloseHandle(hProcess);
        //goto exit;
    }

    do {
        next = Process32Next(hSnapshot, &lppe);

        if (!next)
            break;

        if (wcsstr(lppe.szExeFile, TEXT("pvbload.exe")) != NULL) {
            hProcess = OpenProcess(0, FALSE, lppe.th32ProcessID);
            TerminateProcess(hProcess, -1);
            CloseHandle(hProcess);
            //goto exit;
        }

    } while(next);

//exit:
    if (hSnapshot)
        CloseToolhelp32Snapshot(hSnapshot);
    CloseHandle(hProcess);
    return 0;

}

int FileCopy ( const wchar_t *src, const wchar_t *dst ) {

    char* s = toMultibyte(src);
    char* d = toMultibyte(dst);

    int ret = FileCopy(s, d);

    if (s) { delete [] s; }
    if (d) { delete [] d; }

    return ret;

}
int FileCopy ( const char *src, const char *dst ) {

int COPY_ERROR  = -1;
int COPY_OK     =  0;
int BUFSZ       = 16000;

char            *buf;
FILE            *fi;
FILE            *fo;
unsigned        amount;
unsigned        written;
int             result = COPY_OK;

buf = new char[BUFSZ];

fi = fopen( src, "rb" );
if  (fi == NULL) {
    return COPY_ERROR;
}

fo = fopen( dst, "wb" );

if  ((fi == NULL) || (fo == NULL) ) {
    result = COPY_ERROR;
    if (fi != NULL) fclose(fi);
    if (fo != NULL) fclose(fo);
}

if (result == COPY_OK) {
    do {
        amount = fread( buf, sizeof(char), BUFSZ, fi );
        if (amount) {
            written = fwrite( buf, sizeof(char), amount, fo );
            if (written != amount) {
                result = COPY_ERROR; // out of disk space or some other disk err?
            }
        }
    } // when amount read is < BUFSZ, copy is done
    while ((result == COPY_OK) && (amount == BUFSZ));

    fclose(fi);
    fclose(fo);
}

delete [] buf;

return result;

}

const wchar_t *getWindowsPath()
{
    static wchar_t winpath[MAX_PATH] = TEXT("");
    if (!winpath[0])
    {
        SHGetSpecialFolderPath(NULL, winpath, CSIDL_WINDOWS , FALSE);
        wcscat(winpath, TEXT("\\"));
    }
    return winpath;
}

void createBriefcaseFolder()
{
    /*  create a 揵riefcase

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -