#include "common.h" #pragma hdrstop extern HINSTANCE hInst; #define MAXLBUTS 32 LBUTOPT LBUTS[MAXLBUTS]; static int LButCnt=0; extern char *AS(char *str,const char *setting,char *addstr); //wparam i; INT_PTR LaunchService(WPARAM wParam,LPARAM lParam) { PROCESS_INFORMATION pi; STARTUPINFO si={0}; si.cb=sizeof(si); if ((lParam<0)||(lParam>=MAXLBUTS)){return(-1);}; if(CreateProcess(NULL,LBUTS[lParam].lpath,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) { CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } Sleep(20); CallService(MS_TTB_SETBUTTONSTATE,LBUTS[lParam].hframe,TTBST_RELEASED); return(0); }; //wparam -id //lparam &LBTOPT INT_PTR GetLButton(WPARAM wParam,LPARAM lParam) { LBUTOPT *lbo=lParam; if ((wParam<0)||(wParam>=MAXLBUTS)){return(-1);}; if (lbo==NULL){return(-1);}; if (LBUTS[wParam].hframe==0){return(-1);}; *lbo=LBUTS[wParam]; return(0); }; //wparam -id //lparam &LBTOPT INT_PTR ModifyLButton(WPARAM wParam,LPARAM lParam) { LBUTOPT *lbo=lParam; if ((wParam<0)||(wParam>=LButCnt)){return(-1);}; if (lbo==NULL){return(-1);}; if (LBUTS[wParam].hframe==0){return(-1);}; DeleteLBut(wParam,0); if (LBUTS[wParam].lpath!=NULL){free(LBUTS[wParam].lpath);}; if (LBUTS[wParam].name!=NULL){free(LBUTS[wParam].name);}; LBUTS[wParam].name=NULL; LBUTS[wParam].lpath=NULL; if (lbo->name!=NULL){LBUTS[wParam].name=_strdup(lbo->name);}; if (lbo->lpath!=NULL){LBUTS[wParam].lpath=_strdup(lbo->lpath);}; LBUTS[wParam].hframe=InsertLBut(wParam); SaveAllLButs(); return(0); }; int InsertLBut(int id) { TTBButton ttb; HBITMAP DefLUp; HBITMAP DefLDn; DefLDn=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_LAUNCHDN)); DefLUp=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_LAUNCHUP)); //itoa(SeparatorCnt++,buf,10); //wsprintf(buf,"%s %d",Translate("Separator"),id); memset(&ttb,0,sizeof(ttb)); ttb.cbSize=sizeof(ttb); ttb.hbBitmapDown=DefLDn; ttb.hbBitmapUp=DefLUp; ttb.dwFlags=TTBBF_VISIBLE|TTBBF_ISLBUTTON; ttb.pszServiceDown=TTB_LAUNCHSERVICE; //ttb.pszServiceUp=TTB_LAUNCHSERVICE; ttb.lParamDown=id; ttb.name=LBUTS[id].name; LButCnt++; return(TTBAddButton(&ttb,0)); }; INT_PTR DeleteLBut(WPARAM id,LPARAM lParam) { if (LBUTS[id].hframe!=0) { TTBRemoveButton(LBUTS[id].hframe,0); LBUTS[id].hframe=0; if (LBUTS[id].name!=NULL){free(LBUTS[id].name);}; if (LBUTS[id].lpath!=NULL){free(LBUTS[id].lpath);}; LBUTS[id].name=NULL; LBUTS[id].lpath=NULL; LButCnt--; }; return(0); }; int LoadAllLButs() { char buf[255]; char buf1[10]; char fixname[255]; int id,i; // char *oldtb; //must be locked memset(buf,0,sizeof(buf)); memset(LBUTS,0,sizeof(LBUTS)); for (i=0;i