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

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

?? yabinst.c

?? BASIC語言的編譯器,對于了解編譯過程是極大的好處,看看吧,不會讓你失望的.
?? C
?? 第 1 頁 / 共 3 頁
字號:
	sprintf(logs,"--Deleting '%s'\n",PathLink);
	logit(logs);
	return DeleteFile(PathLink);
} 


int MyLinks(int mode) /* add or remove shell links */
{
	int success=TRUE;
	LINKINFO *li; /* contains info about links */
	char string[SSLEN];
	LPITEMIDLIST pidl;           /* path id */
	char PathLink[MAX_PATH];     /* path name */
	int res;
	
	enumlinks(RESET);
	
	if (mode==INSTALL) {
		/* make filename from registry folder constant */
		SHGetSpecialFolderLocation(NULL,CSIDL_PROGRAMS,&pidl);
		SHGetPathFromIDList(pidl,PathLink);
		strcat(PathLink,"\\"BASIC_NAME);
		res=CreateDirectory(PathLink,NULL);
	}
	while(li=enumlinks(NEXT)) {
		if (mode==INSTALL && !li->removeonly) {
			sprintf(string,"Adding %s",li->desc);
			progress(string);
			success=SUCCEEDED(CreateShellLink(li,installpath)) && success;
		}
		else {
			sprintf(string,"removing %s",li->desc);
			progress(string);
			success=SUCCEEDED(DeleteShellLink(li)) && success;
		}
	}
	if (mode!=INSTALL) {
		/* make filename from registry folder constant */
		SHGetSpecialFolderLocation(NULL,CSIDL_PROGRAMS,&pidl);
		SHGetPathFromIDList(pidl,PathLink);
		strcat(PathLink,"\\"BASIC_NAME);
		res=RemoveDirectory(PathLink);
	}
	return success;
}


int MyFiles(int mode) /* copy or delete files */
{
	int success=TRUE;
	char *name;
	int failures=0;
	char string[SSLEN];   /* multi-purpose-string */
	
	switch(mode) {
		
	case INSTALL:
		enumfiles(RESET);
		
		while(success && (name=enumfiles(NEXT))) {
			sprintf(string,"%s%s",currentpath,name);
			success=Copy(string,app(name),here) && success;
			sprintf(string,"Copying '%s'",name);
			progress(string);
		}
		break;
	case REMOVE:
		enumfiles(RESET);
		
		while(name=enumfiles(NEXT)) {
			if (!DeleteFile(app(name))) failures++;
			sprintf(string,"Deleting '%s'",name);
			progress(string);
		}
		if (failures>1) success=FALSE;
		
		break;
	default: 
		break;
	}
	return success;
}    


int MyRegs(int mode) /* add or delete entries to or from registry */
{
	int success=TRUE;
	char string[SSLEN];   /* multi-purpose-string */
	char windir[SSLEN];   /* windows-directory */
	
	switch(mode) {
	case INSTALL:
		/* registering uninstall program */
		progress("Registering uninstall-program");
		success=putreg(LOCAL,UNINSTALL BASIC_NAME,"DisplayName",BASIC_NAME);
		sprintf(string,"%s%s %s",installpath,BASIC_SETUP,"remove");
		success=putreg(LOCAL,UNINSTALL BASIC_NAME,"UninstallString",string) && success;
		progress(NULL);
		progress("Adding defaults to registry.");
		/* make changes in registry, put in defaults */
		success=putreg(LOCAL,SOFT BASIC_NAME,"path",installpath) && success;
		progress(NULL);
		success=putreg(LOCAL,SOFT BASIC_NAME,"font",DEFAULTFONT) && success;
		progress(NULL);
		success=putreg(LOCAL,SOFT BASIC_NAME,"geometry",DEFAULTGEOMETRY) && success;
		sprintf(string,"%5.2f",newversion);
		progress(NULL);
		success=putreg(LOCAL,SOFT BASIC_NAME,"version",string) && success;
		
		progress("Registering file extension.");
		/* change context-menue */
		success=putreg(ROOT,BASIC_EXTENSION,"",BASIC_NAME) && success;
		progress(NULL);
		success=putreg(ROOT,BASIC_NAME,"","Yabasic Program") && success;
		progress(NULL);
		success=putreg(ROOT,BASIC_NAME"\\DefaultIcon","",app(BASIC_ICON)) && success;
		progress(NULL);
		success=putreg(ROOT,BASIC_EXTENSION"\\ShellNew","NullFile","") && success;
		success=putreg(ROOT,BASIC_NAME"\\shell\\open","","&Execute") && success;
		success=putreg(ROOT,BASIC_NAME"\\shell\\open\\command","",
			app(BASIC_EXE" \"%1\"")) && success;
		
		progress("Linking to root-Menu");
		success=putreg(ROOT,BASIC_NAME"\\shell\\New","","&Edit") && success;
		GetWindowsDirectory(string,SSLEN);
		sprintf(windir,"%s%s",brushup(string),"Notepad.exe \"%1\"");
		success=putreg(ROOT,BASIC_NAME"\\shell\\New\\command","",windir) 
			&& success;
		
		return success;
	case REMOVE:
		delreg(ROOT,BASIC_EXTENSION,"");
		progress(NULL);
		delreg(ROOT,BASIC_NAME,"");
		progress(NULL);
		delreg(LOCAL,SOFT BASIC_NAME,"");
		progress(NULL);
		delreg(LOCAL,UNINSTALL BASIC_NAME,"");
	}
	return success;
}


BOOL CALLBACK progressdialog(HWND handle,UINT message,
							 WPARAM wparam,LPARAM lparam)
							 /* callback for cprogress dialog */
{
	
	switch(message) {
	case WM_INITDIALOG:
		{ /* center dialog box */
			RECT rc;
			
			GetWindowRect(handle,&rc);
			SetWindowPos(handle,HWND_TOP,
				((GetSystemMetrics(SM_CXSCREEN)-(rc.right-rc.left))/2),
				((GetSystemMetrics(SM_CYSCREEN)-(rc.bottom-rc.top))/2),
				0,0,SWP_NOSIZE|SWP_NOACTIVATE|SWP_SHOWWINDOW);
		}
		return TRUE;
	default:
		break;
	}
	return FALSE;
}


void progress(char *msg) /* show progress */
{
	int timerid;
	MSG timermsg;
	RECT rc;
	static int count=0;
	static HWND progressbox=NULL;   /* handle of progress dialog */
	static HWND hwndPB=NULL; /* handle of progress bar */
	char string[SSLEN];             /* multi-purpose string */
	int thumb;  // height of scroll bar arrow 
	
	count++;
	
	/* create progress dialog */
	if (progressbox==NULL) {
		InitCommonControls();
		progressbox=CreateDialog((HANDLE)this_instance,
			MAKEINTRESOURCE(IDD_PROGRESSDIALOG),
			(HANDLE)NULL,
			(DLGPROC)progressdialog);
		GetClientRect(progressbox,&rc); 
		thumb=GetSystemMetrics(SM_CYVSCROLL); 
		hwndPB=CreateWindowEx(0,PROGRESS_CLASS,(LPSTR)NULL, 
			WS_CHILD|WS_VISIBLE, rc.left+thumb, 
			rc.bottom- 3*thumb, rc.right-2*thumb, 2*thumb, 
			progressbox, (HMENU) 0, this_instance, NULL);  
		SendMessage(hwndPB, PBM_SETRANGE, 0, MAKELPARAM(0,total_progress)); 
		SendMessage(hwndPB, PBM_SETSTEP, (WPARAM) 1, 0);
		/* actually display the window */
		ShowWindow(progressbox,SW_SHOW);
	}
	
	/* change text */
	if (msg) SetDlgItemText(progressbox,IDC_PROGRESSTEXT,msg);
	
	/* advance progress count */
	SendMessage(hwndPB, PBM_STEPIT, 0, 0); 
	
	/* write to logfile */
	if (msg) {
		sprintf(logs,"--Progress: '%s'\n",msg);
		logit(logs);
	}
	
	/* set heading of progress window */
	sprintf(string,"Work in progress ... step %d",count);
	SendMessage((HWND)progressbox,(UINT)WM_SETTEXT,0,(LPARAM)(LPCTSTR)string);
	
	/* wait a bit ... */
	timerid=SetTimer(NULL,0,200,(TIMERPROC) NULL);
	GetMessage((LPMSG)&timermsg,NULL,WM_TIMER,WM_TIMER);
	KillTimer(NULL,timerid);
}


int Copy(char *name,char *dest,int here) /* copy files */
{
	int ret;
	char string[SSLEN];
	WIN32_FIND_DATA file;
	
	if (here) {
		ret=(FindFirstFile(dest,&file)!=INVALID_HANDLE_VALUE);}
	else
		ret=CopyFile(name,dest,FALSE);
	if (!ret) {
		sprintf(string,"Failed to copy '%s' !",name);
		MyMessage(NULL,string,INSTALL_HEADING,MB_OK|MB_SYSTEMMODAL|MB_ICONINFORMATION);
	}
	return ret;
}


char *enumfiles(int mode) /* give filenames, one after another */
{
	static int num=0;
	
	if (mode==RESET) {
		num=0;
		return NULL;
	}
	
	num++;
	
	if (num==1) return strdup(BASIC_EXE);
	if (num==2) return strdup(BASIC_ICON);
	if (num==3) return strdup(BASIC_SETUP);
	if (num==4) return strdup(BASIC_DEMO".yab");
	if (num==5) return strdup(BASIC_README);
	if (num==6) return strdup(BASIC_LICENSE);
	if (num==7) return strdup(BASIC_NAME".htm");
	if (num==8) return strdup(BASIC_NAME".txt");
	
	return NULL;
}


LINKINFO *enumlinks(int mode) /* give back linkinfos, one after another */
{
	static int num=0;
	static LINKINFO li[]={
		{CSIDL_PROGRAMS,BASIC_NAME"\\"BASIC_NAME".LNK",BASIC_EXE,
			"Link to "BASIC_NAME,BASIC_ICON,FALSE},
		{CSIDL_PROGRAMS,BASIC_NAME".LNK",BASIC_EXE,
		"Link to "BASIC_NAME,BASIC_ICON,TRUE},
		{CSIDL_PROGRAMS,BASIC_NAME"\\DEMO.LNK",BASIC_DEMO".yab",
		"Link to "BASIC_DEMO".yab","\025",FALSE},
		{CSIDL_DESKTOPDIRECTORY,"DEMO.LNK",BASIC_DEMO".yab",
		"Link to "BASIC_DEMO".yab",BASIC_ICON,FALSE},
		{CSIDL_PROGRAMS,BASIC_NAME"\\DOCU.LNK",BASIC_NAME".htm",
		"Link to "BASIC_NAME".htm","\026",FALSE},
		{CSIDL_DESKTOPDIRECTORY,"DOCU.LNK",BASIC_NAME".htm",
		"Link to "BASIC_NAME".htm",BASIC_ICON,FALSE}
	};
	
	if (mode==RESET) {
		num=-1;
		return NULL;
	}
	
	num++;
	
	if (num>5) 
		return NULL;
	else
		return &li[num];
}


char *brushup(char *path) /* change to upper case, add slash */
{
	int i;
	char buf[SSLEN];
	
	if (path==NULL) return NULL;
	
	i=0;
	do {
		buf[i]=tolower(path[i]); 
		if (buf[i]=='/') buf[i]='\\';
		i++;
	}while(path[i]!='\0' && isprint(path[i]));
	
	buf[i]='\0';
	
	if (buf[i-1]!='\\') {
		buf[i]='\\';
		buf[i+1]='\0';
	}
	
	return strdup(buf);
}      

void logit(char *text) 
/* 
write text to log-file 
text : text to write
*/
{
	static FILE *log=NULL;   /* file for logging */
	SYSTEMTIME time;         /* time */
	char string[SSLEN];
	static int oldtime;
	
	/* open log-file */
	if (!log) {
		sprintf(string,"%s%s",temppath,BASIC_LOG);
		log=fopen(string,"a");
		GetSystemTime(&time);
		if (log) {
			fprintf(log,"\n\n\n---------------------------------------------------\n"
				"Starting installation-log, "
				"hr=%d, min=%d, sec=%d, msec=%d.\n",
				time.wHour,time.wMinute,time.wSecond,time.wMilliseconds);
			oldtime=GetCurrentTime();
		}
	}
	
	if (log) {
		GetSystemTime(&time);
		if (GetCurrentTime()-oldtime>10000) {
			fprintf(log,"Timestamp: hr=%d, min=%d, sec=%d, msec=%d\n",
				time.wHour,time.wMinute,time.wSecond,time.wMilliseconds);
			oldtime=GetCurrentTime();
		}
		if (text) {
			if (strncmp(text,"--",2)) fprintf(log,"  ");
			while(*text!='\0') {
				fputc(*text,log);
				if (*text=='\n' && *(text+1)!='\0') fprintf(log,"  ");
				text++;
			}
		}
		else {  /* not text ... */
			fprintf(log,"Closing installation-log.");
			fflush(log);
			fclose(log);
		}
	}
	if (log) fflush(log);
}


int MyMessage(HWND handle,LPCSTR text,LPCSTR title,UINT style)
/* wrapper for MessageBox() */
{
	
	sprintf(logs,"--Message box: '%s'\n",text);
	logit(logs);
	
	return MessageBoxEx(handle,text,title,style,
		MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久99| 日韩福利电影在线| 不卡免费追剧大全电视剧网站| 欧美一区二区三区小说| 亚洲444eee在线观看| 精品视频一区二区三区免费| 亚洲日本va在线观看| 91小视频免费看| 亚洲激情综合网| 在线成人高清不卡| 久久国产精品无码网站| 国产午夜精品一区二区三区嫩草| 国产精品影音先锋| 亚洲欧洲中文日韩久久av乱码| 色婷婷精品大视频在线蜜桃视频| 亚洲欧美偷拍三级| 91精品国产黑色紧身裤美女| 久久精品免费看| 中文字幕亚洲在| 欧美色手机在线观看| 国产伦精品一区二区三区视频青涩 | 国产成人亚洲综合色影视| 国产精品久久久久aaaa| 欧美日韩一区二区三区高清| 国产在线播放一区三区四| 国产精品高潮久久久久无| 欧美日韩精品一区二区| 高清在线观看日韩| 免费高清成人在线| 亚洲黄色录像片| 亚洲国产精品99久久久久久久久| 欧美伊人精品成人久久综合97 | 成人av网址在线观看| 日韩av一区二| 亚洲综合色区另类av| 久久亚洲二区三区| 欧美一级片在线观看| 91麻豆6部合集magnet| 国产成a人亚洲| 国产一区在线观看视频| 视频一区在线播放| 一区二区三区日韩精品| 亚洲国产精品高清| 久久精品免费在线观看| 欧美一区二区精品| 337p亚洲精品色噜噜狠狠| 91同城在线观看| 99精品视频一区二区三区| 成人免费三级在线| 51精品国自产在线| 色999日韩国产欧美一区二区| 欧美性色综合网| 亚洲国产精品成人久久综合一区| 色综合久久久久久久久| 成人高清在线视频| 久久免费美女视频| 久久爱www久久做| 经典一区二区三区| 丰满放荡岳乱妇91ww| 一本一本久久a久久精品综合麻豆| 不卡视频一二三| 在线观看国产91| 久久女同互慰一区二区三区| 中文字幕一区二区5566日韩| 经典三级一区二区| 欧美日韩成人一区| 亚洲一区二区视频在线| 99精品欧美一区二区三区综合在线| 欧美一级高清片| 人妖欧美一区二区| 欧美日韩在线电影| 亚洲午夜免费电影| 欧美性猛片xxxx免费看久爱| 成人av小说网| 在线观看网站黄不卡| kk眼镜猥琐国模调教系列一区二区| 亚洲精品一二三四区| 日韩高清一级片| 国产精品一区二区在线播放| 成人免费视频网站在线观看| 日本丶国产丶欧美色综合| 日韩亚洲欧美高清| 国产精品18久久久久久久久久久久| 国产目拍亚洲精品99久久精品| 91麻豆国产福利精品| 91麻豆精品国产91久久久| 久久噜噜亚洲综合| 亚洲午夜在线电影| 日韩视频在线观看一区二区| 日韩欧美中文字幕一区| 中文字幕制服丝袜一区二区三区| 亚洲大片免费看| 丁香啪啪综合成人亚洲小说 | 欧美日韩国产成人在线免费| 久久色中文字幕| 亚洲mv大片欧洲mv大片精品| 成人午夜精品一区二区三区| 日韩视频免费观看高清完整版在线观看| 国产精品毛片高清在线完整版| 日产欧产美韩系列久久99| 99久久99久久精品免费看蜜桃| 日韩免费看的电影| 亚洲1区2区3区4区| 色综合久久综合网欧美综合网| 久久综合色8888| 香港成人在线视频| 一本一道久久a久久精品| 国产区在线观看成人精品| 蜜臀久久99精品久久久久久9| 91激情在线视频| 亚洲视频每日更新| 国产91清纯白嫩初高中在线观看| 日韩欧美国产一区二区在线播放| 一区二区国产视频| 99re视频精品| 国产精品午夜久久| 国产福利一区二区三区视频| 精品国产一二三区| 美女高潮久久久| 3751色影院一区二区三区| 亚洲国产另类精品专区| 一本色道久久综合亚洲91| 国产精品卡一卡二| 北条麻妃国产九九精品视频| 国产日韩精品一区| 懂色av一区二区在线播放| 欧美激情综合五月色丁香| 国产精品羞羞答答xxdd| 久久精品亚洲麻豆av一区二区| 久久69国产一区二区蜜臀| 欧美一区二区三区在线电影| 日韩电影在线看| 日韩欧美二区三区| 久热成人在线视频| 亚洲精品在线观看网站| 精品一区二区三区免费毛片爱| 日韩精品最新网址| 久久99精品久久只有精品| 2021国产精品久久精品| 国产毛片一区二区| 久久久久久97三级| 成人黄色片在线观看| 国产精品视频第一区| 色乱码一区二区三区88| 亚洲综合图片区| 欧美日韩国产一二三| 秋霞成人午夜伦在线观看| www激情久久| 成人激情午夜影院| 综合分类小说区另类春色亚洲小说欧美 | 这里是久久伊人| 久久国内精品自在自线400部| 欧美精品一区二区精品网| 99久久99久久精品免费看蜜桃| 日本vs亚洲vs韩国一区三区二区| 欧美一区二区三区视频免费| 另类调教123区| 日本一区二区三区四区| 91丨porny丨户外露出| 亚洲成av人综合在线观看| 日韩一区二区精品| 国v精品久久久网| 亚洲国产一区在线观看| 欧美一区二区视频在线观看| 国产福利电影一区二区三区| 中文字幕综合网| 欧美日韩亚洲高清一区二区| 老司机免费视频一区二区| 中文字幕精品一区二区三区精品| 91搞黄在线观看| 伦理电影国产精品| 成人免费在线播放视频| 在线播放日韩导航| 风间由美一区二区av101| 亚洲妇女屁股眼交7| wwwwww.欧美系列| 欧美色图第一页| 国产suv精品一区二区6| 亚洲电影一区二区三区| 久久精品一区四区| 欧美日韩国产成人在线免费| 国产成人在线视频网站| 同产精品九九九| 国产香蕉久久精品综合网| 欧美三级视频在线观看| 国产成人亚洲精品青草天美| 亚洲一级二级在线| 国产精品素人视频| 欧美一区二区高清| 色综合色狠狠天天综合色| 久久www免费人成看片高清| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品久久久久三级| 欧美一区二区三区在线观看视频 | 狠狠色伊人亚洲综合成人| 一二三区精品视频| 国产欧美日韩另类一区| 日韩三级.com| 精品视频全国免费看| 成人福利视频在线看|