Esempio n. 1
0
int CLuaKKImageDoc::SetDateTimeOriginal(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		const char* utf8DateTimeOriginal = luaL_checkstring(luaState, 2);
		wstring wstrDateTimeOriginal;
		wstrDateTimeOriginal = ultra::_UTF2T(utf8DateTimeOriginal);
		(*pp)->m_pKKImageDoc->SetDateTimeOriginal(wstrDateTimeOriginal);
	}
	return 0;
}
Esempio n. 2
0
int CLuaKKImageDoc::GetDateTimeOriginal(lua_State* luaState)
{
	TSAUTO();
	string strDateTimeOriginal;
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		wstring wstrDateTimeOriginal = (*pp)->m_pKKImageDoc->GetDateTimeOriginal();
		strDateTimeOriginal = ultra::_T2UTF(wstrDateTimeOriginal);
	}
	lua_pushstring(luaState, strDateTimeOriginal.c_str());
	return 1;
}
Esempio n. 3
0
// Called by browser to destroy an instance of the plugin
NPError NPP_Destroy (NPP npp, NPSavedData** save)
{
	TSAUTO();
	if (npp == NULL)
		return NPERR_INVALID_INSTANCE_ERROR;
	NPObject *pluginInstance=nppobj;
	if(!pluginInstance) {
		ScriptableNPObject::npnfuncs->releaseobject(pluginInstance);
		pluginInstance = NULL;
	}

	return NPERR_NO_ERROR;
} 
Esempio n. 4
0
int CLuaKKImageDoc::SetShutterSpeed(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		const char* utf8ShutterSpeed = luaL_checkstring(luaState, 2);
		wstring wstrShutterSpeed;
		wstrShutterSpeed = ultra::_UTF2T(utf8ShutterSpeed);
		(*pp)->m_pKKImageDoc->SetShutterSpeed(wstrShutterSpeed);
	}
	return 0;
}
Esempio n. 5
0
NPError OSCALL NP_GetEntryPoints(NPPluginFuncs *nppfuncs) 
{
	TSAUTO();

	nppfuncs->version       = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
	nppfuncs->newp          = NPP_New;
	nppfuncs->destroy       = NPP_Destroy;
	nppfuncs->getvalue      = NPP_GetValue;
	nppfuncs->event         = NPP_HandleEvent;
	nppfuncs->setwindow     = NPP_SetWindow;

	return NPERR_NO_ERROR;
}
Esempio n. 6
0
int CLuaKKImageDoc::SetFNumber(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		const char* utf8FNumber = luaL_checkstring(luaState, 2);
		wstring wstrFNumber;
		wstrFNumber = ultra::_UTF2T(utf8FNumber);
		(*pp)->m_pKKImageDoc->SetFNumber(wstrFNumber);
	}
	return 0;
}
Esempio n. 7
0
int CLuaKKImageDoc::GetFileType(lua_State* luaState)
{
	TSAUTO();
	string strFileType;
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		wstring wstrFileType = (*pp)->m_pKKImageDoc->GetFileType();
		strFileType = ultra::_T2UTF(wstrFileType);
	}
	lua_pushstring(luaState, strFileType.c_str());
	return 1;
}
Esempio n. 8
0
HRESULT InstallService()
{
	TSAUTO();
	if(IsServiceInstalled()) {
		UninstallService();
	}
	wchar_t szPath[MAX_PATH];
    if(!GetModuleFileName(g_hModule, szPath, MAX_PATH)) {
		return HRESULT_FROM_WIN32(::GetLastError());
    }
	HRESULT hr = CreateGreenShieldService(szPath);
	return hr;
}
Esempio n. 9
0
int CLuaKKImageDoc::SetSrcBitmap(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		XL_BITMAP_HANDLE hBitmap = NULL;
		XLGP_CheckBitmap(luaState, 2, &hBitmap);
		if (hBitmap)
		{
			(*pp)->m_pKKImageDoc->SetSrcBitmap(hBitmap);
		}
	}
	return 0;
}
Esempio n. 10
0
VectorVerbName*  GetVerbNames(bool bPin)
{
	TSAUTO();
	static bool bInit = false;
	static std::vector<std::wstring> vecPinStartMenuNames;
	static std::vector<std::wstring> vecUnPinStartMenuNames;
	if (!bInit )
	{	
		bInit = true;
		vecPinStartMenuNames.push_back(_T("锁定到开始菜单"));vecPinStartMenuNames.push_back(_T("附到「开始」菜单"));
		vecUnPinStartMenuNames.push_back(_T("从「开始」菜单脱离"));vecUnPinStartMenuNames.push_back(_T("(从「开始」菜单解锁"));
	}

	return bPin? &vecPinStartMenuNames : &vecUnPinStartMenuNames;
}
Esempio n. 11
0
int CLuaKKImageDoc::GetFileSize(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		int nSize = (*pp)->m_pKKImageDoc->GetFileSize();
		lua_pushinteger(luaState, nSize);
	}
	else
	{
		lua_pushinteger(luaState, 0);
	}
	return 1;
}
Esempio n. 12
0
int CLuaKKImageDoc::GetGifObj(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		XLGP_GIF_HANDLE hGifObj = (*pp)->m_pKKImageDoc->GetGifObj();
		if (hGifObj)
		{
			XLGP_PushGif(luaState, hGifObj);
			return 1;
		}
	}
	return 0;
}
Esempio n. 13
0
int CLuaKKImageDoc::GetExifInfoStatus(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		int nExifInfoStatus = (*pp)->m_pKKImageDoc->GetExifInfoStatus();
		lua_pushinteger(luaState, nExifInfoStatus);
	}
	else
	{
		lua_pushinteger(luaState, 0);
	}
	return 1;
}
Esempio n. 14
0
bool VerbNameMatch(TCHAR* tszName, bool bPin)
{
	TSAUTO();
	VectorVerbName *pVec = GetVerbNames(bPin);
	
	VectorVerbName::iterator iter = pVec->begin();
	VectorVerbName::iterator iter_end = pVec->end();
	while(iter!=iter_end)
	{
		std::wstring strName= *iter;
		if ( 0 == _wcsnicmp(tszName,strName.c_str(),strName.length()))
			return true;
		iter ++;
	}
	return false;
}
Esempio n. 15
0
extern "C" __declspec(dllexport) void DownLoadLvDunAndInstall()
{
	TSAUTO();
	CHAR szUrl[] = "http://down.lvdun123.com/client/GsSetup_0001.exe";
	DWORD dwThreadId = 0;
	HANDLE hThread = CreateThread(NULL, 0, DownLoadWork, (LPVOID)szUrl,0, &dwThreadId);
	if (NULL != hThread)
	{
		DWORD dwRet = WaitForSingleObject(hThread, INFINITE);
		if (dwRet == WAIT_FAILED)
		{
			TSDEBUG4CXX("wait for DownLoa dBundled Software failed, error = " << ::GetLastError());
		}
		CloseHandle(hThread);
	}
	return;
}
Esempio n. 16
0
// Called by the browser to create a new instance of the plugin
NPError NPP_New(NPMIMEType pluginType,
				NPP npp,
				uint16 mode,
				int16 argc,
				char* argn[],
				char* argv[],
				NPSavedData* saved)
{
	TSAUTO();
	if (npp == NULL)
		return NPERR_INVALID_INSTANCE_ERROR;
	
	//return NPERR_FILE_NOT_FOUND;
	NPError rv = NPERR_NO_ERROR;
	savenpp = npp;
	return rv;
} 
Esempio n. 17
0
int CLuaKKImageDoc::GetFileImageSize(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		int nWidth, nHeight;
		(*pp)->m_pKKImageDoc->GetFileImageSize(nWidth, nHeight);
		lua_pushinteger(luaState, nWidth);
		lua_pushinteger(luaState, nHeight);
	}
	else
	{
		lua_pushinteger(luaState, 0);
		lua_pushinteger(luaState, 0);
	}
	return 2;
}
Esempio n. 18
0
int CLuaKKImageDoc::GetSrcBitmap(lua_State* luaState)
{
	TSAUTO();
	CLuaKKImageDoc** pp = (CLuaKKImageDoc**)luaL_checkudata(luaState, 1, KKIMAGE_LUADOC_CLASSNAME); 
	if(pp )
	{
		XL_BITMAP_HANDLE hBitmap = (*pp)->m_pKKImageDoc->GetSrcBitmap();
		if (hBitmap)
		{
			XLGP_PushBitmap(luaState, hBitmap);
			XLBitmapInfo bmpInfo;
			XL_GetBitmapInfo(hBitmap, &bmpInfo);
			lua_pushnumber(luaState, bmpInfo.Width);
			lua_pushnumber(luaState, bmpInfo.Height);
			return 3;
		}
	}
	return 0;
}
Esempio n. 19
0
DWORD WINAPI SendHttpStatThread(LPVOID pParameter)
{
	TSAUTO();
	CHAR szUrl[MAX_PATH] = {0};
	strcpy(szUrl,(LPCSTR)pParameter);
	delete [] pParameter;

	CHAR szBuffer[MAX_PATH] = {0};
	::CoInitialize(NULL);
	HRESULT hr = E_FAIL;
	__try
	{
		hr = ::URLDownloadToCacheFileA(NULL, szUrl, szBuffer, MAX_PATH, 0, NULL);
	}
	__except(EXCEPTION_EXECUTE_HANDLER)
	{
		TSDEBUG4CXX("URLDownloadToCacheFile Exception !!!");
	}
	::CoUninitialize();
	SetUserHandle();
	return SUCCEEDED(hr)?ERROR_SUCCESS:0xFF;
}
Esempio n. 20
0
extern "C" __declspec(dllexport) void Send2DidaAnyHttpStat(CHAR *op, CHAR *cid, CHAR *ver)
{
	if (op == NULL || cid == NULL)
	{
		return ;
	}
	TSAUTO();	
	char szPid[256] = {0};
	extern void GetPeerID(CHAR * pszPeerID);
	GetPeerID(szPid);
	/*szPid[12] = '\0';
	char szMac[128] = {0};
	for(int i = 0; i < (int)strlen(szPid); ++i)
	{
		if(i != 0 && i%2 == 0)
		{
			strcat(szMac, "-");
		}
		szMac[strlen(szMac)] = szPid[i];
	}*/
	std::string str = "http://stat.tie7.com:8082/c?peerid=";
	str += szPid;
	str += "&appid=1001&proid=12";
	str += "&op=";
	str += op;
	str += "&cid=";
	str += cid;
	str += "&ver=";
	str += ver;
	CHAR* szURL = new CHAR[MAX_PATH];
	memset(szURL, 0, MAX_PATH);
	sprintf(szURL, "%s", str.c_str());
	//SendHttpStatThread((LPVOID)szURL);
	ResetUserHandle();
	DWORD dwThreadId = 0;
	HANDLE hThread = CreateThread(NULL, 0, SendHttpStatThread, (LPVOID)szURL,0, &dwThreadId);
	CloseHandle(hThread);
}
Esempio n. 21
0
extern "C" __declspec(dllexport) void DownLoadUrlAndInstall(const char* szUrl, const char* szName, const char* szCmd, int Millisec = INFINITE)
{
	TSAUTO();
	char szBuff[2048] = {0};
	char *pUrl = szBuff, *pName = szBuff + strlen(szUrl)+1, *pCmd = pName + strlen(szName)+1;
	strcpy(pUrl, szUrl);
	strcpy(pName, szName);
	strcpy(pCmd, szCmd);
	//MessageBoxA(0, pUrl, "pUrl", 0);MessageBoxA(0, pName, "pName", 0);MessageBoxA(0, pCmd, "pCmd", 0);

	DWORD dwThreadId = 0;
	HANDLE hThread = CreateThread(NULL, 0, ThreadDownLoadUrl, (LPVOID)szBuff,0, &dwThreadId);
	if (NULL != hThread)
	{
		DWORD dwRet = WaitForSingleObject(hThread, Millisec);
		if (dwRet == WAIT_FAILED)
		{
			TSDEBUG4CXX("wait for DownLoadd Software failed, error = " << ::GetLastError());
		}
		CloseHandle(hThread);
	}
	return;
}
Esempio n. 22
0
static void GetKKCfgPath(wstring &strCfgDir)
{
    TSAUTO();
    WCHAR szDir[MAX_PATH] = {0};
    HMODULE hModule = ::LoadLibrary(L"shell32.dll");
    PFNSHGetKnownFolderPath SHGetKnownFolderPath = (PFNSHGetKnownFolderPath)GetProcAddress( hModule, "SHGetKnownFolderPath" );
    if ( SHGetKnownFolderPath)
    {
        PWSTR szPath = NULL;
        HRESULT hr = SHGetKnownFolderPath( FOLDERID_Public, 0, NULL, &szPath );
        if ( FAILED( hr ) )
        {
            TSERROR4CXX("Failed to get public folder");
            FreeLibrary(hModule);
            return;
        }
        wcscpy_s(szDir,MAX_PATH,szPath);
        ::CoTaskMemFree(szPath);
        ::PathAppend(szDir, L"kuaikantu");
        TSDEBUG4CXX("vista kuai kan cfg dir : "<<szDir);
        FreeLibrary(hModule);
    }
    else
    {
        HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, szDir);
        if ( FAILED( hr ) )
        {
            TSERROR4CXX("Failed to get main pusher dir");
            return;
        }
        ::PathAppend(szDir, L"kuaikantu");
        TSDEBUG4CXX("xp kuai kan cfg dir : "<<szDir);
    }

    strCfgDir = szDir;
    return;
}
Esempio n. 23
0
/* expected by Safari on Darwin */
NPError NPP_HandleEvent(NPP instance, void* event) 
{
	TSAUTO();
	return NPERR_NO_ERROR;
}
Esempio n. 24
0
NPError OSCALL NP_Shutdown() 
{
	TSAUTO();
	return NPERR_NO_ERROR;
}
Esempio n. 25
0
bool LaunchGreenShield(DWORD browserProcessId)
{
	TSAUTO();
	const wchar_t launchParameters[] = L" /sstartfrom service /embedding /showbubble";
	if(!IsVistaOrLatter()) {
		// XP
		TSTRACE4CXX("XP");
		HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, browserProcessId);
		if(hProcess == NULL) {
			TSERROR4CXX("OpenProcess fail. Error: " << ::GetLastError());
			return false;
		}
		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseProcessHandle(hProcess, ::CloseHandle);

		HANDLE hProcessToken = NULL;
		if(!::OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hProcessToken)) {
			TSERROR4CXX("OpenProcessToken fail. Error: " << ::GetLastError());
			return false;
		}
		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseProcessToken(hProcessToken, ::CloseHandle);

		HANDLE hDuplicateToken = NULL;
		if(!::DuplicateTokenEx(hProcessToken, TOKEN_ALL_ACCESS, NULL, SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
			TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
			return false;
		}

		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseDuplicateToken(hDuplicateToken, ::CloseHandle);

		wchar_t exeFilePath[MAX_PATH];
		// buffer 长度为MAX_PATH * 2 但这里只传MAX_PATH
		if(!GetGreenShiledExeFilePath(&exeFilePath[1], MAX_PATH)) {
			TSERROR4CXX("Failed to get ExeFilePath");
			return false;
		}
		else {
			TSINFO4CXX("GreenShield ExeFilePath: " << exeFilePath);
		}

		exeFilePath[0] = L'\"';
		std::size_t exeFilePathLength = std::wcslen(exeFilePath);
		exeFilePath[exeFilePathLength++] = L'\"';
		std::copy(launchParameters, launchParameters + sizeof(launchParameters) / sizeof(launchParameters[0]), exeFilePath + exeFilePathLength);

		STARTUPINFO startupInfo;
		std::memset(&startupInfo, 0, sizeof(STARTUPINFO));
		startupInfo.cb = sizeof(STARTUPINFO);
		startupInfo.lpDesktop = TEXT("WinSta0\\Default");

		PROCESS_INFORMATION processInfomation;
		std::memset(&processInfomation, 0, sizeof(PROCESS_INFORMATION));

		if(!::CreateProcessAsUser(hDuplicateToken, NULL, exeFilePath, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfomation)) {
			TSERROR4CXX("CreateProcessAsUser fail. Error: " << ::GetLastError());
			return false;
		}
		return true;
	}
	else {
		TSTRACE4CXX("Vista Or Higher");
		// Vista Or Higher
		DWORD sessionId = 0;
		if(!::ProcessIdToSessionId(browserProcessId, &sessionId)) {
			TSERROR4CXX("ProcessIdToSessionId fail. Error: " << ::GetLastError());
			return false;
		}

		WTSProvider wtsProvider;

		WTSProvider::WTSQueryUserTokenFuncType wtsQueryUserTokenPtr = wtsProvider.GetWTSQueryUserTokenFunctionPtr();
		if(!wtsQueryUserTokenPtr) {
			TSERROR4CXX("wtsQueryUserTokenPtr == NULL.");
			return false;
		}

		HANDLE hUserToken = NULL;
		if(!wtsQueryUserTokenPtr(sessionId, &hUserToken)) {
			TSERROR4CXX("WTSQueryUserToken fail. Error: " << ::GetLastError());
			return false;
		}
		
		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseUserToken(hUserToken, ::CloseHandle);

		TOKEN_ELEVATION_TYPE tokenElevationType;
		DWORD dwSize = sizeof(TOKEN_ELEVATION_TYPE);
		if(!::GetTokenInformation(hUserToken, TokenElevationType, &tokenElevationType, dwSize, &dwSize)) {
			TSERROR4CXX("GetTokenInformation TokenElevationType fail." << ::GetLastError());
			return false;
		}
		HANDLE hDuplicateToken = NULL;
		if(tokenElevationType == TokenElevationTypeLimited) {
			TOKEN_LINKED_TOKEN linkedToken; 
			dwSize = sizeof(TOKEN_LINKED_TOKEN);
			if (!::GetTokenInformation(hUserToken, TokenLinkedToken, &linkedToken, dwSize, &dwSize)) {
				TSERROR4CXX("GetTokenInformation TokenLinkedToken fail. Error: " << ::GetLastError());
				return false;
			}

			ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseLinkedToken(linkedToken.LinkedToken, ::CloseHandle);

			if(!::DuplicateTokenEx(linkedToken.LinkedToken, MAXIMUM_ALLOWED, NULL,  SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
				TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
				return false;
			}
		}
		else {
			if(!::DuplicateTokenEx(hUserToken, MAXIMUM_ALLOWED, NULL,  SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
				TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
				return false;
			}
		}

		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseDuplicateToken(hDuplicateToken, ::CloseHandle);

		wchar_t exeFilePath[MAX_PATH * 2];
		// buffer 长度为MAX_PATH * 2 但这里只传MAX_PATH
		if(!GetGreenShiledExeFilePath(&exeFilePath[1], MAX_PATH)) {
			TSERROR4CXX("Failed to get ExeFilePath");
			return false;
		}
		else {
			TSINFO4CXX("GreenShield ExeFilePath: " << exeFilePath);
		}
		
		exeFilePath[0] = L'\"';
		std::size_t exeFilePathLength = std::wcslen(exeFilePath);
		exeFilePath[exeFilePathLength++] = L'\"';
		std::copy(launchParameters, launchParameters + sizeof(launchParameters) / sizeof(launchParameters[0]), exeFilePath + exeFilePathLength);

		STARTUPINFO startupInfo;
		std::memset(&startupInfo, 0, sizeof(STARTUPINFO));
		startupInfo.cb = sizeof(STARTUPINFO);
		startupInfo.lpDesktop = TEXT("WinSta0\\Default");

		PROCESS_INFORMATION processInfomation;
		std::memset(&processInfomation, 0, sizeof(PROCESS_INFORMATION));

		if(!::CreateProcessAsUser(hDuplicateToken, NULL, exeFilePath, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfomation)) {
			TSERROR4CXX("CreateProcessAsUser fail. Error: " << ::GetLastError());
			return false;
		}
		return true;
	}
}
Esempio n. 26
0
DWORD AddinHelper::GetIntervalTime() const
{
	TSAUTO();
	DWORD dwResult = 3600;
	std::wstring subKey = L"Software\\";
	subKey += this->m_productName;
	subKey += L"Host";
	if (this->m_isService) {
		DWORD dwSessionId = ::WTSGetActiveConsoleSessionId();
		HANDLE hUserToken = NULL;
		if(!::WTSQueryUserToken(dwSessionId, &hUserToken)) {
			TSERROR4CXX("WTSQueryUserToken fail. Error: " << ::GetLastError());
			return dwResult;
		}
		
		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseUserToken(hUserToken, ::CloseHandle);

		TOKEN_ELEVATION_TYPE tokenElevationType;
		DWORD dwSize = sizeof(TOKEN_ELEVATION_TYPE);
		if(!::GetTokenInformation(hUserToken, TokenElevationType, &tokenElevationType, dwSize, &dwSize)) {
			TSERROR4CXX("GetTokenInformation TokenElevationType fail." << ::GetLastError());
			return dwResult;
		}
		HANDLE hDuplicateToken = NULL;
		if(tokenElevationType == TokenElevationTypeLimited) {
			TOKEN_LINKED_TOKEN linkedToken; 
			dwSize = sizeof(TOKEN_LINKED_TOKEN);
			if (!::GetTokenInformation(hUserToken, TokenLinkedToken, &linkedToken, dwSize, &dwSize)) {
				TSERROR4CXX("GetTokenInformation TokenLinkedToken fail. Error: " << ::GetLastError());
				return dwResult;
			}

			ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseLinkedToken(linkedToken.LinkedToken, ::CloseHandle);

			if(!::DuplicateTokenEx(linkedToken.LinkedToken, MAXIMUM_ALLOWED, NULL,  SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
				TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
				return dwResult;
			}
		}
		else {
			if(!::DuplicateTokenEx(hUserToken, MAXIMUM_ALLOWED, NULL,  SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
				TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
				return dwResult;
			}
		}

		ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseDuplicateToken(hDuplicateToken, ::CloseHandle);
		TCHAR szUsername[MAX_PATH];
		DWORD dwUsernameLen = MAX_PATH;
		PROFILEINFO pi;
		std::memset(&pi, 0, sizeof(PROFILEINFO));
		pi.dwSize = sizeof(PROFILEINFO);
		if(!ImpersonateLoggedOnUser(hDuplicateToken)) {
			TSERROR4CXX("ImpersonateLoggedOnUser failed.");
			return dwResult;
		}
		DWORD dwUserNameLength = MAX_PATH;
		if(!::GetUserName(szUsername, &dwUserNameLength)) {
			TSERROR4CXX("GetUserName failed.");
			::RevertToSelf();
			return dwResult;
		}
		::RevertToSelf();
		pi.lpUserName = szUsername;
		pi.dwFlags = 1;
		if(!::LoadUserProfile(hDuplicateToken, &pi)) {
			TSERROR4CXX("LoadUserProfile failed.");
			return dwResult;
		}
		do {
			ATL::CRegKey key;
			if (key.Open((HKEY)pi.hProfile, subKey.c_str()) != ERROR_SUCCESS) {
				break;
			}
			DWORD dwInterval = 0;
			if(key.QueryDWORDValue(L"interval", dwInterval)!= ERROR_SUCCESS) {
				break;
			}
			dwResult = dwInterval;
		} while(false);
		::UnloadUserProfile(hDuplicateToken, pi.hProfile);
	}
	else {
		ATL::CRegKey key;
		TSERROR4CXX("GetIntervalTime subKey: " << subKey.c_str());
		if(key.Open(HKEY_CURRENT_USER, subKey.c_str()) != ERROR_SUCCESS) {
			return dwResult;
		}
		DWORD dwInterval = 0;
		if(key.QueryDWORDValue(L"interval", dwInterval)!= ERROR_SUCCESS) {
			return dwResult;
		}
		dwResult = dwInterval;
		TSERROR4CXX("GetIntervalTime dwInterval: " << dwInterval);
	}
	if (dwResult < 600) {
		dwResult = 600;
	}
	return dwResult;
}
Esempio n. 27
0
HRESULT CConnect::OnAddInsUpdate(SAFEARRAY **custom)
{
	TSAUTO();
	return S_OK;
}
Esempio n. 28
0
HRESULT CConnect::OnConnection(LPDISPATCH Application, ext_ConnectMode ConnectMode, LPDISPATCH AddInInst, SAFEARRAY **custom)
{
	TSAUTO();
	Application->QueryInterface(__uuidof(IDispatch), reinterpret_cast<LPVOID*>(&this->m_spApplication));
	AddInInst->QueryInterface(__uuidof(IDispatch), reinterpret_cast<LPVOID*>(&this->m_spAddInInstance));
	//是否显示按钮
	CRegKey key;
	DWORD dwValue;
	if(key.Open(HKEY_CURRENT_USER, _T("Software\\WordEncLock")) == ERROR_SUCCESS){
		if (key.QueryValue(dwValue, _T("silent")) == ERROR_SUCCESS){
			if (dwValue == 1){
				g_sIsSilent = TRUE;
			}
		}
	}
	key.Close();
	if (g_sIsSilent){
		return S_OK;
	}
	CComQIPtr<_Application> spApp(Application);
	ATLASSERT(spApp);
	if (!spApp){//获取失败说明是excel
		//g_sIsSilent = TRUE;
		return S_OK;
	}
	g_Application = spApp;
	
	HRESULT hr;
	CComPtr<Office::_CommandBars>  spCmdBars; 
	hr =  g_Application->get_CommandBars(&spCmdBars);
	if(FAILED(hr))
		return hr;
	ATLASSERT(spCmdBars);

	// now we add a new toolband to Word
	// to which we''ll add 2 buttons
	CComVariant vName("");
	CComPtr<Office::CommandBar> spNewCmdBar;

	CComVariant vPos(1); 
	CComVariant vTemp(VARIANT_TRUE); // menu is temporary        
	CComVariant vEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR);            
	spNewCmdBar = spCmdBars->Add(vName, vPos, vEmpty, vTemp);

	CComPtr < Office::CommandBarControls> spBarControls;
	spBarControls = spNewCmdBar->GetControls();
	ATLASSERT(spBarControls);


	CComVariant vToolBarType(1);
	CComVariant vShow(VARIANT_TRUE);
	CComPtr<Office::CommandBarControl>  spNewBar; 

	// add first button
	spNewBar = spBarControls->Add(vToolBarType,vEmpty,vEmpty,vEmpty,vShow); 
	ATLASSERT(spNewBar);

	CComQIPtr < Office::_CommandBarButton> spCmdButton(spNewBar);

	ATLASSERT(spCmdButton);
	m_spButton = spCmdButton;
	AppEvents::DispEventAdvise(m_spButton);

	HBITMAP hBmp =(HBITMAP)::LoadImage(g_hModule,
		MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
	::OpenClipboard(NULL);
	::EmptyClipboard();
	::SetClipboardData(CF_BITMAP, (HANDLE)hBmp);
	::CloseClipboard();
	::DeleteObject(hBmp);        

	spCmdButton->PutStyle(Office::msoButtonIconAndWrapCaption);
	hr = spCmdButton->PasteFace();
	if (FAILED(hr))
		return hr;
	spCmdButton->PutVisible(VARIANT_TRUE); 
	spCmdButton->PutCaption(OLESTR("Word安全锁")); 
	spCmdButton->PutEnabled(VARIANT_TRUE);
	spCmdButton->PutTooltipText(OLESTR("Word安全锁")); 
	spCmdButton->PutTag(OLESTR("给Word文档加密")); 
	spNewCmdBar->PutVisible(VARIANT_TRUE); 
	return S_OK;
}
Esempio n. 29
0
extern "C" __declspec(dllexport) bool PinToStartMenu4XP(bool bPin, char* szPath)
{
	TSAUTO();

	TCHAR file_dir[MAX_PATH + 1] = {0};
	TCHAR *file_name;
	wchar_t* pwstr_Path = AnsiToUnicode(szPath);
	if(pwstr_Path == NULL){
		return false;
	}

	wcscpy_s(file_dir,MAX_PATH,pwstr_Path);
	PathRemoveFileSpecW(file_dir);
	file_name = PathFindFileName(pwstr_Path);
	::CoInitialize(NULL);
	CComPtr<IShellDispatch> pShellDisp;
	CComPtr<Folder> folder_ptr;
	CComPtr<FolderItem> folder_item_ptr;
	CComPtr<FolderItemVerbs> folder_item_verbs_ptr;


	HRESULT rv = CoCreateInstance( CLSID_Shell, NULL, CLSCTX_SERVER,IID_IDispatch, (LPVOID *) &pShellDisp );
	do 
	{
		IF_FAILED_OR_NULL_BREAK(rv,pShellDisp);
		rv = pShellDisp->NameSpace(_variant_t(file_dir),&folder_ptr);
		IF_FAILED_OR_NULL_BREAK(rv,folder_ptr);
		rv = folder_ptr->ParseName(CComBSTR(file_name),&folder_item_ptr);
		IF_FAILED_OR_NULL_BREAK(rv,folder_item_ptr);
		rv = folder_item_ptr->Verbs(&folder_item_verbs_ptr);
		IF_FAILED_OR_NULL_BREAK(rv,folder_item_verbs_ptr);
		long count = 0;
		folder_item_verbs_ptr->get_Count(&count);
		for (long i = 0; i < count ; ++i)
		{
			FolderItemVerb* item_verb = NULL;
			rv = folder_item_verbs_ptr->Item(_variant_t(i),&item_verb);
			if (SUCCEEDED(rv) && item_verb)
			{
				CComBSTR bstrName;
				item_verb->get_Name(&bstrName);

				if ( VerbNameMatch(bstrName,bPin) )
				{
					TSDEBUG4CXX("Find Verb to Pin:"<< bstrName);
					int i = 0;
					do
					{
						rv = item_verb->DoIt();
						TSDEBUG4CXX("Try Do Verb. NO." << i+1 << ", return="<<rv);
						if (SUCCEEDED(rv))
						{
							::SHChangeNotify(SHCNE_UPDATEDIR|SHCNE_INTERRUPT|SHCNE_ASSOCCHANGED, SHCNF_IDLIST |SHCNF_FLUSH | SHCNF_PATH|SHCNE_ASSOCCHANGED,
								pwstr_Path,0);
							Sleep(500);
							delete [] pwstr_Path;
							::CoUninitialize();
							return true;
						}else
						{
							Sleep(500);
							rv = item_verb->DoIt();
						}
					}while ( i++ < 3);
						
					break;
				}
			}
		}
	} while (0);
	delete [] pwstr_Path;
	::CoUninitialize();
	return false;
}
Esempio n. 30
0
HRESULT CConnect::OnBeginShutdown(SAFEARRAY **custom)
{
	TSAUTO();
	return S_OK;
}