📄 sharewareluncher.c
字号:
#include <user\dlg.h>#include <cpl.h>#include <dde.h>#include "resource.h"#include "sharewareluncher.h"#include "time1.h"#include "tab.h"#define MYWM_EXEACT (WM_USER+112)#define RUN_MIN 0#define RUN_UNINSTALL 1#define RUN_CLOSE 2#define RUN_EXE 3typedef struct tagcool{ int idx;
}COOLITEM,*LPCOOLITEM;HDDEDATA CALLBACK DdeCallBack(UINT uType,UINT uFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,DWORD dwData1,DWORD dwData2);void ExeAction(LPSTR);int Runit(BOOL);void MakeShortcut(void);void Uninstall(BOOL bSysOnly);void MakeUninstallLnk(BOOL);void Getcmd(void);BOOL CALLBACK APIENTRY QuitProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam);BOOL VRHD(void);void RegCancelSubst(void);BOOL CancelSubst(void);extern int CutCmdLine(LPSTR s);HINSTANCE hInst;HBITMAP hbmMain,hbmSysButton,hbmAct,hbmClock,hbmBkg;RECT Size;BUTTONPOS bsSys[]={{0,206,8,16,14,0,0,TRUE},{1,240,8,16,14,16,0,TRUE}};BUTTONPOS bsSysOrg[]={{0,206,8,16,14,206,8,TRUE},{1,240,8,16,14,240,8,TRUE}};BUTTONPOS bsAct[]={{0,24,209,45,21,0,0,TRUE},{1,88,209,45,21,0,21,TRUE},{2,154,209,45,21,0,42,TRUE}};BUTTONPOS bsActPushed[]={{0,24,209,45,21,45,0,TRUE},{1,88,209,45,21,45,21,TRUE},{2,154,209,45,21,45,42,TRUE}};BUTTONPOS bsActOrg[]={{0,24,209,45,21,24,209,TRUE},{1,88,209,45,21,88,209,TRUE},{2,154,209,45,21,154,209,TRUE}};char szErrr[300];extern char szErr[256];BOOL bInTarget=FALSE,bHold=FALSE,bHoldInAct=FALSE,InReady=TRUE,bInAct=FALSE;int i,iSysNo=-1,nActNo=-1,iActNo=-1;HMENU hmenu;HMENU hmenuTrackPopup;BOOL bSetAuto=FALSE,bRunMin=FALSE;DWORD dwThreadId=0,dwKlockId=1;extern APPINFO aiAppInfo[50];HWND hMainWnd;BOOL bMined=FALSE,bQuit=FALSE,bDlgRuned=FALSE;TIMERINFO ti[10];extern int nAlarmEveryHour,nDlgflag;extern int nAppNum;extern BOOL bSheet;extern HWND hSheetWnd;extern HBITMAP hbmHHour[3],hbmLHour[10],hbmHMin[6],hbmLMin[10];extern HBITMAP hbmHSec[6],hbmLSec[10],hbmClockBkg;HANDLE hTimeSecWnd;BOOL bHelp=FALSE,bVerChanged=FALSE;/////////flag of vrhd////////BOOL IsVRHD=FALSE; //=true,drive a: is virtual floppy disk/////DDE diclare///////////DWORD idInst=0;char szDdeTitle[]="sharewareluncher";HSZ hszAppName;HCONV hConv;char szCommand[300];int nRunflag;//////////////////////////extern HWND hBaseWnd;extern HWND hListAppWnd,hAddWnd;char szRunCommand[300];BOOL bAddExe=FALSE,bCreateLink=FALSE;char cmd[MAX_PATH];///////cool menu//////////DRAWITEMSTRUCT dis;COOLITEM ci[50];int nOldSel=-1,nSel=-1;HICON hicon[50];HWND hQuitWnd=NULL; //标记“退出”对话框已显示,不能显示多个相同对话框BOOL InitApplication(HINSTANCE hInstance){ WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (long (FAR PASCAL*)())MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPICON)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL;//"NINJA"; // Name of menu resource in .RC file. wc.lpszClassName = "MyApp"; // Name used in call to CreateWindow. return (RegisterClass(&wc));}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ HWND hWnd; hWnd = CreateWindowEx( 0,//WS_EX_TOOLWINDOW, "MyApp", "共享软件程序发射器", WS_POPUP,//|WS_SIZEBOX, (Size.right-265)/2, (Size.bottom-240)/2, 265,// Default width. 240,// Default height. NULL, NULL,// Use the window class menu. hInstance, NULL ); if (!hWnd) return (FALSE); //ShowOwnedPopups(hWnd,TRUE); if(bRunMin) ShowWindow(hWnd,SW_MINIMIZE); else ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return (TRUE);}#pragma argsusedint APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hNull,LPSTR lpCmdLine, int nCmdShow){ MSG msg; hInst=hInstance; if(strcmp(lpCmdLine,"\0")==0) nRunflag=RUN_CLOSE; else if(strcmp(lpCmdLine,"/u")==0) nRunflag=RUN_UNINSTALL; else { if(strcmp(lpCmdLine,"/s")==0) { bRunMin=TRUE; nRunflag=RUN_MIN; } else { bRunMin=FALSE; nRunflag=RUN_EXE; } } GetWindowRect(GetDesktopWindow(),&Size); if (!InitApplication(hInstance)) return (FALSE); if(DdeInitialize(&idInst,(PFNCALLBACK)DdeCallBack, APPCMD_FILTERINITS|CBF_SKIP_CONNECT_CONFIRMS|CBF_FAIL_SELFCONNECTIONS|CBF_FAIL_POKES,0)) return (FALSE); hszAppName=DdeCreateStringHandle(idInst,szDdeTitle,0); DdeNameService(idInst,hszAppName,0,DNS_REGISTER); hConv=DdeConnect(idInst,hszAppName,hszAppName,NULL); if(hConv!=NULL) { switch(nRunflag) { case RUN_CLOSE: wsprintf(szCommand,"Restore"); break; case RUN_UNINSTALL: if(MessageBox(GetFocus(),"即将删除本软件在注册表中登记的内容,你以前的设置均会无用,继续吗?", "清除发射器设置",MB_YESNO | MB_ICONWARNING)==IDNO) { nRunflag=RUN_CLOSE; wsprintf(szCommand,"Restore"); } else wsprintf(szCommand,"Uninstall"); break; case RUN_EXE: wsprintf(szCommand,lpCmdLine); break; default: wsprintf(szCommand,"\0"); } if(nRunflag==RUN_UNINSTALL) { if(DdeClientTransaction((LPBYTE)szCommand,strlen(szCommand)+1,hConv,0,0,XTYP_EXECUTE,TIMEOUT_ASYNC,NULL)) //if(DdeGetLastError(idInst)==DMLERR_SERVER_DIED) { DdeNameService(idInst,hszAppName,0,DNS_UNREGISTER); DdeUninitialize(idInst); Uninstall(FALSE); return 0L; } } if(!DdeClientTransaction((LPBYTE)szCommand,strlen(szCommand)+1,hConv,0,0,XTYP_EXECUTE,6000,NULL)) { switch(DdeGetLastError(idInst)) { case DMLERR_BUSY: DdeClientTransaction((LPBYTE)szCommand,strlen(szCommand)+1,hConv,0,0,XTYP_EXECUTE,6000,NULL); break; } } DdeNameService(idInst,hszAppName,0,DNS_UNREGISTER); DdeUninitialize(idInst); return 0L;//(FALSE); } else { if(nRunflag==RUN_UNINSTALL) { if(MessageBox(GetFocus(),"即将删除本软件在注册表中登记的内容,你以前的设置均会无用,继续吗?", "清除发射器设置",MB_YESNO | MB_ICONWARNING)==IDYES) { Uninstall(FALSE); return 0L; } } if(nRunflag==RUN_CLOSE) bRunMin=FALSE; else bRunMin=TRUE; wsprintf(szRunCommand,lpCmdLine); } hbmMain=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_MAIN)); hbmSysButton=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_SYSBUTTON)); hbmAct=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_ACT)); hbmClock=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_NUM)); hbmBkg=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BKG)); if (!InitInstance(hInstance, nCmdShow)) {// DdeUninitialize(idInst); return (FALSE); } if( NOERROR != OleInitialize(NULL)) return FALSE; while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } OleUninitialize() ; return (msg.wParam);}#pragma argsusedLRESULT APIENTRY MainWndProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam){ HDC hDC,hMemDC; PAINTSTRUCT ps; hMainWnd=hWnd; switch(uMsg) { case WM_CREATE:// SetCursor(LoadCursor(hInst,IDC_ARROW)); { int i; for(i=0;i<10;i++) { ti[i].wHour=0; ti[i].wMinute=0; ti[i].nflag=0; wsprintf(ti[i].szInfo,"\0"); } } hDC=GetDC(hWnd); hMemDC=CreateCompatibleDC(hDC); SelectObject(hMemDC,hbmMain); BitBlt(hDC,0,0,265,240,hMemDC,0,0,SRCCOPY); DeleteDC(hMemDC); ReleaseDC(hWnd,hDC); PutToTaskBar(hWnd,0,LoadIcon(hInst,MAKEINTRESOURCE(IDI_APPICON)),"共享软件程序发射器"); InitTimeBmp(hWnd); hmenu = LoadMenu(hInst, MAKEINTRESOURCE(IDM_POPUP)); if (hmenu)
hmenuTrackPopup = GetSubMenu(hmenu, 0);
CheckReg(); Getcmd(); if(bSetAuto) { REGVALINFO ri; char sztemp[MAX_PATH]; ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)"通过发射器创建快捷方式";
ri.cbData=30; RegSetGroupVal(HKEY_CLASSES_ROOT,"exefile\\shell\\ShortcutfromLuncher",1,&ri); RegSetGroupVal(HKEY_CLASSES_ROOT,"scrfile\\shell\\ShortcutfromLuncher",1,&ri); ri.szValName=NULL;//"DisplayName"; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)"通过发射器启动";
ri.cbData=20;
RegSetGroupVal(HKEY_CLASSES_ROOT,"exefile\\shell\\AddtoLuncher",1,&ri); RegSetGroupVal(HKEY_CLASSES_ROOT,"scrfile\\shell\\AddtoLuncher",1,&ri); ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)"虚拟软驱";
ri.cbData=10; RegSetGroupVal(HKEY_CLASSES_ROOT,"Directory\\shell\\sharewareluncher.vrhd",1,&ri); wsprintf(sztemp,cmd); strcat(sztemp," -create %1"); ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)sztemp;
ri.cbData=MAX_PATH; RegSetGroupVal(HKEY_CLASSES_ROOT,"exefile\\shell\\ShortcutfromLuncher\\command",1,&ri); RegSetGroupVal(HKEY_CLASSES_ROOT,"scrfile\\shell\\ShortcutfromLuncher\\command",1,&ri); wsprintf(sztemp,cmd); strcat(sztemp," -add %1"); ri.szValName=NULL;//"DisplayName"; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)sztemp;
ri.cbData=MAX_PATH;
RegSetGroupVal(HKEY_CLASSES_ROOT,"exefile\\shell\\AddtoLuncher\\command",1,&ri); RegSetGroupVal(HKEY_CLASSES_ROOT,"scrfile\\shell\\AddtoLuncher\\command",1,&ri); wsprintf(sztemp,cmd); strcat(sztemp," -vrhd %1"); ri.szValName=NULL; ri.dwType=REG_SZ;
ri.lpData=(LPBYTE)sztemp;
ri.cbData=MAX_PATH; RegSetGroupVal(HKEY_CLASSES_ROOT,"Directory\\shell\\sharewareluncher.vrhd\\command",1,&ri); SetAutoRun("Sharewareluncher","/s",TRUE); MakeUninstallLnk(TRUE); ChangeShortcut(); } if(bVerChanged) { bVerChanged=FALSE; SetAutoRun("Sharewareluncher","/s",TRUE); Uninstall(TRUE); } hTimeSecWnd=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TimeThread,0,0,&dwThreadId); CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)KlockThread,0,0,&dwKlockId); RemapMenu(); GetAllIcon(); if(nRunflag==RUN_EXE) ExeAction(szRunCommand); break; case WM_MEASUREITEM: MeasureItem(lParam); break; case WM_DRAWITEM: DrawItem((LPDRAWITEMSTRUCT)lParam); break; case WM_MENUSELECT: if(LOWORD(wParam)!=0) { nOldSel=nSel; nSel=LOWORD(wParam); SendMessage(hWnd,WM_DRAWITEM,nSel,(LPARAM)&dis); nSel=-1; } return 0; case WM_PAINT: hDC=BeginPaint(hWnd,&ps); hMemDC=CreateCompatibleDC(hDC); SelectObject(hMemDC,hbmMain); BitBlt(hDC,0,0,265,240,hMemDC,0,0,SRCCOPY); DeleteDC(hMemDC); EndPaint(hWnd,&ps); ShowTime(hWnd); break; case MYWM_TIMEUP: TimeUp(hWnd,(int)wParam); break; case MYWM_EXEACT: ExeAction((LPSTR)lParam); break; case MYWM_ICON: switch(lParam) { case WM_LBUTTONDOWN: ShowWindow(hWnd,SW_RESTORE); SetForegroundWindow(hWnd); break; case WM_RBUTTONUP: { POINT pt;
SetForegroundWindow(hWnd);
SetActiveWindow(hWnd);
GetCursorPos(&pt);
TrackPopupMenuEx(hmenuTrackPopup,
TPM_LEFTALIGN | TPM_TOPALIGN | // default values
TPM_HORIZONTAL | TPM_LEFTBUTTON | // equivalent to 0
TPM_RIGHTBUTTON, // Right selection
pt.x, pt.y,
hWnd,
NULL);
//DestroyMenu(hmenu);
} break; } break; case WM_SIZE: if(wParam==SIZE_MINIMIZED) { bMined=TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -