int RefreshPluginMenu(int obj_id) { doc_class* doc=FindItem(obj_id,Items); if(doc->ReallyCreateMenu==1) { HBITMAP hBitmapChecked = NULL; char* way=GetApplicationDir(); CString pic; pic.Append(way); delete(way); pic.Append("\\pic\\application"); SetCurrentDirectory(pic); if(FindProc(doc->app)) pic="run.bmp"; else pic="stop.bmp"; if(doc->pic!=NULL)DeleteObject(doc->pic); doc->pic = (HBITMAP)LoadImage(NULL,pic, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_SHARED); pic.ReleaseBuffer(); SetMenuItemBitmaps(doc->hMenu, obj_id*1000+1, MF_BYCOMMAND, doc->pic, doc->pic); EnableMenuItem(doc->hMenu, obj_id*1000+1,(MF_BYCOMMAND+MF_GRAYED)); EnableMenuItem(doc->hMenu, obj_id*1000+1,(MF_BYCOMMAND+MF_ENABLED)); } return 1; }
//Load app. icon BOOL CTray::LoadAppIcon() { // Load icon from resource char* way=GetApplicationDir(); CString dir; dir.Append(way); // dir.Append("\\"); dir.Append("pic"); SetCurrentDirectory(dir); this->hIcon=(HICON)LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE); //this->hIcon = (HICON)LoadImage(NULL, "app.ico", IMAGE_ICON, 0, 0,LR_LOADFROMFILE); //HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(APP_ICON), // IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR); if (hIcon) { // Associate icon to the app. //SendMessage(hwnd, WM_SETICON, WPARAM (ICON_SMALL), LPARAM (hIcon));// App. icon SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon); SendMessage(hwnd, WM_SETICON, WPARAM (ICON_BIG), LPARAM (hIcon)); //ALT+TAB icon return true; } else MessageBox(hwnd, "Could not load small icon!", "Error", MB_OK | MB_ICONERROR); return false; }
//Set bitmaps for popup menu items void CTray::SetBitmaps(HMENU hMenu) { //Checked item bitmap // HBITMAP hBitmapChecked = LoadBitmap((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDB_MENU_CHECK)); // SetMenuItemBitmaps(hMenu, IDM_ONTOP, MF_BYCOMMAND, NULL/*hBitmapUnchecked*/,hBitmapChecked); //Close bitmap //hBitmapChecked = LoadBitmap((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE), // MAKEINTRESOURCE(IDB_MENU_CLOSE)); ///////////////////////// //LPCTSTR szFilename; //ASSERT(szFilename); //DeleteObject(); HBITMAP hBitmapChecked = NULL; char* way=GetApplicationDir(); CString dir; dir.Append(way); delete(way); dir.Append("\\"); dir.Append("pic"); SetCurrentDirectory(dir); hBitmapChecked = (HBITMAP)LoadImage(NULL, "menu_close.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); ///////////////////////// //menu_close.bmp SetMenuItemBitmaps(hMenu, IDM_CLOSE, MF_BYCOMMAND, hBitmapChecked, NULL); //About bitmap //hBitmapChecked = LoadBitmap((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDB_MENU_ABOUT)); // SetMenuItemBitmaps(hMenu, IDM_ABOUT, MF_BYCOMMAND, hBitmapChecked, NULL); }
// Add/Set tray icon // nAction - 1 = Create Tray Icon // 0 = Remove Tray Icon // n = Change Tray Icon // pszTip = Tray icon ToolTip text BOOL CTray::SetIcon(PSTR pszTip , int nAction) { UINT uIcon; // Icon ID buffer DWORD dMsg; // Message buffer (ADD/DELETE/MODIFY) NOTIFYICONDATA ni; ni.cbSize = sizeof(ni); ni.uID = 0; //ni.szTip=new char[128]; lstrcpyn(ni.szTip, pszTip, sizeof(ni.szTip)); ni.hWnd = this->hwnd; ni.uFlags = NIF_MESSAGE /*| NIF_TIP*/ | NIF_ICON; // We want to use icon, tip, and callback message ni.uCallbackMessage = WM_NOTIFYICONTRAY; // Our custom callback message (WM_APP + 1) switch (nAction){ case 0:// Remove tray icon return Shell_NotifyIcon(NIM_DELETE, &ni); break; case 1://Add icon in tray uIcon=APP_ICON; // Set tray icon dMsg=NIM_ADD; // Add tray icon break; case 2:// Modify current icon in tray uIcon=TRAY_ICON; // Set new tray icon dMsg=NIM_MODIFY; // Modify tray icon break; case 3:// Modify current icon in tray uIcon=APP_ICON; // Set new tray icon dMsg=NIM_MODIFY; // Modify tray icon break; } char* way=GetApplicationDir(); CString dir; dir.Append(way); // dir.Append("\\"); dir.Append("pic"); SetCurrentDirectory(dir); delete(way); //Load selected icon //ni.hIcon = (HICON)LoadIcon((HINSTANCE)GetWindowLong(this->hwnd, GWL_HINSTANCE), // MAKEINTRESOURCE(uIcon)); CString fname; fname.Append(pszTip); fname.Append(".ico"); ni.hIcon = (HICON)LoadImage(NULL, fname, IMAGE_ICON, 32, 32, LR_LOADFROMFILE); // Windooows, ohohooo, we have changed icon! :) return Shell_NotifyIcon(dMsg, &ni); }
MyLibrary::MyLibrary(char* classname) { size_t z=strlen(classname)+1; this->name=new char[z]; strcpy_s(name,z,classname); CString path; char* addr=GetApplicationDir(); path.Append(addr); path.Append("plugins\\"); path.Append(classname); path.Append("\\"); path.Append(classname); path.Append("_func.dll"); delete(addr); LibHandle=LoadLibrary(path); if(LibHandle==NULL) { CString err="Error loading lib "+path+"!"; ShowError(err.GetBuffer(err.GetLength())); } //intf f1,f2; //f1=(intf)GetProcAddress(h,"test"); //HANDLE obj; //obj=MakeObject("where the f**k is it?!"); CString err,err1; CreatePluginMenu=(MenuFuncCreate*)GetProcAddress(LibHandle,"CreatePluginMenu"); if(!CreatePluginMenu)err1.Format("\nCreatePluginMenu Library function not found in library '%s_func.dll'",+classname); err.Append(err1); err1=""; RefreshPluginMenu=(MenuFuncRefresh*)GetProcAddress(LibHandle,"RefreshPluginMenu"); if(!RefreshPluginMenu)err1.Format("\nRefreshPluginMenu Library function not found in library '%s_func.dll'",+classname); err.Append(err1); err1=""; ClickPluginMenu=(MenuFuncClick*)GetProcAddress(LibHandle,"ClickPluginMenu"); if(!ClickPluginMenu)err1.Format("\nClickPluginMenu Library function not found in library '%s_func.dll'",+classname); err.Append(err1); err1=""; InitPlugin=(InitPtr*)GetProcAddress(LibHandle,"InitPlugin"); if(!InitPlugin)err1.Format("\nInitPlugin Library function not found in library '%s_func.dll'",+classname); err.Append(err1); err1=""; if(err.GetLength()>0)ShowError(err.GetBuffer(err.GetLength())); }
BOOL AppMainApp::InitInstance() { pMainDialogWindowCrypt = NULL; pMainDialogWindow=NULL; if (!InitATL()){ return FALSE; } {// На первый запуск... char sz1[128]={0}; char sz2[128]="1"; CString sAddCal; GetCommandLineParameter("addcal",sAddCal); if(sAddCal!=""){ strcpy(sz1,sAddCal); SetRegSetting("", "FR_addCalendar", sz1); return FALSE; } CString sAddClo; GetCommandLineParameter("addclo",sAddClo); if(sAddClo!=""){ strcpy(sz2,sAddClo); SetRegSetting("", "FR_addClock", sz2); return FALSE; } GetRegSetting("", "FR_addClock", sz1, sizeof(sz1)); bAddOnStartClo=atol(sz1); GetRegSetting("", "FR_addCalendar", sz2, sizeof(sz2)); bAddOnStartCal=atol(sz2); } {//setup_file // Регистрируем файл char szWkmRegistered[32]={0}; GetRegSetting("", "wpc_setupRegistered", szWkmRegistered, sizeof(szWkmRegistered)); if(szWkmRegistered[0]==0){ strcpy(szWkmRegistered,"yes"); SetRegSetting("", "wpc_setupRegistered", szWkmRegistered); RegisterExtension("wpc_setup","WireChanger setup file","-setup_file="); } CString sSetupFile; GetCommandLineParameter("setup_file",sSetupFile); if(sSetupFile!=""){ if(isFileExist(sSetupFile)){ CString sContent,sKeyPart; ReadFile(sSetupFile,sContent); CString sXML=CDataXMLSaver::GetInstringPart("<SETUP>","</SETUP>",sContent); if(sXML==""){ sKeyPart=sContent; } // Делаем что сказано... if(sKeyPart!=""){ SaveFile(GetUserFolder()+LICENSE_KEY_FILE,sKeyPart); AfxMessageBox(_l("Registration info installed successfully\nRestart WireChanger to see changes")); } }else{ AfxMessageBox(Format("Reading setup file error: '%s' not found!",sSetupFile)); } return FALSE; } } CString sExe; GetCommandLineParameter("add",sExe,0); if(sExe!=""){_XLOG_ CString sNewFile=CString(GetApplicationDir())+WP_TEMPLATE+"\\"+GetPathPart(sExe,0,0,1,1); BOOL b=CopyFile(sExe,sNewFile,TRUE); if(!b){ AfxMessageBox(_l("Error")+": "+_l("Widget already exist")); } return FALSE; } // Глобальные настройки CString sDats; ReadFile(CString(GetApplicationDir())+"inits.txt",sDats); AppName()=PROGNAME; AddDefsWallps()=1; AddDefsInteract()=1; if(sDats.GetLength()){ CString sAppName=CDataXMLSaver::GetInstringPart("app:[","]",sDats); if(sAppName.GetLength()!=0){ AppName()=sAppName; } AddDefsWallps()=atol(CDataXMLSaver::GetInstringPart("defs:[","]",sDats)); AddDefsInteract()=atol(CDataXMLSaver::GetInstringPart("intr:[","]",sDats)); } //=========== CString sConsoleMode; GetCommandLineParameter("console",sConsoleMode); CString sIniFileInfo; ReadFile(CString(GetApplicationDir())+"install.ini",sIniFileInfo); if(sIniFileInfo!=""){ sIniFileInfo+="\r\n"; } if(sConsoleMode=="yes"){ CString sConsoleSave,sConsoleRest; GetCommandLineParameter("wpsave",sConsoleSave); GetCommandLineParameter("wprestore",sConsoleRest); if(sConsoleSave=="yes"){ if(sIniFileInfo.Find("[Main]")==-1){ sIniFileInfo+="[Main]\r\n"; } CString sAID,sDte; GetCommandLineParameter("affid",sAID); GetCommandLineParameter("date",sDte); if(sIniFileInfo.Find("AffId=")==-1){ sIniFileInfo+=CString("AffId=")+sAID+"\r\n"; } if(sIniFileInfo.Find("Date=")==-1){ sIniFileInfo+=CString("Date=")+sDte+"\r\n"; } if(sIniFileInfo.Find("CPD-W")==-1){ CRegKey key; key.Open(HKEY_CURRENT_USER, "Control Panel\\Desktop"); if(key!=NULL){ char szTemp[MAX_PATH]=""; DWORD lSize,dwType=0; lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"Wallpaper",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="CPD-W=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"WallpaperStyle",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="CPD-WS=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"TileWallpaper",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="CPD-WT=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"SCRNSAVE.EXE",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="CPD-SS=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } } {// На дефолтного CRegKey key; key.Open(HKEY_USERS, ".DEFAULT\\Control Panel\\Desktop"); if(key!=NULL){ char szTemp[MAX_PATH]=""; DWORD lSize,dwType=0; lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"Wallpaper",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="DCPD-W=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"WallpaperStyle",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="DCPD-WS=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } lSize = MAX_PATH; if(RegQueryValueEx(key.m_hKey,"TileWallpaper",NULL, &dwType,(LPBYTE)szTemp, &lSize)== ERROR_SUCCESS){ sIniFileInfo+="DCPD-WT=<"; sIniFileInfo+=szTemp; sIniFileInfo+=">\r\n"; } } } } if(sIniFileInfo.Find("UserData")==-1 || sIniFileInfo.Find("ConfigFile")==-1){ sIniFileInfo+="ConfigFile="; sIniFileInfo+=objSettings.sIniFile; sIniFileInfo+="\r\n"; sIniFileInfo+="UserData="; sIniFileInfo+=GetPathPart(objSettings.sIniFile,1,1,0,0); sIniFileInfo+="\r\n"; } SaveFile(CString(GetApplicationDir())+"install.ini",sIniFileInfo); }else if(sConsoleRest=="yes"){ if(sIniFileInfo==""){ return 0; } RestoreWP(sIniFileInfo,1); } return FALSE; } CString sWait; GetCommandLineParameter("wait",sWait); DWORD dwStartWait=GetTickCount(); if(sWait=="yes"){ while(CheckProgrammRunState(NULL, UNIQUE_TO_TRUSTEE, false) && GetTickCount()-dwStartWait<180000){ Sleep(1000); } } // Для нормально работы клонов if(IsThisProgrammAlreadyRunning()){ // || IsOtherProgrammAlreadyRunning("WireChanger") DWORD dwTarget=BSM_APPLICATIONS; BroadcastSystemMessage(BSF_FORCEIFHUNG | BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE, &dwTarget, iWM_THIS, WPARAM(99), LPARAM(99)); return FALSE; } // Столбим уникальное за компьютером... CheckProgrammRunState("WC3",UNIQUE_TO_COMPUTER,1,""); CString sRestore; GetCommandLineParameter("restore",sRestore); if(sRestore!="" && isFileExist(sRestore)){ CString sIniPath=GetPathPart(objSettings.sIniFile,1,1,0,0); {//Первый проход CZipArchive zipFile; if(zipFile.Open(sRestore)){ ZIP_FIND_DATA pFind; HANDLE hSearch=zipFile.FindFirstFile("*.*",&pFind); while(zipFile.FindNextFile(hSearch, &pFind)){ CString sFileName=pFind.szFileName; if(sFileName!=""){ CZipFile zI; if(zipFile.GetFile(pFind.nDirIndex,&zI)){ DeleteFile(sIniPath+sFileName); zI.SafeSaveToDosk(sIniPath+sFileName,0); } } } zipFile.FindClose(hSearch); zipFile.Close(); } } } AfxEnableControlContainer(); AfxInitRichEdit(); #if WINVER<=0x0050 #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif #endif OleInitialize(NULL); // CRYPT_START objSettings.sLikUser=""; objSettings.sLikKey=""; HANDLE hLicenseFile=::CreateFile(GetUserFolder()+LICENSE_KEY_FILE, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (!hLicenseFile || hLicenseFile==INVALID_HANDLE_VALUE){ // Из локального каталога! hLicenseFile=::CreateFile(CString(GetApplicationDir())+LICENSE_KEY_FILE, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); } if (hLicenseFile && hLicenseFile!=INVALID_HANDLE_VALUE){ DWORD dwRead=0; char szKey[2048]=""; objSettings.sLikKey=""; ::ReadFile(hLicenseFile, szKey, sizeof(szKey), &dwRead, NULL); objSettings.sLikUser=CDataXMLSaver::GetInstringPart("user:[","]",szKey); objSettings.sLikKey=CDataXMLSaver::GetInstringPart("key:[","]",szKey); ::CloseHandle(hLicenseFile); } #ifdef LIC_HARDCODED_U objSettings.sLikUser=LIC_HARDCODED_U; #endif #ifdef LIC_HARDCODED_K objSettings.sLikKey=LIC_HARDCODED_K; #endif //if(sIniFileInfo.Find("WireChangerEF")!=-1){ /* WC5Elefun CCC2-HJ3S-88A6-C4TP */ /* WC5IPv6 4HVF-9XF6-DGQ2-94U2 */ /* WK999IPv6 EJCM-VNR7-GZ8F */ /*Mapi2Pop3 IPv6 GT8N-6747-AGDM */ /* // Здесь поддержан элефан USE_ELEFUN=1; objSettings.sLikUser="******"; objSettings.sLikKey=Recrypt("\xd3\x4c\xc3\x24\x84\x53\x3e\x2a\x2c\x21\x9e\x24\x48\x34\xb5\xb4");//"CCC2-HJ3S-88A6-C4TP";// EXECryptor_DecryptStr()? */ //} UpdateTrialityStatus(objSettings.sLikUser,objSettings.sLikKey); if(objSettings.iLikStatus<0){ CSettings* objAntiDebug=0; objAntiDebug->ApplySettings(); return FALSE; } CRYPT_END objSettings.Load(); if(sConsoleMode=="help"){ ShowHelp("Overview"); return 0; } {// грузим ddown CBitmap bpTmp; bpTmp.LoadBitmap(IDB_DDOWN_A); _bmp().AddBmpRaw("DDOWN",&bpTmp,GetBitmapSize(bpTmp)); } {// грузим remd CBitmap bpTmp; bpTmp.LoadBitmap(IDB_REMIND_A); _bmp().AddBmpRaw("REMINDER",&bpTmp,GetBitmapSize(bpTmp)); } theApp.MainImageList.Create(16, 16, ILC_COLOR16 | ILC_MASK, 0, 2); // Основные иконки AddBitmapToIList(theApp.MainImageList,IDB_IMAGELIST); for(int i=0;i<theApp.MainImageList.GetImageCount();i++){ HICON hIcon=theApp.MainImageList.ExtractIcon(i); _bmp().AddBmp(_IL(i),hIcon); ClearIcon(hIcon); } _bmp().AddBmpRaw(IDB_BM_LOGO,CSize(LOGO_W,LOGO_H)); // Пытаемся к пустому окну захимичится rFakedRect.SetRect(-10,0,0,0); LPCTSTR szClass = AfxRegisterWndClass(NULL); m_pFakeWnd = new CWnd; m_pFakeWnd->CreateEx(0, szClass, ROOT_WND_NAME, 0, rFakedRect, NULL, 0); m_pFakeWnd->ShowWindow(SW_HIDE); m_pFakeWnd->EnableWindow(FALSE); m_pFakeWnd->SetIcon(::AfxGetApp()->LoadIcon(MAIN_ICON),TRUE); m_pFakeWnd->SetIcon(::AfxGetApp()->LoadIcon(MAIN_ICON),FALSE); HotkeysSkipDD()=1; // Если при запуске небыло найдено ini-файла, показываем опции... if(objSettings.bStartWithOptions){ objSettings.bStartWithOptions=FALSE; if(IsStartupWithWindows()==FALSE){ StartupApplicationWithWindows(TRUE); } // точней больше не показываем // objSettings.OpenOptionsDialog(); } // Создаем pMainDialogWindow = new AppMainDlg(); pMainDialogWindowCrypt = pMainDialogWindow; if(!pMainDialogWindow){ return FALSE; } theApp.m_pMainWnd=pMainDialogWindow;// Сначала задаем главное окно, потом создаем его pMainDialogWindow->Create(AppMainDlg::IDD,m_pFakeWnd); // Все! return TRUE; }
EWXWEXPORT(wxString*,wxGetApplicationDir)() { wxString *result = new wxString(); *result = GetApplicationDir(); return result; }