📄 sharewareluncher.c
字号:
si.cb = sizeof(si);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_HIDE;
flag=CreateProcess(
0, // lpszImageName
szCommandLine, //SzCmdLine,
0, // lpsaProcess
0, // lpsaThread
FALSE, // fInheritHandles
CREATE_DEFAULT_ERROR_MODE,//DEBUG_ONLY_THIS_PROCESS, // fdwCreate
0, // lpvEnvironment
NULL, // lpszCurDir
&si,//tartupInfo, // lpsiStartupInfo
&PInfo // lppiProcInfo
);
if(!flag)
Errmsg("由于操作系统的限制,不能虚拟软驱。");
else
if(!IsVRHD)
{
RegCancelSubst();
IsVRHD=TRUE;
}
return flag;
}void RegCancelSubst(void){ REGVALINFO ri; char sztemp[MAX_PATH]; ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)"取消虚拟软驱";
ri.cbData=15; RegSetGroupVal(HKEY_CLASSES_ROOT,"Drive\\shell\\sharewareluncher.cancelvrhd",1,&ri); wsprintf(sztemp,cmd); strcat(sztemp," -novrhd %1"); ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)sztemp;
ri.cbData=MAX_PATH; RegSetGroupVal(HKEY_CLASSES_ROOT,"Drive\\shell\\sharewareluncher.cancelvrhd\\command",1,&ri); IsVRHD=TRUE;}BOOL CancelSubst(void){ STARTUPINFO si; BOOL flag;
PROCESS_INFORMATION PInfo; char szCommandLine[MAX_PATH]; if(GetDriveType("a:")!=DRIVE_REMOVABLE) {
wsprintf(szCommandLine,"subst a: /d");
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_HIDE;
flag=CreateProcess(
0, // lpszImageName
szCommandLine, //SzCmdLine,
0, // lpsaProcess
0, // lpsaThread
FALSE, // fInheritHandles
CREATE_DEFAULT_ERROR_MODE,//DEBUG_ONLY_THIS_PROCESS, // fdwCreate
0, // lpvEnvironment
NULL, // lpszCurDir
&si,//tartupInfo, // lpsiStartupInfo
&PInfo // lppiProcInfo
);
} IsVRHD=FALSE; RegDeleteKey(HKEY_CLASSES_ROOT,"Drive\\shell\\sharewareluncher.cancelvrhd"); return flag;}int Runit(BOOL flag){ int i; for(i=0;i<nAppNum;i++) { if(strcmpi(szRunCommand,aiAppInfo[i].szAppCmd)==0) { if(flag) Lunch(hMainWnd,i); return i;//TRUE; } } return -1;//FALSE;}void MakeShortcut(void){ int x; if((x=Runit(FALSE))!=-1) { char szTarget[300]; char szStartCmd[1000]; GetWindowsDirectory(szTarget,300); strcat(szTarget,"\\desktop\\"); strcat(szTarget,aiAppInfo[x].szAppName); strcat(szTarget,".lnk"); wsprintf(szStartCmd,"-run %s",szRunCommand); CreateShortcut(cmd,szStartCmd,NULL,szTarget,aiAppInfo[x].szAppName); } else { if(!bCreateLink) return; //bCreateLink=TRUE; if(!bDlgRuned && !bSheet) SendMessage(hMainWnd,WM_COMMAND,CM_ADD,0); else { PropSheet_SetCurSel(hSheetWnd,NULL,1); SendMessage(hListAppWnd,WM_COMMAND,(WPARAM)IDOK,0); } }}void Uninstall(BOOL bSysOnly){ HKEY hKey1;
DWORD dwDisposition;
if(!bSysOnly)
{
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,NULL,&hKey1,&dwDisposition);
RegDeleteValue(hKey1,"Sharewareluncher");
RegDeleteKey(HKEY_CLASSES_ROOT,"exefile\\shell\\ShortcutfromLuncher");
RegDeleteKey(HKEY_CLASSES_ROOT,"exefile\\shell\\AddtoLuncher");
RegDeleteKey(HKEY_CLASSES_ROOT,"scrfile\\shell\\ShortcutfromLuncher");
RegDeleteKey(HKEY_CLASSES_ROOT,"scrfile\\shell\\AddtoLuncher");
RegDeleteKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\phonix\\sharewareluncher");
RegDeleteKey(HKEY_CLASSES_ROOT,"Directory\\shell\\sharewareluncher.vrhd");
RegDeleteKey(HKEY_CLASSES_ROOT,"Drive\\shell\\sharewareluncher.cancelvrhd");
MakeUninstallLnk(FALSE);
DelShortcut();
}
else
{
MakeUninstallLnk(FALSE);
MakeUninstallLnk(TRUE);
}
}void MakeUninstallLnk(BOOL flag){ char szPath[MAX_PATH]; char szT[300],szS[300],szWinPath[MAX_PATH]; GetCurrentDirectory(MAX_PATH,szPath); GetWindowsDirectory(szWinPath,MAX_PATH); if(OSType()==NT) { wsprintf(szS,"%s\\profiles\\all users\\「开始」菜单\\程序",szWinPath); if(GetFileAttributes(szS)==0xffffffff) wsprintf(szS,"%s\\profiles\\all users\\start menu\\programs",szWinPath); strcat(szS,"\\共享软件程序发射器"); } else wsprintf(szS,"%s\\Start Menu\\Programs\\共享软件程序发射器",szWinPath); if(flag) { MkDir(szS); wsprintf(szT,"%s\\共享软件程序发射器.lnk",szS); CreateShortcut(cmd,NULL,szPath,szT,"共享软件程序发射器"); wsprintf(szT,"%s\\清除发射器设置.lnk",szS); CreateShortcut(cmd,"/u",szPath,szT,"清除发射器设置"); wsprintf(szT,"%s\\sendto\\共享软件程序发射器.lnk",szWinPath); CreateShortcut(cmd,NULL,szPath,szT,"共享软件程序发射器"); } else { wsprintf(szT,"%s\\共享软件程序发射器.lnk",szS); DeleteFile(szT); wsprintf(szT,"%s\\清除发射器设置.lnk",szS); DeleteFile(szT); RemoveDirectory(szS); wsprintf(szS,"%s\\sendto\\共享软件程序发射器.lnk",szWinPath); DeleteFile(szS); }}void Getcmd(void){ LPSTR xCmdLine; int i; xCmdLine=GetCommandLine();
if(xCmdLine[0]=='"') for(i=0;i<(int)strlen(xCmdLine)-2;i++) {
if(xCmdLine[i+1]!='"')
cmd[i]=xCmdLine[i+1];
else
{
cmd[i]='\0';
break;
}
} else for(i=0;i<(int)strlen(xCmdLine)-2;i++) {
if(xCmdLine[i]!=' ' && xCmdLine[i+1]!='-' && xCmdLine[i+1]!='/')
cmd[i]=xCmdLine[i];
else
{
cmd[i]='\0';
break;
}
}}#pragma argsusedBOOL CALLBACK APIENTRY QuitProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam){ switch(uMsg) { case WM_INITDIALOG: hQuitWnd=hWnd; CheckRadioButton(hWnd,IDC_QUIT,IDC_FORCEQUIT,IDC_QUIT); if(OSType()==NT) { HWND hw; hw=GetDlgItem(hWnd,IDHELP); EnableWindow(hw,FALSE); hw=GetDlgItem(hWnd,IDC_QUIT); EnableWindow(hw,FALSE); hw=GetDlgItem(hWnd,IDC_RESTART); EnableWindow(hw,FALSE); hw=GetDlgItem(hWnd,IDC_FORCEQUIT); EnableWindow(hw,FALSE); hw=GetDlgItem(hWnd,IDC_QUITSEL); EnableWindow(hw,FALSE); } break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hWnd,TRUE); return TRUE; case IDCANCEL: hQuitWnd=NULL; EndDialog(hWnd,FALSE); return FALSE; case IDHELP: //shut down EndDialog(hWnd,TRUE); if(IsDlgButtonChecked(hWnd,IDC_QUIT)==BST_CHECKED) ExitWindowsEx(EWX_SHUTDOWN,0); else if(IsDlgButtonChecked(hWnd,IDC_RESTART)==BST_CHECKED) ExitWindowsEx(EWX_REBOOT,0); else if(IsDlgButtonChecked(hWnd,IDC_FORCEQUIT)==BST_CHECKED) ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN,0); return TRUE; } break; case WM_CLOSE: hQuitWnd=NULL; EndDialog(hWnd,FALSE); return FALSE; } return FALSE;}void RemapMenu(void){
int nItem;
MENUITEMINFO mi;
ZeroMemory(&mi,sizeof(mi));
mi.cbSize=sizeof(mi);
mi.fMask=MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_TYPE; nItem = nAppNum;//GetMenuItemCount(hmenuTrackPopup);
while ((--nItem)>=0)
{
GetMenuItemInfo(hmenuTrackPopup,nItem,TRUE,&mi);
if (mi.wID != 0)
{
if (!(mi.fState&MF_OWNERDRAW) && !(mi.fState&MF_BITMAP))
{
ci[nItem].idx=mi.wID-11000;
ModifyMenu(hmenuTrackPopup,nItem,MF_BYPOSITION|MF_OWNERDRAW|mi.fState, mi.wID, (LPCTSTR)&ci[nItem]);
}
}
}
}void MeasureItem(LONG lParam){ LPMEASUREITEMSTRUCT lpm; //LPCOOLITEM lpci; lpm=(LPMEASUREITEMSTRUCT)lParam; if(lpm->CtlType == ODT_MENU) {
lpm->itemWidth=200;
lpm->itemHeight=20;
//lpci=(LPCOOLITEM)lpm->itemData;
}
}
void DrawItem(LPDRAWITEMSTRUCT lp)
{
LPCOOLITEM pItem;
if (lp->CtlType == ODT_MENU)
{
UINT id = lp->itemID;
dis=*lp; pItem = (LPCOOLITEM) lp->itemData;
if (pItem)
{
HDC hDC = lp->hDC;
RECT rc=lp->rcItem,rrc;
// HFONT hfnt, hOldFont;
if(id==(UINT)nSel)//wParam)
{
rrc=rc;
rrc.right=rrc.left+20;
if(id>=11000 && id<11050)
DrawIconEx(hDC,2,rrc.top+2,hicon[pItem->idx],16,16,0,NULL,DI_NORMAL);
DrawEdge(hDC,&rrc,BDR_RAISEDINNER,BF_RECT);
SetTextColor(hDC,(COLORREF)(GetSysColor(COLOR_HIGHLIGHTTEXT)));
SetBkColor(hDC,(COLORREF)(GetSysColor(COLOR_HIGHLIGHT)));
rc.left+=22;
FillRect(hDC,&rc,(HBRUSH)(COLOR_HIGHLIGHT+1));
// hfnt = GetStockObject(DEFAULT_GUI_FONT);
// hOldFont = SelectObject(hDC, hfnt);
// if(hOldFont)
// {
// TextOut(hDC,rc.left,rc.top,aiAppInfo[pItem->idx].szAppName,strlen(aiAppInfo[pItem->idx].szAppName));
DrawText(hDC,aiAppInfo[pItem->idx].szAppName,-1,&rc,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
// SelectObject(hDC, hOldFont);
// }
}
else if(id<11050)
{
rrc=rc;
rrc.right=rrc.left+20;
FillRect(hDC,&rrc,(HBRUSH)(COLOR_MENU+1));
if(id>=11000 && id<11050)
DrawIconEx(hDC,2,rrc.top+2,hicon[pItem->idx],16,16,0,NULL,DI_NORMAL);
rc.left+=22;
FillRect(hDC,&rc,(HBRUSH)(COLOR_MENU+1));
SetBkColor(hDC,(COLORREF)(GetSysColor(COLOR_MENU)));
DrawText(hDC,aiAppInfo[pItem->idx].szAppName,-1,&rc,DT_LEFT|DT_VCENTER);
}
}
}
}void GetAllIcon(void){ int i; WORD w=0; for(i=0;i<nAppNum;i++) { CutCmdLine(aiAppInfo[i].szAppCmd); hicon[i]=ExtractAssociatedIcon(hInst,szErr,&w); }}/*BOOL ViewHTM(LPSTR szHtmFileName){ STARTUPINFO si={0}; PROCESS_INFORMATION pi ; char szSysPath[MAX_PATH];//,szTemp[100]; si.cb = sizeof( STARTUPINFO) ; si.lpReserved = NULL ;
si.lpDesktop = NULL ;
si.lpTitle = NULL ;
si.dwX = 0 ;
si.dwY = 0 ;
si.dwXSize = 0 ;
si.dwYSize = 0 ;
si.dwXCountChars = 0 ;
si.dwYCountChars = 0 ;
si.dwFillAttribute = 0 ;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW ;
si.cbReserved2 = 0 ;
si.lpReserved2 = NULL ;
si.hStdInput = NULL;
si.hStdOutput = NULL;
si.hStdError = NULL;
//GetWindowsDirectory(szWinPath,MAX_PATH);
SetCurrentDirectory("c:\\Program Files\\Internet Explorer");//\\Iexplore.exe");//szWinPath);
//GetSystemDirectory(szTemp,MAX_PATH);
wsprintf(szSysPath,"c:\\temp\\web\\001.htm");//control.exe %s\\%s",szTemp,szCplName);
if( !CreateProcess( NULL,//"Iexplore.exe",//szWinPath,
"Iexplore.exe c:\\temp\\web\\001.htm",//szSysPath,//"control.exe c:pwin97systemtimedate.cpl",//szSysPath,
(LPSECURITY_ATTRIBUTES)NULL,
(LPSECURITY_ATTRIBUTES)NULL,
FALSE,
NORMAL_PRIORITY_CLASS,
NULL,
"c:\\Program Files\\Internet Explorer",//NULL,
&si,
&pi))
{ return FALSE;//Errmsg("fail to open 001.htm"); } return TRUE;} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -