Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Sharewareluncher.c
Package: sharewareluncher.zip [view]
Upload User: sales84
Upload Date: 2007-01-11
Package Size: 864k
Code Size: 36k
Category:
SourceCode/Document
Development Platform:
Visual C++
- #include <userdlg.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 3 typedef 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 argsused int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hNull,LPSTR lpCmdLine, int nCmdShow) { MSG msg; hInst=hInstance; if(strcmp(lpCmdLine,"")==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,""); } 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 argsused LRESULT 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,""); } } 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; ShowWindow(hWnd,SW_SHOWMINIMIZED);//SW_HIDE); SetWindowPos(hWnd, HWND_TOP, 0, 0, 265, 240, SWP_NOMOVE | SWP_NOSIZE | SWP_HIDEWINDOW) ; SuspendThread(hTimeSecWnd); } else { bMined=FALSE; ResumeThread(hTimeSecWnd); } break; case WM_LBUTTONDOWN: if(HIWORD(lParam)<25) { if(LOWORD(lParam)<25) { RECT rc; GetWindowRect(hWnd,&rc); TrackPopupMenuEx(hmenuTrackPopup, TPM_LEFTALIGN | TPM_TOPALIGN | // default values
- TPM_HORIZONTAL | TPM_LEFTBUTTON | // equivalent to 0
- TPM_RIGHTBUTTON, // Right selection
- rc.left, rc.top+25,
- hWnd,
- NULL); break; } i=JudgePoint(lParam,2,bsSys); switch(i) { case -1: EasyMove(hWnd); break; case 0: ShowPush(hWnd,hbmSysButton,0,bsSys[i]); bHold=TRUE; bInTarget=TRUE; iSysNo=0; break; case 1: ShowPush(hWnd,hbmSysButton,0,bsSys[i]); bHold=TRUE; bInTarget=TRUE; iSysNo=1; break; } } if(HIWORD(lParam)>208) { if(InReady) break; i=JudgePoint(lParam,3,bsAct); switch(i) { case -1: break; case 0: ShowPush(hWnd,hbmAct,0,bsActPushed[0]); bHoldInAct=TRUE; bInAct=TRUE; iActNo=0; break; case 1: ShowPush(hWnd,hbmAct,0,bsActPushed[1]); bHoldInAct=TRUE; bInAct=TRUE; iActNo=1; break; case 2: ShowPush(hWnd,hbmAct,0,bsActPushed[2]); bHoldInAct=TRUE; bInAct=TRUE; iActNo=2; break; } } break; case WM_MOUSEMOVE: if(!bHold && !bHoldInAct) { i=JudgePoint(lParam,3,bsAct); if(i!=nActNo && InReady && i!=-1) { ShowPush(hWnd,hbmAct,0,bsAct[i]); InReady=FALSE; nActNo=i; } else if(i!=nActNo) { ShowPush(hWnd,hbmMain,0,bsActOrg[nActNo]); if(i!=-1) { ShowPush(hWnd,hbmAct,0,bsAct[i]); InReady=FALSE; } else InReady=TRUE; nActNo=i; } break; } if(bHoldInAct) { i=JudgePoint(lParam,3,bsAct); if(i!=iActNo && bInAct) { ShowPush(hWnd,hbmMain,0,bsActOrg[iActNo]); bInAct=FALSE; } else if(i==iActNo) { ShowPush(hWnd,hbmAct,0,bsActPushed[i]); bInAct=TRUE; } } if(bHold) { i=JudgePoint(lParam,2,bsSys); if(i!=iSysNo && bInTarget) { ShowPush(hWnd,hbmMain,0,bsSysOrg[iSysNo]); bInTarget=FALSE; } else if(i==iSysNo) { ShowPush(hWnd,hbmSysButton,0,bsSys[i]); bInTarget=TRUE; } } break; case WM_LBUTTONUP: if(HIWORD(lParam)>208) { i=JudgePoint(lParam,3,bsAct); if(i!=-1 && bInAct) { switch(i) { case 0: ShowPush(hWnd,hbmAct,0,bsAct[0]); ShowWindow(hWnd,SW_MINIMIZE); break; case 1: ShowPush(hWnd,hbmAct,0,bsAct[1]); CreatePropertySheet(hWnd); break; case 2: ShowPush(hWnd,hbmAct,0,bsAct[2]); nDlgflag=-99; bHelp=TRUE; DialogBox(hInst,MAKEINTRESOURCE(IDD_SHOWHELP),hWnd,(DLGPROC)DlgHelpProc); break; } } } else if(HIWORD(lParam)<25) { i=JudgePoint(lParam,2,bsSys); if(i!=-1 && bInTarget) { switch(i) { case 0: ShowPush(hWnd,hbmMain,0,bsSysOrg[i]); ShowWindow(hWnd,SW_MINIMIZE); break; case 1: ShowPush(hWnd,hbmMain,0,bsSysOrg[i]); ShowWindow(hWnd,SW_MINIMIZE); break; } } } bHoldInAct=bInAct=bHold=bInTarget=FALSE;; iActNo=iSysNo=-1; break; case WM_RBUTTONDOWN: if(HIWORD(lParam)>24 && JudgePoint(lParam,3,bsAct)==-1) { POINT pt;
- 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); } break ; case WM_COMMAND: switch(wParam) { case CM_SETCLOCK: RunControlPanel("timedate.cpl"); break; case CM_ADD: if(!bDlgRuned && !bSheet) DialogBox(hInst,MAKEINTRESOURCE(IDD_LIST),hWnd,(DLGPROC)ListWndProc); else if(bSheet) { PropSheet_SetCurSel(hSheetWnd,NULL,1); } break; case CM_QUIT: if(hQuitWnd==NULL) if(DialogBox(hInst,MAKEINTRESOURCE(IDD_QUIT),hWnd,(DLGPROC)QuitProc)) SendMessage(hWnd,WM_DESTROY,0,0); break; default: if((int)wParam<11000 && (int)wParam>11050) break; if(!Lunch(hWnd,(int)wParam-11000)) { wsprintf(szErrr,"不能启动"%s"程序,请检查程序设置",aiAppInfo[(int)wParam-11000].szAppName); Errmsg(szErrr); } break; } break; case WM_TIMER: DoTimer(hWnd,(UINT)wParam); break; case WM_DESTROY: case WM_QUERYENDSESSION: if(hBaseWnd!=NULL) SendMessage(hBaseWnd,WM_CLOSE,0,0); DdeNameService(idInst,hszAppName,0,DNS_UNREGISTER); DdeUninitialize(idInst); DelTempTimer(); bQuit=TRUE; DelFromTaskBar(hWnd,0,"共享软件程序发射器"); DeleteObject(hbmAct); DeleteObject(hbmClock); DeleteObject(hbmMain); DeleteObject(hbmSysButton); DeleteObject(hbmBkg); { int n; for(n=0;n<3;n++) DeleteObject(hbmHHour[i]); for(n=0;n<10;n++) { DeleteObject(hbmLHour[i]); DeleteObject(hbmLMin[i]); DeleteObject(hbmLSec[i]); } for(n=0;n<6;n++) { DeleteObject(hbmHMin[i]); DeleteObject(hbmHSec[i]); } DeleteObject(hbmClockBkg); for(n=0;n<nAppNum;n++) DestroyIcon(hicon[n]); } DestroyMenu(hmenu); PostQuitMessage(0); default: return (DefWindowProc(hWnd,uMsg,wParam,lParam)); } return 0L; } BOOL InFloppyDisk(int a) { LPTSTR CmdLine1;
- char aa[5];
- CmdLine1=GetCommandLine();
- if((CmdLine1[1]=='a' || CmdLine1[1]=='A' || CmdLine1[1]=='b' || CmdLine1[1]=='B') && CmdLine1[2]==':')
- {
- if(a==0)
- MessageBox(GetFocus(),"你正在软盘上运行程序,请先拷贝到硬盘上再执行,n
- 否则程序在下次Windows启动时不能自动执行,闹钟功能无法使用。",
- "警告",MB_OK | MB_ICONWARNING);
- return TRUE;
- }
- aa[0]=CmdLine1[1];aa[1]=CmdLine1[2];aa[2]=CmdLine1[3];aa[3]='';//CmdLine[1];
- if(GetDriveType(aa)==DRIVE_CDROM)
- {
- if(a==0)
- MessageBox(GetFocus(),"你正在光盘上运行程序,请先拷贝到硬盘上再执行,n
- 否则程序在下次Windows启动时不能自动执行,闹钟功能无法使用。",
- "警告",MB_OK | MB_ICONWARNING);
- return TRUE;
- }
- return FALSE;
- } #pragma argsused HDDEDATA CALLBACK DdeCallBack(UINT uType,UINT uFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,DWORD dwData1,DWORD dwData2) { LPBYTE pData; DWORD dwLength; switch(uType) { case XTYP_CONNECT: return (HDDEDATA)TRUE;//break; case XTYP_EXECUTE: pData=DdeAccessData(hData,&dwLength); if(strcmp((LPSTR)pData,"Restore")==0) { ShowWindow(hMainWnd,SW_RESTORE); SetForegroundWindow(hMainWnd); } else if(strcmp((LPSTR)pData,"Uninstall")==0) { PostMessage(hMainWnd,WM_DESTROY,0,0); return (HDDEDATA)TRUE;//break; } else if(strcmp((LPSTR)pData,"")==0) break; else PostMessage(hMainWnd,MYWM_EXEACT,0,(LPARAM)pData);//ExeAction((LPSTR)pData); return (HDDEDATA)0; } return (HDDEDATA)0; } void ExeAction(LPSTR s) { int i; if(s[0]=='-' && s[1]=='a' && s[2]=='d' && s[3]=='d') { POINT pt; i=0; GetCursorPos(&pt); while(s[i+5]!='') { szRunCommand[i]=s[i+5]; i++; } szRunCommand[i]=''; if(Runit(TRUE)!=-1) return; bAddExe=TRUE; if(!bDlgRuned && !bSheet) SendMessage(hMainWnd,WM_COMMAND,CM_ADD,0); else { PropSheet_SetCurSel(hSheetWnd,NULL,1); SetWindowPos(hListAppWnd,HWND_TOPMOST,pt.x,pt.y,0,0,SWP_NOSIZE); if(hAddWnd==NULL) SendMessage(hListAppWnd,WM_COMMAND,(WPARAM)IDOK,0); else SendMessage(hListAppWnd,MYWM_TIMEUP,0,0); //MYWM_TIMEUP 为临时借用 } } else if(s[0]=='-' && s[1]=='c' && s[2]=='r' && s[3]=='e' && s[4]=='a' && s[5]=='t' && s[6]=='e') { i=0; while(s[i+8]!='') { szRunCommand[i]=s[i+8]; i++; } szRunCommand[i]=''; bCreateLink=TRUE; MakeShortcut(); } else if(s[0]=='-' && s[1]=='v' && s[2]=='r' && s[3]=='h' && s[4]=='d') { i=0; while(s[i+6]!='') { szRunCommand[i]=s[i+6]; i++; } szRunCommand[i]=''; VRHD(); } else if(s[0]=='-' && s[1]=='n' && s[2]=='o' && s[3]=='v' && s[4]=='r' && s[5]=='h' && s[6]=='d') { CancelSubst(); } else if(s[0]=='-' && s[1]=='r' && s[2]=='u' && s[3]=='n') { i=0; while(s[i+5]!='') { szRunCommand[i]=s[i+5]; i++; } szRunCommand[i]=''; Runit(TRUE); } else { wsprintf(szRunCommand,s); SendToHD(); } } BOOL VRHD(void) { STARTUPINFO si; BOOL flag;
- PROCESS_INFORMATION PInfo;
- char szCommandLine[400];
- char szShortPath[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;
- 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
- );
- }
- GetShortPathName(szRunCommand,szShortPath,MAX_PATH);
- wsprintf(szCommandLine,"subst a: %s",szShortPath);
- 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
- );
- 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]='';
- 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]='';
- break;
- }
- } } #pragma argsused BOOL 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; } */