📄 setup.cpp
字号:
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 + -