亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? installdata.cpp

?? 用java 編寫的源碼開放的文本編輯器。有很多有用的特性
?? CPP
字號:
/* * InstallData.cpp - part of jEditLauncher package * Copyright (C) 2001 John Gellene * jgellene@nyc.rr.com * * Notwithstanding the terms of the General Public License, the author grants * permission to compile and link object code generated by the compilation of * this program with object code and libraries that are not subject to the * GNU General Public License, provided that the executable output of such * compilation shall be distributed with source code on substantially the * same basis as the jEditLauncher package of which this program is a part. * By way of example, a distribution would satisfy this condition if it * included a working makefile for any freely available make utility that * runs on the Windows family of operating systems. This condition does not * require a licensee of this software to distribute any proprietary software * (including header files and libraries) that is licensed under terms * prohibiting redistribution to third parties. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * * $Id: InstallData.cpp,v 1.10 2002/02/19 03:33:44 jgellene Exp $ */#include "stdafx.h"#include "StringPtr.h"#include "InstallerLog.h"#include "InstallData.h"bool InstallData::Init(){	// NOTE: check OS	char szWinVer[64];	OSVERSIONINFO osver;	osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);	GetVersionEx(&osver);	bIsWinNT = (osver.dwPlatformId == VER_PLATFORM_WIN32_NT);	strcpy(szWinVer, "<no version detected>");	switch(osver.dwMajorVersion)	{		case 5:		{			if(osver.dwMinorVersion == 0)			{				strcpy(szWinVer, "Windows 2000");			}			else			{				strcpy(szWinVer, "Windows XP");			}			break;		}		case 4:		{			if(osver.dwMinorVersion == 0)			{				strcpy(szWinVer, bIsWinNT ? "Windows NT 4.0" : "Windows 95");			}			else if(osver.dwMinorVersion == 10)			{				strcpy(szWinVer, "Windows 98");			}			else if(osver.dwMinorVersion == 90)			{				strcpy(szWinVer, "Windows ME");			}			break;		}		default:		{			strcpy(szWinVer, "Incompatible Windows version");		}	}	InstallerLog::Log(Debug, "Operating system is %s\n", szWinVer);	HKEY hKey = 0;	// NOTE: find if 3.2 or 4.0 is already installed	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,		_T("Software\\www.jedit.org\\jEditLauncher\\3.2"), 0, KEY_READ, &hKey))	{		bIs32 = true;	}	RegCloseKey(hKey);	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,		_T("Software\\www.jedit.org\\jEditLauncher\\4.0"), 0, KEY_READ, &hKey))	{		bIs40 = true;	}	RegCloseKey(hKey);	InstallerLog::Log(Debug, "Version 3.2 found %s, version 4.0 found %s\n",		bIs32 ? "true" : "false", bIs40 ? "true" : "false");	// NOTE: find current version of launcher module	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT,		_T("JEdit.JEditLauncher\\CurVer"), 0, KEY_READ, &hKey))	{		TCHAR szVersion[64];		DWORD bufSize = 64;		RegQueryValueEx(hKey, 0, 0, 0, (unsigned char*)szVersion, &bufSize);		if(lstrcmp(szVersion, "JEdit.JEditLauncher.3.2") == 0)		{			bIsCurrent32 = true;		}		else if(lstrcmp(szVersion, "JEdit.JEditLauncher.4.0") == 0)		{			bIsCurrent40 = true;		}	}	RegCloseKey(hKey);	InstallerLog::Log(Debug, "Currently installed: version %s\n",		(bIsCurrent32 ? "version 3.2" :			(bIsCurrent40 ? "version 4.0" : "no version")));	// NOTE: find location of context menu handler	CString strCtxMenuGUID, strCtxMenuPath;	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT,		_T("*\\shellex\\ContextMenuHandlers\\Open with jEdit"),		0, KEY_READ, &hKey))	{		CStringBuf<> pBuf(strCtxMenuGUID);		DWORD bufSize = pBuf.Size();		RegQueryValueEx(hKey, 0, 0, 0, pBuf, &bufSize);	}	RegCloseKey(hKey);//	InstallerLog::Log(Debug, "strCtxMenuGUID = %s\n", strCtxMenuGUID);	if(strCtxMenuGUID.GetLength() != 0)	{		strCtxMenuPath = CString("CLSID\\");		strCtxMenuPath += strCtxMenuGUID;		strCtxMenuPath += _T("\\InprocServer32");//		InstallerLog::Log(Debug, "strCtxMenuPath = %s\n", strCtxMenuPath);		if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT,			strCtxMenuPath,	0, KEY_READ, &hKey))		{			InstallerLog::Log(Debug, "Context menu handler is installed.\n");			bIsCtxMenuInstalled = true;			CStringBuf<> pBuf(strCtxMenuPath);			DWORD bufSize = pBuf.Size();			RegQueryValueEx(hKey, 0, 0, 0, pBuf, &bufSize);		}		RegCloseKey(hKey);	}	/*	 * we must confirm we have the correct version of the component available	 * we look in the following places	 * 		1.	a new installation should have "jeshlstb.dl_" in the	 * 			current directory	 * 		2.	if not present, then check for "jeshlstb.dll" in the current	 * 			directory	 * if no file is available, installation fails	 * if succeeds, set strFullInstallName to correct full name (after renaming)	 *///	InstallerLog::Log(Debug, "Install directory is %s\n", strInstallDir);//	InstallerLog::Log(Debug, "'Install name' is %s\n", strInstallName); 	CString strComponentPath(strInstallDir), strInstallPath("");	strComponentPath += _T('\\');	strComponentPath += strInstallName;	InstallerLog::Log(Debug, "Searching for %s\n", strComponentPath);	if(GetFileAttributes(strComponentPath) != -1)	{		InstallerLog::Log(Debug, "Found %s\n", strComponentPath);		strInstallPath = strComponentPath;	}	else	{		strComponentPath.SetAt(strComponentPath.GetLength() - 1, _T('l'));		InstallerLog::Log(Debug, "Searching for %s\n", strComponentPath);		if(GetFileAttributes(strComponentPath) != -1)		{			InstallerLog::Log(Debug, "Found %s\n", strComponentPath);			strInstallPath = strComponentPath;		}		else		{			InstallerLog::Log(Error, "Could not find context menu module.\n");			return false;		}	}//	InstallerLog::Log(Debug, "strCtxMenuPath = %s\n", strCtxMenuPath);	// NOTE: Compare ctx menu directory with current install directory	if(strCtxMenuPath.GetLength() != 0)	{		CStringBuf<> pCurrBuf(strCtxMenuPath);		ShortenToDirectory(pCurrBuf);		GetShortPathName(pCurrBuf, pCurrBuf, pCurrBuf.Size());		CString strShortInstallDir(strInstallDir);		CStringBuf<> pInstallBuf(strShortInstallDir);		GetShortPathName(pInstallBuf, pInstallBuf, pInstallBuf.Size());		if(lstrcmpi(pCurrBuf, pInstallBuf) == 0)		{			bInstallCtxMenu = false;		}	}	strInstallFinalPath = strInstallPath;	strInstallFinalPath.SetAt(strInstallFinalPath.GetLength() - 1, _T('l'));	if(strInstallPath.Compare(strInstallFinalPath) == 0)		bUsingTempFileName = false;	InstallerLog::Log(Debug, "Using %s for name of context menu handler.\n",		bUsingTempFileName ? "jeshlstb.dl_" : "jeshlstb.dll");	return true;}void InstallData::ShortenToDirectory(TCHAR* lpszPath){	TCHAR* pSlash = 0;	TCHAR* p = lpszPath;	while (*p != 0)	{		if (*p == _T('\\'))			pSlash = p;		p = ::CharNext(p);	}	if(pSlash == 0)		*(lpszPath + 2) = 0; // drive name only	else		*pSlash = 0;}DWORD InstallData::GetBufferByteLen(const WTL::CString& str){	return (str.GetLength() + 1) * sizeof(TCHAR);}#if defined(_DEBUG)void InstallData::Dump(){	OutputDebugString("Dumping InstallData....\n");	CString strOutput;	strOutput.Format("strJavaHome: %s\nstrInstallDir: %s\nstrInstallName: %s\n",		strJavaHome, strInstallDir, strInstallName);	OutputDebugString(strOutput);	strOutput.Format("strOldPath: %s\nstrInstallGUID: %s\nstrInstallVersion: %s\n",		strOldPath, strInstallGUID, strInstallVersion);	OutputDebugString(strOutput);	strOutput.Format("strApp: %s\nstrVersionLabel: %s\n",		strApp, strVersionLabel);	OutputDebugString(strOutput);	strOutput.Format("bRebootRequired: %s\nbUsingTempFileName: %s\nbIsWinNT: %s\n",		bRebootRequired ? "true" : "false", bUsingTempFileName ? "true" : "false",		bIsWinNT ? "true" : "false");	OutputDebugString(strOutput);	strOutput.Format("dwInstalledVersion: %d\nnInstalledVersions: %d\nnIndexSubjectVer: %d\n",		dwInstalledVersions, nInstalledVersions, nIndexSubjectVer);	OutputDebugString(strOutput);	strOutput.Format("nIndexOverwrittenVer: %d\nnIndexCurrentVer: %d\n",		nIndexOverwrittenVer, nIndexCurrentVer);	OutputDebugString(strOutput);	strOutput.Format("arPathNames:\n");	OutputDebugString(strOutput);	unsigned int n;	for(n = 0; n < nInstalledVersions; ++n)	{		strOutput.Format("    Item %d: %s\n", n, arPathNames[n]);		OutputDebugString(strOutput);	}	strOutput.Format("arVersionNames:\n");	OutputDebugString(strOutput);	for(n = 0; n < nInstalledVersions; ++n)	{		strOutput.Format("    Item %d: %s\n", n, arVersionNames[n]);		OutputDebugString(strOutput);	}}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色播激情啊| 亚洲色欲色欲www在线观看| 91麻豆国产福利精品| 国产综合久久久久久鬼色| 日本在线不卡视频| 精品一区二区三区免费| 国产精品一区一区| 精品一二三四区| 国产精品1024| 成人国产一区二区三区精品| 狠狠久久亚洲欧美| 91亚洲永久精品| 欧美日本在线播放| 国产丝袜在线精品| 亚洲在线免费播放| 青青草国产成人99久久| 国产aⅴ综合色| 欧美影院一区二区| 久久久精品综合| 国产精品麻豆久久久| 亚洲高清免费视频| 国产成人av电影在线观看| 99久久免费精品| 欧美成人精品高清在线播放| 亚洲欧洲日韩av| 激情文学综合插| 91在线视频播放| 国产精品无人区| 国产成人精品综合在线观看 | 欧美视频在线观看一区二区| 久久综合久久久久88| 美女在线一区二区| 欧美男女性生活在线直播观看| 国产性天天综合网| 亚洲综合av网| 懂色av一区二区三区免费观看 | 亚洲欧美二区三区| 成人看片黄a免费看在线| 久久精品男人天堂av| 蜜臀av性久久久久蜜臀aⅴ流畅 | 制服丝袜亚洲色图| 中文字幕亚洲电影| 91啪九色porn原创视频在线观看| 精品99一区二区三区| 丝袜a∨在线一区二区三区不卡| 色婷婷狠狠综合| 亚洲成人免费在线观看| 91福利在线导航| 日韩高清国产一区在线| 欧美精品123区| 蜜桃av一区二区| 久久久三级国产网站| 成人免费视频一区| 一区二区三区日韩欧美精品| 欧美无砖专区一中文字| 蜜桃久久久久久| 国产精品五月天| 在线不卡免费欧美| 国产精品99久久久久| 亚洲色图制服诱惑 | 亚洲影院免费观看| 日韩欧美色综合| 91丨porny丨在线| 天天色综合天天| 国产精品久久久久aaaa樱花 | 亚洲午夜一区二区| 欧美成人国产一区二区| 99久久99久久精品免费观看| 亚洲成人先锋电影| 中文字幕一区二区日韩精品绯色| 欧美日韩精品免费观看视频| 国产麻豆9l精品三级站| 亚洲资源中文字幕| 亚洲欧美偷拍另类a∨色屁股| 91精品婷婷国产综合久久性色| eeuss国产一区二区三区| 日韩中文字幕91| 亚洲444eee在线观看| 亚洲激情在线播放| 亚洲视频一区二区在线| 国产精品热久久久久夜色精品三区| 欧美性一级生活| 99re这里都是精品| 成人白浆超碰人人人人| 国产91丝袜在线播放0| 国产乱人伦偷精品视频免下载| 全国精品久久少妇| 麻豆极品一区二区三区| 日韩av网站免费在线| 偷拍亚洲欧洲综合| 亚洲午夜免费电影| 视频在线在亚洲| 亚洲成人激情自拍| 老司机精品视频在线| 麻豆成人久久精品二区三区小说| 青青草一区二区三区| 美腿丝袜亚洲综合| 国产成人日日夜夜| 欧美性xxxxx极品少妇| 欧美日本在线播放| 国产拍揄自揄精品视频麻豆| 亚洲国产激情av| 伊人一区二区三区| 韩国欧美国产1区| 91农村精品一区二区在线| 欧美性极品少妇| 久久天堂av综合合色蜜桃网| 中文字幕在线播放不卡一区| 亚洲成av人综合在线观看| 美国av一区二区| 欧洲一区二区av| 国产校园另类小说区| 日韩影视精彩在线| 在线观看一区日韩| 国产精品人成在线观看免费| 亚洲成a天堂v人片| 成人avav在线| 国产日韩精品一区二区三区 | 欧美日韩精品福利| 国产亚洲一区二区在线观看| 欧美日韩精品一区二区三区蜜桃| 欧美日韩一区二区三区在线看| 久久网站热最新地址| 亚洲福利一二三区| 欧美日韩在线亚洲一区蜜芽| 亚洲视频你懂的| 99久久婷婷国产精品综合| 国产精品免费aⅴ片在线观看| 午夜久久电影网| 丁香婷婷深情五月亚洲| 3d动漫精品啪啪一区二区竹菊 | 日韩电影在线免费| 欧美日韩精品免费观看视频| √…a在线天堂一区| 99久久综合色| 亚洲精选视频在线| 99在线热播精品免费| 日韩理论片在线| 欧美三级资源在线| 日韩主播视频在线| 欧美成人艳星乳罩| 成人动漫一区二区在线| 亚洲午夜精品一区二区三区他趣| 91一区二区三区在线观看| 亚洲一区二区三区四区的| 制服丝袜亚洲播放| 韩国精品免费视频| 亚洲综合精品久久| xnxx国产精品| 一本久道久久综合中文字幕 | 91在线观看成人| 日韩精品免费视频人成| 国产午夜精品一区二区三区嫩草| 国产成人激情av| 亚洲成av人片在线| 国产午夜亚洲精品午夜鲁丝片| 在线观看亚洲成人| 国产激情视频一区二区三区欧美 | av电影天堂一区二区在线| 亚洲影院理伦片| 亚洲欧美偷拍三级| 欧美激情在线观看视频免费| 69久久夜色精品国产69蝌蚪网| 懂色av中文一区二区三区| 久久国产精品99久久人人澡| 最好看的中文字幕久久| 国产日韩三级在线| 精品国产一区二区三区四区四 | 国产精品福利一区二区三区| 日韩欧美国产系列| 欧美肥妇bbw| 欧美精品自拍偷拍| 在线视频你懂得一区| 99视频热这里只有精品免费| 国产米奇在线777精品观看| 麻豆国产一区二区| 国产永久精品大片wwwapp| 日本亚洲一区二区| 激情五月婷婷综合| 激情成人午夜视频| 国产69精品久久久久毛片| 国产不卡在线播放| 99久久综合99久久综合网站| 国产盗摄精品一区二区三区在线| 久久精品噜噜噜成人av农村| 视频一区国产视频| 免费观看91视频大全| 日韩福利电影在线观看| 另类调教123区| 丰满岳乱妇一区二区三区| 白白色亚洲国产精品| 在线一区二区三区四区五区| 欧美精品久久天天躁| 日韩精品一区二| 中文字幕高清一区| 日韩精品五月天| 成人高清免费观看| 欧美一区二区啪啪| 亚洲欧美激情插| 国产精华液一区二区三区|