int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { mainInstance = hInstance; mainIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDR_MAINFRAME)); int argc = __argc; char** argv = __argv; vector<string> jobs; string jobsFile; bool quiet = false; for (int i = 1; i < argc; i++) { string arg = argv[i]; if (arg == "-appPath" && argc > i+1) { i++; appPath = argv[i]; } else if (arg == "-exePath" && argc > i+1) { i++; exePath = argv[i]; } else if (arg == "-updateFile" && argc > i+1) { i++; updateFile = argv[i]; jobs.push_back("update"); } else if (arg == "-quiet") { quiet = true; } else { jobsFile = arg; } } if (appPath.empty() || exePath.empty()) { ShowError("The installer was not given enough information to continue."); return __LINE__; } if (updateFile.empty()) { app = Application::NewApplication(appPath); } else { app = Application::NewApplication(updateFile, appPath); } if (app.isNull()) { ShowError("The installer could not read the application manifest."); return __LINE__; } if (!updateFile.empty()) { appInstallPath = app->path; } else { appInstallPath = GetDefaultInstallationDirectory(); } componentInstallPath = FileUtils::GetSystemRuntimeHomeDirectory(); // Read all jobs from the jobs file if (!jobsFile.empty() && FileUtils::IsFile(jobsFile)) { std::ifstream file(jobsFile.c_str()); if (!file.bad() && !file.fail() && !file.eof()) { string line; while(!std::getline(file, line).eof()) { jobs.push_back(line); } } } // Major WTF here, Redmond. LoadLibrary(TEXT("Riched20.dll")); CoInitialize(NULL); if (!quiet) { HWND introDialog = CreateDialog( hInstance, MAKEINTRESOURCE(IDD_INTRODIALOG), 0, DialogProc); if (!introDialog) { int i = GetLastError(); ShowError("The installer could not create the introductory dialog."); return __LINE__; } MSG msg; int status; while ((status = GetMessage(&msg, 0, 0, 0)) != 0) { if (status == -1) { char buf[2000]; sprintf(buf, "Error: %i", GetLastError()); ShowError(buf); return -1; } if (!IsDialogMessage(introDialog, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } } else { doInstall = true; } if (doInstall) { Progress *p = new Progress; p->SetLineText(1, app->name, false); p->Show(); bool success = InstallApplication(p) && HandleAllJobs(jobs, p) && FinishInstallation(); CoUninitialize(); return success ? 0 : 1; } else { CoUninitialize(); return 1; } }
void bigmailer::onSend() { const String enter = "\r\n" ; if (messagePage.editor.IsModified()) messagePage.Save() ; // mapa de los campos VectorMap<String, int> fldMap ; for (int i = 0; i < theDefList.fields.GetCount(); i++) fldMap.Add(theDefList.fields[i], i) ; String outHTML ; Index<String> css ; VectorMap<String, String> links ; String path = "./" ; String html = EncodeHtml(messagePage.editor.Get(), css, links, path ) ; outHTML << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n" "<html>\r\n" "<head>\r\n" "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\r\n" "<style>\r\n" << AsCss( css ) << "\r\n" << "</style>\r\n" "</head>\r\n" "<body>\r\n" << html << "\r\n" << "</body>\r\n" "</html>\r\n" ; Progress prog ; prog.Set(0, theDefList.data.GetCount()) ; prog.Show() ; theDefList.errors.Clear() ; String theHtml ; for (int row = 0; row < theDefList.data.GetCount(); row++) { String addrTo = theDefList.data[row][1] ; if (addrTo.IsEmpty()) { theDefList.errors.Add(t_("dirección incorrecta")) ; continue ; } if (prog.Canceled()) break ; theHtml = outHTML ; String s = AsString(row+1) + " / " + AsString( theDefList.data.GetCount() ) ; prog.SetText(s) ; for (int i = 0; i < theDefList.fields.GetCount(); i++) { String toFind = "[%" + theDefList.fields[i] + "%]" ; int from = 0 ; while( (from = theHtml.Find(toFind, from )) != -1) { theHtml.Remove( from, toFind.GetCount() ) ; theHtml.Insert( from, theDefList.data[row][ fldMap.Get(theDefList.fields[i])] ) ; } } prog.SetPos(row+1) ; SmtpMailEx mail ; mail.Host( theCfg.smtpServer ) .User( theCfg.user ) .Password( theCfg.pass ) .From( theMsg.from ) .ReplyTo( theMsg.from ) .To( addrTo ) .Subject( theMsg.subject ) .Text( "" ) .Attach("MENSAJE", theHtml, "text/html; charset=utf-8") ; if ( ! mail.Send() ) theDefList.errors.Add(mail.GetError()) ; else theDefList.errors.Add("OK") ; } theDefList.Save() ; }