Ejemplo n.º 1
0
BOOL WINAPI get_mozilla_profile(LPCWSTR app, LPWSTR in_dir, size_t len)
{
    BOOL  sz_name = is_thunderbird();
    in_dir[0] = L'\0';
    if (sz_name)
    {
        _snwprintf(in_dir,len,L"%ls%ls",app,L"\\Thunderbird\\profiles.ini");
    }
    else if (is_browser())
    {
        _snwprintf(in_dir,len,L"%ls%ls",app,L"\\Mozilla\\Firefox\\profiles.ini");
        sz_name = TRUE;
    }
    return sz_name;
}
Ejemplo n.º 2
0
BOOL WINAPI WaitWriteFile(LPCWSTR ap_path)
{
	BOOL  ret = FALSE;
	WCHAR profile_path[MAX_PATH+1] = {0};
	BOOL  pname = is_thunderbird();
	if (pname)
	{
		_snwprintf(profile_path,MAX_PATH,L"%ls%ls",ap_path,L"\\Thunderbird\\profiles.ini");
	}
	else
	{
		_snwprintf(profile_path,MAX_PATH,L"%ls%ls",ap_path,L"\\Mozilla\\Firefox\\profiles.ini");
	}
	if ( PathFileExistsW(profile_path) )
	{
		if (pname)
		{
			ret = WritePrivateProfileStringW(L"Profile0",L"Path",L"../../",profile_path);
		}
		else
		{
			ret = WritePrivateProfileStringW(L"Profile0",L"Path",L"../../../",profile_path);
		}
	}
	else
	{
		LPWSTR szDir;
		if ( (szDir = (LPWSTR)SYS_MALLOC( sizeof(profile_path) ) ) != NULL )
		{
			wcsncpy (szDir, profile_path, MAX_PATH);
			PathRemoveFileSpecW( szDir );
			SHCreateDirectoryExW(NULL,szDir,NULL);
			SYS_FREE(szDir);
			WritePrivateProfileSectionW(L"General",L"StartWithLastProfile=1\r\n\0",profile_path);
			if (pname)
			{
				ret = WritePrivateProfileSectionW(L"Profile0",L"Name=default\r\nIsRelative=1\r\nPath=../../\r\nDefault=1\r\n\0" \
												,profile_path);
			}
			else
			{
				ret = WritePrivateProfileSectionW(L"Profile0",L"Name=default\r\nIsRelative=1\r\nPath=../../../\r\nDefault=1\r\n\0" \
												,profile_path);
			}
		}
	}
	return ret;
}
Ejemplo n.º 3
0
unsigned WINAPI bosskey_thread(void * lparam)
{
	MSG msg;
	LPWNDINFO lpInfo = (LPWNDINFO)lparam;
	set_hotkey(lpInfo);
	if ( is_browser()  || is_thunderbird() )
	{
		if ( init_bosskey(lpInfo) )
		{
			while( GetMessageW(&msg, NULL, 0, 0) > 0 )
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
				EnumWindows(find_chwnd, (LPARAM)lpInfo);
			}
		}
	}
	return (1);
}
Ejemplo n.º 4
0
BOOL init_bosskey(LPWNDINFO pInfo)
{
	WCHAR	win_titiles[BUFSIZE+1];
	while ( !pInfo->hFF )                 /* 等待主窗口并获取句柄 */
	{
		HWND hwnd_pre = FindWindowExW( NULL, NULL, L"MozillaWindowClass", NULL );
		while (NULL != hwnd_pre)
		{
			int n = GetWindowTextW(hwnd_pre, win_titiles, BUFSIZE);
			if ( n>0 && n < BUFSIZE)
			{
				win_titiles[n] = L'\0';
				if (  stristrW(win_titiles, L"- Mozilla Thunderbird") )
				{
					/* 获取thunderbird窗体句柄 */
					pInfo->hFF = is_thunderbird()?hwnd_pre:NULL;
				}
				else
				{
					/* 获取firefox窗体句柄 */
					pInfo->hFF = is_browser()?hwnd_pre:NULL;
				}
			}
			if (pInfo->hFF)
			{
				break;
			}
			hwnd_pre = FindWindowExW(NULL, hwnd_pre, L"MozillaWindowClass", NULL);
		}
		Sleep(800);
	}
	if ( pInfo->hFF )
	{
		WCHAR atom_str[VALUE_LEN+1] = {0};
		GetModuleFileNameW(NULL,atom_str,VALUE_LEN);
		GetWindowThreadProcessId(pInfo->hFF, &pInfo->pFF);
		pInfo->atom_str = GlobalAddAtomW(atom_str)-0xC000;
	}
	return RegisterHotKey(NULL, pInfo->atom_str, pInfo->key_mod, pInfo->key_vk);
}
Ejemplo n.º 5
0
void WINAPI do_it(void)
{
	HANDLE		 hc = NULL;
	UINT_PTR	 dwCaller = 0;
#ifdef _LOGDEBUG
	if ( GetEnvironmentVariableA("APPDATA",logfile_buf,MAX_PATH) > 0 )
	{
		strncat(logfile_buf,"\\",1);
		strncat(logfile_buf,LOG_FILE,strlen((LPCSTR)LOG_FILE));
	}
#endif
	if (!dll_module)
	{
	#ifdef __GNUC__
		dwCaller = (UINT_PTR)__builtin_return_address(0);
	#else
		dwCaller = (UINT_PTR)_ReturnAddress();
	#endif
	}
	if (dwCaller)
	{
		GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)dwCaller, &dll_module);
	}
	if ( read_appint(L"General",L"SafeEx") > 0 )
	{
		init_safed(NULL);
	}
	if ( read_appint(L"General", L"Portable") > 0 )
	{
		env_thread = (HANDLE)_beginthreadex(NULL,0,&init_global_env,NULL,0,NULL);
		if (env_thread) 
		{
			SetThreadPriority(env_thread,THREAD_PRIORITY_HIGHEST);
			init_portable(NULL);
		}
	}
	if ( is_browser() || is_thunderbird() )
	{
		if ( read_appint(L"General",L"GdiBatchLimit") > 0 )
		{
			hc = OpenThread(THREAD_ALL_ACCESS, 0, GetCurrentThreadId());
			if (hc)
			{
				CloseHandle((HANDLE)_beginthreadex(NULL,0,&GdiSetLimit_tt,hc,0,NULL));
			}
		}
		if ( read_appint(L"General",L"ProcessAffinityMask") > 0 )
		{
			hc = OpenThread(THREAD_ALL_ACCESS, 0, GetCurrentThreadId());
			if (hc)
			{
				CloseHandle((HANDLE)_beginthreadex(NULL,0,&SetCpuAffinity_tt,hc,0,NULL));
			}
		}
		if ( read_appint(L"General",L"CreateCrashDump") > 0 )
		{
			CloseHandle((HANDLE)_beginthreadex(NULL,0,&init_exeception,NULL,0,NULL));
		}
		if ( read_appint(L"General", L"Bosskey") > 0 )
		{
			CloseHandle((HANDLE)_beginthreadex(NULL,0,&bosskey_thread,&ff_info,0,NULL));
		}
		CloseHandle((HANDLE)_beginthreadex(NULL,0,&SetPluginPath,NULL,0,NULL));
	}
}