void CPkiCard::WriteUncachedFile(const std::string & csPath, unsigned long ulOffset, const CByteArray & oData) { CAutoLock autolock(this); tFileInfo fileInfo = SelectFile(csPath, true); const unsigned char *pucData = oData.GetBytes(); unsigned long ulDataLen = oData.Size(); for (unsigned long i = 0; i < ulDataLen; i += MAX_APDU_WRITE_LEN) { unsigned long ulLen = ulDataLen - i; if (ulLen > MAX_APDU_WRITE_LEN) ulLen = MAX_APDU_WRITE_LEN; CByteArray oResp = UpdateBinary(ulOffset + i, CByteArray(pucData + i, ulLen)); unsigned long ulSW12 = getSW12(oResp); if (ulSW12 == 0x6982) throw CNotAuthenticatedException( EIDMW_ERR_NOT_AUTHENTICATED, fileInfo.lWritePINRef); else if (ulSW12 != 0x9000) throw CMWEXCEPTION(m_poContext->m_oPCSC.SW12ToErr(ulSW12)); } MWLOG(LEV_INFO, MOD_CAL, L"Written file %ls to card", utilStringWiden(csPath).c_str()); }
/// Open file browse dialog to locate editor void PropRegistry::OnBrowseEditor() { String path; if (SelectFile(GetSafeHwnd(), path, m_strEditorPath.c_str(), _("Open"), _("Programs|*.exe;*.bat;*.cmd|All Files (*.*)|*.*||"), TRUE)) { SetDlgItemText(IDC_EXT_EDITOR_PATH, path); } }
/// Open file browse dialog to locate editor void PropRegistry::OnBrowseEditor() { CString path; if (SelectFile(GetSafeHwnd(), path, NULL, IDS_OPEN_TITLE, IDS_PROGRAMFILES, TRUE)) { SetDlgItemText(IDC_EXT_EDITOR_PATH, path); } }
void FileChooser::UpdateEditor() { int index = browser()->Selection(); if (index >= 0) { _sedit->Message(browser()->Path(index)); browser()->UnselectAll(); } else { _sedit->Message(browser()->Normalize(_sedit->Text())); } SelectFile(); }
void CBWLowpassDlg::OnButtonBwlowpassout() { // TODO: Add your control notification handler code here static char BASED_CODE file[] = "BMP Files(*.bmp)|*.bmp|所有文件(*.*)|*.*||"; //第一个参数FALSE表示以保存方式显示文件对话框 CFileDialog SelectFile(FALSE, "BMP", NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, file, NULL); SelectFile.DoModal(); CString FileName; FileName = SelectFile.GetPathName(); m_sBWLowpassOut = FileName; UpdateData(FALSE); }
/** * @brief Saves right-side file with name asked */ void CHexMergeDoc::OnFileSaveAsRight() { const String &pathRight = m_filePaths.GetRight(); CString strPath; if (SelectFile(0, strPath, pathRight.c_str(), IDS_SAVE_LEFT_AS, NULL, FALSE)) { if (Try(m_pView[MERGE_VIEW_RIGHT]->SaveFile(strPath)) == IDCANCEL) return; m_filePaths.SetRight(strPath); UpdateDiffItem(m_pDirDoc); } }
/** * @brief Install new filter. * This function is called when user selects "Install" button from GUI. * Function allows easy installation of new filters for user. For example * when user has downloaded filter file from net. First we ask user to * select filter to install. Then we copy selected filter to private * filters folder. */ void FileFiltersDlg::OnBnClickedFilterfileInstall() { CString s; String path; String userPath = theApp.m_globalFileFilter.GetUserFilterPathWithCreate(); if (SelectFile(GetSafeHwnd(), s, path.c_str(), IDS_FILEFILTER_INSTALL, IDS_FILEFILTER_FILEMASK, TRUE)) { String sfile, sext; SplitFilename(s, NULL, &sfile, &sext); String filename = sfile; filename += _T("."); filename += sext; userPath = paths_ConcatPath(userPath, filename); if (!CopyFile(s, userPath.c_str(), TRUE)) { // If file already exists, ask from user // If user wants to, overwrite existing filter if (paths_DoesPathExist(userPath.c_str()) == IS_EXISTING_FILE) { int res = LangMessageBox(IDS_FILEFILTER_OVERWRITE, MB_YESNO | MB_ICONWARNING); if (res == IDYES) { if (!CopyFile(s, userPath.c_str(), FALSE)) { LangMessageBox(IDS_FILEFILTER_INSTALLFAIL, MB_ICONSTOP); } } } else { LangMessageBox(IDS_FILEFILTER_INSTALLFAIL, MB_ICONSTOP); } } else { FileFilterMgr *pMgr = theApp.m_globalFileFilter.GetManager(); pMgr->AddFilter(userPath.c_str()); // Remove all from filterslist and re-add so we can update UI CString selected; m_Filters->RemoveAll(); theApp.m_globalFileFilter.GetFileFilters(m_Filters, selected); UpdateFiltersList(); } } }
void CWZStep3::OnReferImage() { WCHAR szFile[MAX_PATH]; UpdateData(TRUE); // now we do not support differential backup from RM3 file. if (SelectFile(L"AMG",L"AM01 Image",szFile)) { m_ImagePath = szFile; } UpdateData(FALSE); // TODO: Add your control notification handler code here }
bool ScanPatternInFile(TCHAR * pattern) { TCHAR targetFile[MAX_PATH] = {0}; if (SelectFile(targetFile)) { WriteLog(TEXT("\r\n------------------------------------------------------\r\n")); WriteLog(TEXT("File: %s\r\n"),targetFile); return SearchPatternInFile(targetFile,pattern); } return false; }
//转换源文件 void CDlgFileConv::OnSelectSrcFile() { CStringW strFile = SelectFile(_T("所有文件"), _T("")); if (!strFile.IsEmpty()) m_strSrcFile = strFile; else return; double prob; std::string charset = utils::GetFileCharset(CStringToUTF8string(strFile), prob, 1000); if (!charset.empty() && prob > 0.95) m_strSrcCharset = UTF8stringToCString(charset); else m_strSrcCharset = _T(""); UpdateData(FALSE); }
void BatchGUI::SetupConnect() { connect( this->ui.addButton, SIGNAL(clicked()), this, SLOT(AddProcess()) ); // connect( this->ui.beginButton, SIGNAL(clicked()), this, SLOT(BeginProcess()) ); // connect( this->ui.appButton, SIGNAL(clicked()), this, SLOT(SelectFile()) ); // connect( this->ui.cleanButton, SIGNAL(clicked()), this, SLOT(CleanAll()) ); // connect( this->ui.stopButton, SIGNAL(clicked()), this, SLOT(StopAll()) ); // connect( this->ui.resumeButton, SIGNAL(clicked()), this, SLOT(Resume()) ); // connect( this->ui.resetButton, SIGNAL(clicked()), this, SLOT(ResetAll()) ); return; }
void Main() { TextureAsset::Register(L"noise", L"Texture/noise.png"); //設定の読み込み LoadConfig(); //タイトル String Title(L"高専の敷き詰め理論ⅠB"); Point TitlePos(10, 0); //ウィンドウスタイルの設定 Window::SetStyle(WindowStyle::NonFrame); Window::Resize(960, 540); //フォントの用意 Font titlefont(30); Texture Back(L"Texture/BlackBord.png"); Rect font_size = titlefont.region(Title); //ボタンの用意 Button Download(download, 20, 100, L"・ダウンロード"); Button SelectFile(selectfile, 20, 170, L"・ファイルを選択"); Button ReAnswer(reanswer, 20, 240, L"・再度問題を解く"); Button Upload(upload, 20, 350, L"・アップロード"); //バグ除け Gout << L"準備完了\n"; while (System::Update()){ //ボタンのアップデート if (Download.end && SelectFile.end && Upload.end && ReAnswer.end){ Download.Update(); SelectFile.Update(); Upload.Update(); ReAnswer.Update(); } //描画 Back.draw(); titlefont(Title).draw(TitlePos, Palette::White); TextureAsset(L"noise").map(font_size.w, font_size.h).draw(TitlePos); Download.Draw(); SelectFile.Draw(); ReAnswer.Draw(); Upload.Draw(); Gout.Draw(); DD.Draw(); } }
void CBWLowpassDlg::OnButtonBwlowpassin() { // TODO: Add your control notification handler code here //文件类型说明字符串 static char BASED_CODE file[] = "BMP Files(*.bmp)|*.bmp|所有文件(*.*)|*.*||"; //文件对话框初始化,这里的第一个参数TRUE表示以打开方式显示文件对话框 CFileDialog SelectFile(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, file, NULL); //弹出文件打开对话框 SelectFile.DoModal(); //得到所选文件路径(包括文件名) CString FileName; FileName = SelectFile.GetPathName(); //将得到的文件名赋给格式转换对话框的成员变量m_sLinearTransIn m_sBWLowpassIn = FileName; //数据刷新,即将m_sLinearTransIn新得到的值显示在对话框中对应的控件上(注意参数false) UpdateData(FALSE); }
LRESULT CALLBACK BitBanger(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: //IDC_PRINTMON if (!strlen(SerialCaptureFile)) strcpy(SerialCaptureFile,"No Capture File"); SendDlgItemMessage(hDlg,IDC_SERIALFILE,WM_SETTEXT,strlen(SerialCaptureFile),(LPARAM)(LPCSTR)SerialCaptureFile); SendDlgItemMessage(hDlg,IDC_LF,BM_SETCHECK,TextMode,0); SendDlgItemMessage(hDlg,IDC_PRINTMON,BM_SETCHECK,PrtMon,0); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OPEN: SelectFile(SerialCaptureFile); SendDlgItemMessage(hDlg,IDC_SERIALFILE,WM_SETTEXT,strlen(SerialCaptureFile),(LPARAM)(LPCSTR)SerialCaptureFile); break; case IDC_CLOSE: ClosePrintFile(); strcpy(SerialCaptureFile,"No Capture File"); SendDlgItemMessage(hDlg,IDC_SERIALFILE,WM_SETTEXT,strlen(SerialCaptureFile),(LPARAM)(LPCSTR)SerialCaptureFile); PrtMon=FALSE; SetMonState(PrtMon); SendDlgItemMessage(hDlg,IDC_PRINTMON,BM_SETCHECK,PrtMon,0); break; case IDC_LF: TextMode=(char)SendDlgItemMessage(hDlg,IDC_LF,BM_GETCHECK,0,0); SetSerialParams(TextMode); break; case IDC_PRINTMON: PrtMon=(char)SendDlgItemMessage(hDlg,IDC_PRINTMON,BM_GETCHECK,0,0); SetMonState(PrtMon); } //End switch wParam break; } return(0); }
CByteArray CPkiCard::ReadUncachedFile(const std::string & csPath, unsigned long ulOffset, unsigned long ulMaxLen) { CByteArray oData(ulMaxLen); CAutoLock autolock(this); tFileInfo fileInfo = SelectFile(csPath, true); // Loop until we've read ulMaxLen bytes or until EOF (End Of File) bool bEOF = false; for (unsigned long i = 0; i < ulMaxLen && !bEOF; i += MAX_APDU_READ_LEN) { unsigned long ulLen = ulMaxLen - i <= MAX_APDU_READ_LEN ? ulMaxLen - i : MAX_APDU_READ_LEN; CByteArray oResp = ReadBinary(ulOffset + i, ulLen); unsigned long ulSW12 = getSW12(oResp); // If the file is a multiple of the block read size, you will get // an SW12 = 6B00 (at least with BE eID) but that OK then.. if (ulSW12 == 0x9000 || (i != 0 && ulSW12 == 0x6B00)) oData.Append(oResp.GetBytes(), oResp.Size() - 2); else if (ulSW12 == 0x6982) { throw CNotAuthenticatedException( EIDMW_ERR_NOT_AUTHENTICATED, fileInfo.lReadPINRef); } else if (ulSW12 == 0x6B00) throw CMWEXCEPTION(EIDMW_ERR_PARAM_RANGE); else if (ulSW12 == 0x6D00) throw CMWEXCEPTION(EIDMW_ERR_NOT_ACTIVATED); else throw CMWEXCEPTION(m_poContext->m_oPCSC.SW12ToErr(ulSW12)); // If the driver/reader itself did the 6CXX handling, // we assume we're at the EOF if (oResp.Size() < MAX_APDU_READ_LEN) bEOF = true; } MWLOG(LEV_INFO, MOD_CAL, L" Read file %ls (%d bytes) from card", utilStringWiden(csPath).c_str(), oData.Size()); return oData; }
void CPropertyDlg::OnFileSpin( wxSpinEvent& event ) { int tempvalue = m_FileSpin->GetValue(); //m_nFileSpin = m_FileSpin->GetValue(); //check if this value is valid for main url. //if not a valid , set old value to spin. TransferDataFromWindow(); //get url to m_sUrl if ( SelectFile( tempvalue ) ) { m_nFileSpin = tempvalue; } else { m_FileSpin->SetValue( m_nFileSpin ); } }
AskDataBase::AskDataBase(QWidget *parent) : QMainWindow(parent), ui(new Ui::AskDataBase) { ui->setupUi(this); connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(ValidateFile())); connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(CreateFile())); connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(SelectFile())); QString MyAppDirPath = QCoreApplication::applicationDirPath(); QStringList listFilter; listFilter << "*.db"; QDir *DirA = new QDir(MyAppDirPath); QStringList FIL = DirA->entryList(listFilter); int i = 0; for(i=0;i<FIL.count();i++) { ui->comboBox->addItem(FIL[i]); } free(DirA); }
MultiresImagePlugin::MultiresImagePlugin() : loaded_(false), tile_set_(NULL), tile_view_(NULL), config_widget_(new QWidget()), transformed_(false) { ui_.setupUi(config_widget_); QPalette p(config_widget_->palette()); p.setColor(QPalette::Background, Qt::white); config_widget_->setPalette(p); QPalette p2(ui_.status->palette()); p2.setColor(QPalette::Text, Qt::red); ui_.status->setPalette(p2); QObject::connect(ui_.browse, SIGNAL(clicked()), this, SLOT(SelectFile())); QObject::connect(ui_.path, SIGNAL(editingFinished()), this, SLOT(AcceptConfiguration())); source_frame_ = "/"; }
void InstanceDlg::OnBrowseModelFile( wxCommandEvent &event ) { wxString filter = _("3D Model files"); filter += _T("|"); AddType(filter, FSTRING_3DS); AddType(filter, FSTRING_DAE); AddType(filter, FSTRING_OBJ); AddType(filter, FSTRING_LWO); AddType(filter, FSTRING_FLT); AddType(filter, FSTRING_OSG); AddType(filter, FSTRING_IVE); filter += _T("|"); filter += FSTRING_ALL; wxFileDialog SelectFile(this, _("Choose model file"), _T(""), _T(""), filter, wxFD_OPEN); if (SelectFile.ShowModal() != wxID_OK) return; // If model file can be found by mimicing the search strategy implemented by // vtStructInstance3d::CreateNode then remove the directory part of the path // so that paths are not stored unnecessarily wxFileName TargetModel(SelectFile.GetPath()); wxString filepart = TargetModel.GetFullName(); vtString FoundModel = FindFileOnPaths(vtGetDataPath(), filepart.mb_str(wxConvUTF8)); if ("" != FoundModel) { GetModelFile()->SetValue(filepart); return; } wxString test = wxT("BuildingModels/") + filepart; FoundModel = FindFileOnPaths(vtGetDataPath(), test.mb_str(wxConvUTF8)); if ("" != FoundModel) { GetModelFile()->SetValue(filepart); return; } // Otherwise, use the full absolute path GetModelFile()->SetValue(SelectFile.GetPath()); }
void CAdvancedOptionsPage::SelectIplDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) { SelectFile(DIR_SELECT_PLUGIN, m_IplDir); }
void CDialogStartupSetting::OnBnClickedBtnbrowse16() { SelectFile(m_strCmd16); }
INT_PTR CRecreateDlg::OnButtonClicked(HWND hDlg, UINT messg, WPARAM wParam, LPARAM lParam) { switch (LOWORD(wParam)) { case IDC_CHOOSE: { wchar_t *pszFilePath = SelectFile(L"Choose program to run", NULL, NULL, hDlg, L"Executables (*.exe)\0*.exe\0All files (*.*)\0*.*\0\0", sff_AutoQuote); if (pszFilePath) { SetDlgItemText(hDlg, IDC_RESTART_CMD, pszFilePath); SafeFree(pszFilePath); } return TRUE; } // case IDC_CHOOSE: case IDC_CHOOSE_DIR: { wchar_t* pszDefFolder = GetDlgItemTextPtr(hDlg, IDC_STARTUP_DIR); wchar_t* pszFolder = SelectFolder(L"Choose startup directory", pszDefFolder, hDlg, sff_Default); if (pszFolder) { SetDlgItemText(hDlg, IDC_STARTUP_DIR, pszFolder); SafeFree(pszFolder); } SafeFree(pszDefFolder); return TRUE; } // case IDC_CHOOSE_DIR: case cbRunAsAdmin: { // BCM_SETSHIELD = 5644 BOOL bRunAs = SendDlgItemMessage(hDlg, cbRunAsAdmin, BM_GETCHECK, 0, 0); if (gOSVer.dwMajorVersion >= 6) { SendDlgItemMessage(hDlg, IDC_START, 5644/*BCM_SETSHIELD*/, 0, bRunAs && (mp_Args->aRecreate != cra_EditTab)); } if (bRunAs) { CheckRadioButton(hDlg, rbCurrentUser, rbAnotherUser, rbCurrentUser); CheckDlgButton(hDlg, cbRunAsRestricted, BST_UNCHECKED); RecreateDlgProc(hDlg, UM_USER_CONTROLS, 0, 0); } return TRUE; } // case cbRunAsAdmin: case rbCurrentUser: case rbAnotherUser: case cbRunAsRestricted: { RecreateDlgProc(hDlg, UM_USER_CONTROLS, LOWORD(wParam), 0); return TRUE; } case rbRecreateSplitNone: case rbRecreateSplit2Right: case rbRecreateSplit2Bottom: { RConStartArgs* pArgs = mp_Args; switch (LOWORD(wParam)) { case rbRecreateSplitNone: pArgs->eSplit = RConStartArgs::eSplitNone; break; case rbRecreateSplit2Right: pArgs->eSplit = RConStartArgs::eSplitHorz; break; case rbRecreateSplit2Bottom: pArgs->eSplit = RConStartArgs::eSplitVert; break; } EnableWindow(GetDlgItem(hDlg, tRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); EnableWindow(GetDlgItem(hDlg, stRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); if (pArgs->eSplit != pArgs->eSplitNone) SetFocus(GetDlgItem(hDlg, tRecreateSplit)); return TRUE; } // case rbRecreateSplitXXX case IDC_START: { RConStartArgs* pArgs = mp_Args; _ASSERTE(pArgs); SafeFree(pArgs->pszUserName); SafeFree(pArgs->pszDomain); //SafeFree(pArgs->pszUserPassword); if (SendDlgItemMessage(hDlg, rbAnotherUser, BM_GETCHECK, 0, 0)) { pArgs->RunAsRestricted = crb_Off; pArgs->pszUserName = GetDlgItemTextPtr(hDlg, tRunAsUser); if (pArgs->pszUserName) { //pArgs->pszUserPassword = GetDlgItemText(hDlg, tRunAsPassword); // Попытаться проверить правильность введенного пароля и возможность запуска bool bCheckPwd = pArgs->CheckUserToken(GetDlgItem(hDlg, tRunAsPassword)); DWORD nErr = bCheckPwd ? 0 : GetLastError(); if (!bCheckPwd) { DisplayLastError(L"Invalid user name or password was specified!", nErr, MB_ICONSTOP, NULL, hDlg); return 1; } } } else { pArgs->RunAsRestricted = SendDlgItemMessage(hDlg, cbRunAsRestricted, BM_GETCHECK, 0, 0) ? crb_On : crb_Off; } // Vista+ (As Admin...) pArgs->RunAsAdministrator = SendDlgItemMessage(hDlg, cbRunAsAdmin, BM_GETCHECK, 0, 0) ? crb_On : crb_Off; // StartupDir (may be specified as argument) wchar_t* pszDir = GetDlgItemTextPtr(hDlg, IDC_STARTUP_DIR); wchar_t* pszExpand = (pszDir && wcschr(pszDir, L'%')) ? ExpandEnvStr(pszDir) : NULL; LPCWSTR pszDirResult = pszExpand ? pszExpand : pszDir; // Another user? We may fail with access denied. Check only for "current user" account if (!pArgs->pszUserName && pszDirResult && *pszDirResult && !DirectoryExists(pszDirResult)) { wchar_t* pszErrInfo = lstrmerge(L"Specified directory does not exists!\n", pszDirResult, L"\n" L"Do you want to choose another directory?\n\n"); DWORD nErr = GetLastError(); int iDirBtn = DisplayLastError(pszErrInfo, nErr, MB_ICONEXCLAMATION|MB_YESNO, NULL, hDlg); if (iDirBtn == IDYES) { SafeFree(pszDir); SafeFree(pszExpand); SafeFree(pszErrInfo); return 1; } // User want to run "as is". Most likely it will fail, but who knows... } SafeFree(pArgs->pszStartupDir); pArgs->pszStartupDir = pszExpand ? pszExpand : pszDir; if (pszExpand) { SafeFree(pszDir) } // Command // pszSpecialCmd мог быть передан аргументом - умолчание для строки ввода SafeFree(pArgs->pszSpecialCmd); // GetDlgItemText выделяет память через calloc pArgs->pszSpecialCmd = GetDlgItemTextPtr(hDlg, IDC_RESTART_CMD); if (pArgs->pszSpecialCmd) gpSet->HistoryAdd(pArgs->pszSpecialCmd); if ((pArgs->aRecreate != cra_RecreateTab) && (pArgs->aRecreate != cra_EditTab)) { if (SendDlgItemMessage(hDlg, cbRunInNewWindow, BM_GETCHECK, 0, 0)) pArgs->aRecreate = cra_CreateWindow; else pArgs->aRecreate = cra_CreateTab; } if (((pArgs->aRecreate == cra_CreateTab) || (pArgs->aRecreate == cra_EditTab)) && (pArgs->eSplit != RConStartArgs::eSplitNone)) { BOOL bOk = FALSE; int nPercent = GetDlgItemInt(hDlg, tRecreateSplit, &bOk, FALSE); if (bOk && (nPercent >= 1) && (nPercent <= 99)) { pArgs->nSplitValue = (100-nPercent) * 10; } //pArgs->nSplitPane = 0; Сбрасывать не будем? } mn_DlgRc = IDC_START; EndDialog(hDlg, IDC_START); return TRUE; } // case IDC_START: case IDC_TERMINATE: mn_DlgRc = IDC_TERMINATE; EndDialog(hDlg, IDC_TERMINATE); return TRUE; case IDCANCEL: mn_DlgRc = IDCANCEL; EndDialog(hDlg, IDCANCEL); return TRUE; } return FALSE; }
INT_PTR CRecreateDlg::RecreateDlgProc(HWND hDlg, UINT messg, WPARAM wParam, LPARAM lParam) { #define UM_USER_CONTROLS (WM_USER+121) #define UM_FILL_CMDLIST (WM_USER+122) CRecreateDlg* pDlg = NULL; if (messg == WM_INITDIALOG) { pDlg = (CRecreateDlg*)lParam; pDlg->mh_Dlg = hDlg; SetWindowLongPtr(hDlg, DWLP_USER, lParam); } else { pDlg = (CRecreateDlg*)GetWindowLongPtr(hDlg, DWLP_USER); } if (!pDlg) { return FALSE; } PatchMsgBoxIcon(hDlg, messg, wParam, lParam); switch (messg) { case WM_INITDIALOG: { LRESULT lbRc = FALSE; // Visual SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hClassIcon); SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hClassIconSm); // Set password style (avoid "bars" on some OS) SendDlgItemMessage(hDlg, tRunAsPassword, WM_SETFONT, (LPARAM)(HFONT)GetStockObject(DEFAULT_GUI_FONT), 0); // Add menu items HMENU hSysMenu = GetSystemMenu(hDlg, FALSE); InsertMenu(hSysMenu, 0, MF_BYPOSITION, MF_SEPARATOR, 0); InsertMenu(hSysMenu, 0, MF_BYPOSITION | MF_STRING | MF_ENABLED, ID_RESETCMDHISTORY, L"Clear history..."); InsertMenu(hSysMenu, 0, MF_BYPOSITION | MF_STRING | MF_ENABLED | (gpSet->isSaveCmdHistory ? MF_CHECKED : 0), ID_STORECMDHISTORY, L"Store history"); //#ifdef _DEBUG //SetWindowPos(ghOpWnd, HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE); //#endif RConStartArgs* pArgs = pDlg->mp_Args; _ASSERTE(pArgs); // Fill command and task drop down SendMessage(hDlg, UM_FILL_CMDLIST, TRUE, 0); // Set text in command and folder fields SetDlgItemText(hDlg, IDC_RESTART_CMD, pDlg->mpsz_DefCmd ? pDlg->mpsz_DefCmd : pArgs->pszSpecialCmd ? pArgs->pszSpecialCmd : L""); SetDlgItemText(hDlg, IDC_STARTUP_DIR, pDlg->mpsz_DefDir ? pDlg->mpsz_DefDir : pArgs->pszStartupDir ? pArgs->pszStartupDir : gpConEmu->WorkDir()); // Split controls if (pArgs->aRecreate == cra_RecreateTab) { // Hide Split's ShowWindow(GetDlgItem(hDlg, gbRecreateSplit), SW_HIDE); ShowWindow(GetDlgItem(hDlg, rbRecreateSplitNone), SW_HIDE); ShowWindow(GetDlgItem(hDlg, rbRecreateSplit2Right), SW_HIDE); ShowWindow(GetDlgItem(hDlg, rbRecreateSplit2Bottom), SW_HIDE); ShowWindow(GetDlgItem(hDlg, stRecreateSplit), SW_HIDE); ShowWindow(GetDlgItem(hDlg, tRecreateSplit), SW_HIDE); } else { // Fill splits SetDlgItemInt(hDlg, tRecreateSplit, (1000-pArgs->nSplitValue)/10, FALSE); CheckRadioButton(hDlg, rbRecreateSplitNone, rbRecreateSplit2Bottom, rbRecreateSplitNone+pArgs->eSplit); EnableWindow(GetDlgItem(hDlg, tRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); EnableWindow(GetDlgItem(hDlg, stRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); } // Спрятать флажок "New window" bool bRunInNewWindow_Hidden = (pArgs->aRecreate == cra_EditTab || pArgs->aRecreate == cra_RecreateTab); ShowWindow(GetDlgItem(hDlg, cbRunInNewWindow), bRunInNewWindow_Hidden ? SW_HIDE : SW_SHOWNORMAL); const wchar_t *pszUser = pArgs->pszUserName; const wchar_t *pszDomain = pArgs->pszDomain; bool bResticted = (pArgs->RunAsRestricted == crb_On); int nChecked = rbCurrentUser; DWORD nUserNameLen = countof(pDlg->ms_CurUser); if (!GetUserName(pDlg->ms_CurUser, &nUserNameLen)) pDlg->ms_CurUser[0] = 0; wchar_t szRbCaption[MAX_PATH*3]; lstrcpy(szRbCaption, L"Run as current &user: "******"UPN format" остается в pszUser lstrcpyn(szOtherUser, pszUser, MAX_PATH); wcscat_c(szOtherUser, L"@"); lstrcpyn(szOtherUser+_tcslen(szOtherUser), pszDomain, MAX_PATH); } else { // "Старая" нотация domain\user lstrcpyn(szOtherUser, pszDomain, MAX_PATH); wcscat_c(szOtherUser, L"\\"); lstrcpyn(szOtherUser+_tcslen(szOtherUser), pszUser, MAX_PATH); } } else { lstrcpyn(szOtherUser, pszUser, countof(szOtherUser)); } SetDlgItemText(hDlg, tRunAsPassword, pArgs->szUserPassword); } } SetDlgItemText(hDlg, tRunAsUser, (nChecked == rbAnotherUser) ? szOtherUser : L""); CheckRadioButton(hDlg, rbCurrentUser, rbAnotherUser, nChecked); RecreateDlgProc(hDlg, UM_USER_CONTROLS, 0, 0); if (gOSVer.dwMajorVersion < 6) { // В XP и ниже это просто RunAs - с возможностью ввода имени пользователя и пароля //apiShowWindow(GetDlgItem(hDlg, cbRunAsAdmin), SW_HIDE); SetDlgItemTextA(hDlg, cbRunAsAdmin, "&Run as..."); //GCC hack. иначе не собирается // И уменьшить длину RECT rcBox; GetWindowRect(GetDlgItem(hDlg, cbRunAsAdmin), &rcBox); SetWindowPos(GetDlgItem(hDlg, cbRunAsAdmin), NULL, 0, 0, (rcBox.right-rcBox.left)/2, rcBox.bottom-rcBox.top, SWP_NOMOVE|SWP_NOZORDER); } else if (gpConEmu->mb_IsUacAdmin || (pArgs && (pArgs->RunAsAdministrator == crb_On))) { CheckDlgButton(hDlg, cbRunAsAdmin, BST_CHECKED); if (gpConEmu->mb_IsUacAdmin) // Только в Vista+ если GUI уже запущен под админом { EnableWindow(GetDlgItem(hDlg, cbRunAsAdmin), FALSE); } else if (gOSVer.dwMajorVersion < 6) { RecreateDlgProc(hDlg, WM_COMMAND, cbRunAsAdmin, 0); } } //} SetClassLongPtr(hDlg, GCLP_HICON, (LONG_PTR)hClassIcon); RECT rcBtnBox = {0}; if (pArgs->aRecreate == cra_RecreateTab) { //GCC hack. иначе не собирается SetDlgItemTextA(hDlg, IDC_RESTART_MSG, "About to restart console"); SendDlgItemMessage(hDlg, IDC_RESTART_ICON, STM_SETICON, (WPARAM)LoadIcon(NULL,IDI_EXCLAMATION), 0); // Выровнять флажок по кнопке GetWindowRect(GetDlgItem(hDlg, IDC_START), &rcBtnBox); lbRc = TRUE; } else { //GCC hack. иначе не собирается SetDlgItemTextA(hDlg, IDC_RESTART_MSG, "Create new console"); // Если ВЫКЛЮЧЕН "Multi consoles in one window" // - Check & Disable "New window" checkbox CheckDlgButton(hDlg, cbRunInNewWindow, (pArgs->aRecreate == cra_CreateWindow || !gpSetCls->IsMulti()) ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hDlg, cbRunInNewWindow), gpSetCls->IsMulti()); // SendDlgItemMessage(hDlg, IDC_RESTART_ICON, STM_SETICON, (WPARAM)LoadIcon(NULL,IDI_QUESTION), 0); POINT pt = {0,0}; MapWindowPoints(GetDlgItem(hDlg, IDC_TERMINATE), hDlg, &pt, 1); DestroyWindow(GetDlgItem(hDlg, IDC_TERMINATE)); SetWindowPos(GetDlgItem(hDlg, IDC_START), NULL, pt.x, pt.y, 0,0, SWP_NOSIZE|SWP_NOZORDER); SetDlgItemText(hDlg, IDC_START, (pArgs->aRecreate == cra_EditTab) ? L"&Save" : L"&Start"); DestroyWindow(GetDlgItem(hDlg, IDC_WARNING)); // Выровнять флажок по кнопке GetWindowRect(GetDlgItem(hDlg, IDC_START), &rcBtnBox); } if (rcBtnBox.left) { // Выровнять флажок по кнопке MapWindowPoints(NULL, hDlg, (LPPOINT)&rcBtnBox, 2); RECT rcBox; GetWindowRect(GetDlgItem(hDlg, cbRunAsAdmin), &rcBox); POINT pt; pt.x = rcBtnBox.left - (rcBox.right - rcBox.left) - 5; pt.y = rcBtnBox.top + ((rcBtnBox.bottom-rcBtnBox.top) - (rcBox.bottom-rcBox.top))/2; SetWindowPos(GetDlgItem(hDlg, cbRunAsAdmin), NULL, pt.x, pt.y, 0,0, SWP_NOSIZE|SWP_NOZORDER); } // Correct cbRunInNewWindow position if (!bRunInNewWindow_Hidden) { POINT pt = {}; MapWindowPoints(GetDlgItem(hDlg, cbRunAsAdmin), hDlg, &pt, 1); RECT rcBox2; GetWindowRect(GetDlgItem(hDlg, cbRunInNewWindow), &rcBox2); SetWindowPos(GetDlgItem(hDlg, cbRunInNewWindow), NULL, pt.x-(rcBox2.right-rcBox2.left), pt.y, 0,0, SWP_NOSIZE); } // Ensure, it will be "on screen" RECT rect; GetWindowRect(hDlg, &rect); RECT rcCenter = CenterInParent(rect, pDlg->mh_Parent); MoveWindow(hDlg, rcCenter.left, rcCenter.top, rect.right - rect.left, rect.bottom - rect.top, false); // Была отключена обработка CConEmuMain::OnFocus (лишние телодвижения) PostMessage(hDlg, (WM_APP+1), 0,0); // Default focus control if (pArgs->aRecreate == cra_RecreateTab) SetFocus(GetDlgItem(hDlg, IDC_START)); // Win+~ (Recreate tab), Focus on "Restart" button" else if ((pArgs->pszUserName && *pArgs->pszUserName) && !*pArgs->szUserPassword) SetFocus(GetDlgItem(hDlg, tRunAsPassword)); // We need password, all other fields are ready else SetFocus(GetDlgItem(hDlg, IDC_RESTART_CMD)); // Set focus in command-line field return lbRc; } case (WM_APP+1): //TODO: Не совсем корректно, не учитывается предыдущее значение флажка gpConEmu->SetSkipOnFocus(false); return FALSE; case WM_CTLCOLORSTATIC: if (GetDlgItem(hDlg, IDC_WARNING) == (HWND)lParam) { SetTextColor((HDC)wParam, 255); HBRUSH hBrush = GetSysColorBrush(COLOR_3DFACE); SetBkMode((HDC)wParam, TRANSPARENT); return (INT_PTR)hBrush; } break; //case WM_GETICON: // if (wParam==ICON_BIG) // { // /*SetWindowLong(hWnd2, DWL_MSGRESULT, (LRESULT)hClassIcon); // return 1;*/ // } // else // { // SetWindowLongPtr(hDlg, DWLP_MSGRESULT, (LRESULT)hClassIconSm); // return 1; // } // return 0; case UM_FILL_CMDLIST: { RConStartArgs* pArgs = pDlg->mp_Args; _ASSERTE(pArgs); pDlg->AddCommandList(pArgs->pszSpecialCmd); pDlg->AddCommandList(pDlg->mpsz_SysCmd, pArgs->pszSpecialCmd ? -1 : 0); pDlg->AddCommandList(pDlg->mpsz_CurCmd); pDlg->AddCommandList(pDlg->mpsz_DefCmd); // Может быть позван после очистки истории из меню, тогда нет смысла и дергаться if (wParam) { LPCWSTR pszHistory = gpSet->HistoryGet(); if (pszHistory) { while (*pszHistory) { pDlg->AddCommandList(pszHistory); pszHistory += _tcslen(pszHistory)+1; } } } // Tasks int nGroup = 0; const Settings::CommandTasks* pGrp = NULL; while ((pGrp = gpSet->CmdTaskGet(nGroup++))) { pDlg->AddCommandList(pGrp->pszName); } } return 0; case UM_USER_CONTROLS: { if (SendDlgItemMessage(hDlg, rbCurrentUser, BM_GETCHECK, 0, 0)) { EnableWindow(GetDlgItem(hDlg, cbRunAsRestricted), TRUE); //BOOL lbText = SendDlgItemMessage(hDlg, cbRunAsRestricted, BM_GETCHECK, 0, 0) == 0; EnableWindow(GetDlgItem(hDlg, tRunAsUser), FALSE); EnableWindow(GetDlgItem(hDlg, tRunAsPassword), FALSE); } else { if (SendDlgItemMessage(hDlg, tRunAsUser, CB_GETCOUNT, 0, 0) == 0) { DWORD dwLevel = 3, dwEntriesRead = 0, dwTotalEntries = 0, dwResumeHandle = 0; NET_API_STATUS nStatus; USER_INFO_3 *info = NULL; nStatus = ::NetUserEnum(NULL, dwLevel, FILTER_NORMAL_ACCOUNT, (PBYTE*) & info, MAX_PREFERRED_LENGTH, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle); if (nStatus == NERR_Success) { wchar_t *pszAdmin = NULL, *pszLikeAdmin = NULL, *pszOtherUser = NULL; for (DWORD i = 0; i < dwEntriesRead; ++i) { // usri3_logon_server "\\*" wchar_t * if (!(info[i].usri3_flags & UF_ACCOUNTDISABLE) && info[i].usri3_name && *info[i].usri3_name) { SendDlgItemMessage(hDlg, tRunAsUser, CB_ADDSTRING, 0, (LPARAM)info[i].usri3_name); if (info[i].usri3_priv == 2/*USER_PRIV_ADMIN*/) { if (!pszAdmin && (info[i].usri3_user_id == 500)) pszAdmin = lstrdup(info[i].usri3_name); else if (!pszLikeAdmin && (lstrcmpi(pDlg->ms_CurUser, info[i].usri3_name) != 0)) pszLikeAdmin = lstrdup(info[i].usri3_name); } else if (!pszOtherUser && (info[i].usri3_priv == 1/*USER_PRIV_USER*/) && (lstrcmpi(pDlg->ms_CurUser, info[i].usri3_name) != 0)) { pszOtherUser = lstrdup(info[i].usri3_name); } } } if (GetWindowTextLength(GetDlgItem(hDlg, tRunAsUser)) == 0) { // Try to suggest "Administrator" account SetDlgItemText(hDlg, tRunAsUser, pszAdmin ? pszAdmin : pszLikeAdmin ? pszLikeAdmin : pszOtherUser ? pszOtherUser : pDlg->ms_CurUser); } ::NetApiBufferFree(info); SafeFree(pszAdmin); SafeFree(pszLikeAdmin); } else { // Добавить хотя бы текущего SendDlgItemMessage(hDlg, tRunAsUser, CB_ADDSTRING, 0, (LPARAM)pDlg->ms_CurUser); } } EnableWindow(GetDlgItem(hDlg, cbRunAsRestricted), FALSE); EnableWindow(GetDlgItem(hDlg, tRunAsUser), TRUE); EnableWindow(GetDlgItem(hDlg, tRunAsPassword), TRUE); } if (wParam == rbAnotherUser) SetFocus(GetDlgItem(hDlg, tRunAsUser)); } return 0; case WM_SYSCOMMAND: switch (LOWORD(wParam)) { case ID_RESETCMDHISTORY: // Подтверждение спросит ResetCmdHistory if (gpSetCls->ResetCmdHistory(hDlg)) { wchar_t* pszCmd = GetDlgItemText(hDlg, IDC_RESTART_CMD); SendDlgItemMessage(hDlg, IDC_RESTART_CMD, CB_RESETCONTENT, 0,0); SendMessage(hDlg, UM_FILL_CMDLIST, FALSE, 0); if (pszCmd) { SetDlgItemText(hDlg, IDC_RESTART_CMD, pszCmd); free(pszCmd); } } SetWindowLongPtr(hDlg, DWLP_MSGRESULT, 0); return 1; case ID_STORECMDHISTORY: if (MsgBox(gpSet->isSaveCmdHistory ? L"Do you want to disable history?" : L"Do you want to enable history?", MB_YESNO|MB_ICONQUESTION, NULL, hDlg) == IDYES) { gpSetCls->SetSaveCmdHistory(!gpSet->isSaveCmdHistory); HMENU hSysMenu = GetSystemMenu(hDlg, FALSE); CheckMenuItem(hSysMenu, ID_STORECMDHISTORY, MF_BYCOMMAND|(gpSet->isSaveCmdHistory ? MF_CHECKED : 0)); } SetWindowLongPtr(hDlg, DWLP_MSGRESULT, 0); return 1; } break; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) { switch (LOWORD(wParam)) { case IDC_CHOOSE: { wchar_t *pszFilePath = SelectFile(L"Choose program to run", NULL, hDlg, L"Executables (*.exe)\0*.exe\0All files (*.*)\0*.*\0\0", true, false, false); if (pszFilePath) { SetDlgItemText(hDlg, IDC_RESTART_CMD, pszFilePath); SafeFree(pszFilePath); } return 1; } case IDC_CHOOSE_DIR: { wchar_t* pszDefFolder = GetDlgItemText(hDlg, IDC_STARTUP_DIR); wchar_t* pszFolder = SelectFolder(L"Choose startup directory", pszDefFolder, hDlg, false, false); if (pszFolder) { SetDlgItemText(hDlg, IDC_STARTUP_DIR, pszFolder); SafeFree(pszFolder); } SafeFree(pszDefFolder); return 1; } case cbRunAsAdmin: { // BCM_SETSHIELD = 5644 BOOL bRunAs = SendDlgItemMessage(hDlg, cbRunAsAdmin, BM_GETCHECK, 0, 0); if (gOSVer.dwMajorVersion >= 6) { SendDlgItemMessage(hDlg, IDC_START, 5644/*BCM_SETSHIELD*/, 0, bRunAs && (pDlg->mp_Args->aRecreate != cra_EditTab)); } if (bRunAs) { CheckRadioButton(hDlg, rbCurrentUser, rbAnotherUser, rbCurrentUser); CheckDlgButton(hDlg, cbRunAsRestricted, BST_UNCHECKED); RecreateDlgProc(hDlg, UM_USER_CONTROLS, 0, 0); } return 1; } case rbCurrentUser: case rbAnotherUser: case cbRunAsRestricted: { RecreateDlgProc(hDlg, UM_USER_CONTROLS, LOWORD(wParam), 0); return 1; } case rbRecreateSplitNone: case rbRecreateSplit2Right: case rbRecreateSplit2Bottom: { RConStartArgs* pArgs = pDlg->mp_Args; switch (LOWORD(wParam)) { case rbRecreateSplitNone: pArgs->eSplit = RConStartArgs::eSplitNone; break; case rbRecreateSplit2Right: pArgs->eSplit = RConStartArgs::eSplitHorz; break; case rbRecreateSplit2Bottom: pArgs->eSplit = RConStartArgs::eSplitVert; break; } EnableWindow(GetDlgItem(hDlg, tRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); EnableWindow(GetDlgItem(hDlg, stRecreateSplit), (pArgs->eSplit != pArgs->eSplitNone)); if (pArgs->eSplit != pArgs->eSplitNone) SetFocus(GetDlgItem(hDlg, tRecreateSplit)); return 1; } case IDC_START: { RConStartArgs* pArgs = pDlg->mp_Args; _ASSERTE(pArgs); SafeFree(pArgs->pszUserName); SafeFree(pArgs->pszDomain); //SafeFree(pArgs->pszUserPassword); if (SendDlgItemMessage(hDlg, rbAnotherUser, BM_GETCHECK, 0, 0)) { pArgs->RunAsRestricted = crb_Off; pArgs->pszUserName = GetDlgItemText(hDlg, tRunAsUser); if (pArgs->pszUserName) { //pArgs->pszUserPassword = GetDlgItemText(hDlg, tRunAsPassword); // Попытаться проверить правильность введенного пароля и возможность запуска bool bCheckPwd = pArgs->CheckUserToken(GetDlgItem(hDlg, tRunAsPassword)); DWORD nErr = bCheckPwd ? 0 : GetLastError(); if (!bCheckPwd) { DisplayLastError(L"Invalid user name or password was specified!", nErr, MB_ICONSTOP, NULL, hDlg); return 1; } } } else { pArgs->RunAsRestricted = SendDlgItemMessage(hDlg, cbRunAsRestricted, BM_GETCHECK, 0, 0) ? crb_On : crb_Off; } // Vista+ (As Admin...) pArgs->RunAsAdministrator = SendDlgItemMessage(hDlg, cbRunAsAdmin, BM_GETCHECK, 0, 0) ? crb_On : crb_Off; // StartupDir (may be specified as argument) wchar_t* pszDir = GetDlgItemText(hDlg, IDC_STARTUP_DIR); wchar_t* pszExpand = (pszDir && wcschr(pszDir, L'%')) ? ExpandEnvStr(pszDir) : NULL; LPCWSTR pszDirResult = pszExpand ? pszExpand : pszDir; // Another user? We may fail with access denied. Check only for "current user" account if (!pArgs->pszUserName && pszDirResult && *pszDirResult && !DirectoryExists(pszDirResult)) { wchar_t* pszErrInfo = lstrmerge(L"Specified directory does not exists!\n", pszDirResult, L"\n" L"Do you want to choose another directory?\n\n"); DWORD nErr = GetLastError(); int iDirBtn = DisplayLastError(pszErrInfo, nErr, MB_ICONEXCLAMATION|MB_YESNO, NULL, hDlg); if (iDirBtn == IDYES) { SafeFree(pszDir); SafeFree(pszExpand); SafeFree(pszErrInfo); return 1; } // User want to run "as is". Most likely it will fail, but who knows... } SafeFree(pArgs->pszStartupDir); pArgs->pszStartupDir = pszExpand ? pszExpand : pszDir; if (pszExpand) { SafeFree(pszDir) } // Command // pszSpecialCmd мог быть передан аргументом - умолчание для строки ввода SafeFree(pArgs->pszSpecialCmd); // GetDlgItemText выделяет память через calloc pArgs->pszSpecialCmd = GetDlgItemText(hDlg, IDC_RESTART_CMD); if (pArgs->pszSpecialCmd) gpSet->HistoryAdd(pArgs->pszSpecialCmd); if ((pArgs->aRecreate != cra_RecreateTab) && (pArgs->aRecreate != cra_EditTab)) { if (SendDlgItemMessage(hDlg, cbRunInNewWindow, BM_GETCHECK, 0, 0)) pArgs->aRecreate = cra_CreateWindow; else pArgs->aRecreate = cra_CreateTab; } if (((pArgs->aRecreate == cra_CreateTab) || (pArgs->aRecreate == cra_EditTab)) && (pArgs->eSplit != RConStartArgs::eSplitNone)) { BOOL bOk = FALSE; int nPercent = GetDlgItemInt(hDlg, tRecreateSplit, &bOk, FALSE); if (bOk && (nPercent >= 1) && (nPercent <= 99)) { pArgs->nSplitValue = (100-nPercent) * 10; } //pArgs->nSplitPane = 0; Сбрасывать не будем? } pDlg->mn_DlgRc = IDC_START; EndDialog(hDlg, IDC_START); return 1; } case IDC_TERMINATE: pDlg->mn_DlgRc = IDC_TERMINATE; EndDialog(hDlg, IDC_TERMINATE); return 1; case IDCANCEL: pDlg->mn_DlgRc = IDCANCEL; EndDialog(hDlg, IDCANCEL); return 1; } } else if ((HIWORD(wParam) == EN_SETFOCUS) && lParam) { switch (LOWORD(wParam)) { case tRecreateSplit: case tRunAsPassword: PostMessage((HWND)lParam, EM_SETSEL, 0, SendMessage((HWND)lParam, WM_GETTEXTLENGTH, 0,0)); break; } } break; default: return 0; }
bool CPkiCard::PinCmd(tPinOperation operation, const tPin & Pin, const std::string & csPin1, const std::string & csPin2, unsigned long & ulRemaining, const tPrivKey *pKey) { // No standard for Logoff, so each card has to implement // it's own command here. if (operation == PIN_OP_LOGOFF ) return LogOff(Pin); bool bRet = false; std::string csReadPin1, csReadPin2; const std::string *pcsPin1 = &csPin1; const std::string *pcsPin2 = &csPin2; bool bAskPIN = csPin1.empty(); bool bUsePinpad = bAskPIN ? m_poPinpad->UsePinpad(operation) : false; bad_pin: //If no Pin(s) provided and it's no Pinpad reader -> ask Pins if (bAskPIN && !bUsePinpad) { showPinDialog(operation, Pin, csReadPin1, csReadPin2, pKey); pcsPin1 = &csReadPin1; pcsPin2 = &csReadPin2; } CByteArray oPinBuf = MakePinBuf(Pin, *pcsPin1, bUsePinpad); if (operation != PIN_OP_VERIFY) oPinBuf.Append(MakePinBuf(Pin, *pcsPin2, bUsePinpad)); CByteArray oAPDU = MakePinCmd(operation, Pin); // add CLA, INS, P1, P2 oAPDU.Append((unsigned char) oPinBuf.Size()); // add P3 oAPDU.Append(oPinBuf); CByteArray oResp; bool bSelected = false; // Don't remove these brackets!! { CAutoLock autolock(this); // Select the path where the Pin is, if necessary if (!Pin.csPath.empty() && !bSelected && Pin.csPath != "3F00") { SelectFile(Pin.csPath); bSelected = true; } // Send the command if (csPin1.empty() && bUsePinpad) oResp = m_poPinpad->PinCmd(operation, Pin, PinUsage2Pinpad(Pin, pKey), oAPDU, ulRemaining); else oResp = SendAPDU(oAPDU); } unsigned long ulSW12 = getSW12(oResp); if (ulSW12 == 0x9000) bRet = true; else if (ulSW12 == 0x6983) ulRemaining = 0; else if (ulSW12 / 16 == 0x63C) ulRemaining = ulSW12 % 16; else throw CMWEXCEPTION(m_poContext->m_oPCSC.SW12ToErr(ulSW12)); #ifndef NO_DIALOGS // Bad PIN: show a dialog to ask the user to try again // PIN blocked: show a dialog to tell the user if (bAskPIN && !bRet) { DlgPinUsage usage = PinUsage2Dlg(Pin, pKey); DlgRet dlgret = DlgBadPin(usage, utilStringWiden(Pin.csLabel).c_str(), ulRemaining); if (0 != ulRemaining && DLG_RETRY == dlgret) goto bad_pin; } #endif // If PIN command OK and no SSO, then state that we have now // verified this PIN, this info is needed in the Sign() method if (bRet && !m_poContext->m_bSSO) { bool bFound = false; for (size_t i = 0; i < m_verifiedPINs.size() && !bFound; i++) bFound = (m_verifiedPINs[i] == Pin.ulID); if (!bFound) m_verifiedPINs.push_back(Pin.ulID); } return bRet; }
// Thu tuc xu ly thong diep LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { Create_All_Controls(hwnd, lParam); } case WM_COMMAND: switch(wParam) { case ID_BUTTON_OSM: { SelectFile(agrsb[0], true); Msg_OK(hwnd, agrsb[0].szFileName, "File Is Selected"); Default_typ(); for (int i=0; i<13; ++i) szCheck_TYP[i] = '0'; break; } case ID_BUTTON_TYP: { SelectFile(agrsb[1], true); Msg_OK(hwnd, agrsb[1].szFileName, "File Is Selected"); break; } case ID_BUTTON_NET: { SelectFile(agrsb[2], false); Add_ext(".net.xml", agrsb[2].szFileName); NetConverter(); Msg_OK(hwnd, agrsb[2].szFileName, "File Is Generated"); break; } case ID_BUTTON_VIN: { SelectFile(agrsb[3], true); Msg_OK(hwnd, agrsb[3].szFileName, "File Is Selected"); break; } case ID_BUTTON_ROU: { SelectFile(agrsb[4], false); Add_ext(".rou.xml", agrsb[4].szFileName); uiVehicles = Save_Text_Value(agrsc_edit[13], 10); uiTrips = Save_Text_Value(agrsc_edit[14], 10); Read_net_file(rouList); Print_rou_file(rouList); Msg_OK(hwnd, agrsb[4].szFileName, "File Is Generated"); break; } case ID_BUTTON_SUM: { SelectFile(agrsb[5], false); Add_ext(".sumocfg", agrsb[5].szFileName); uiBegin = Save_Text_Value(agrsc_edit[15], 10); uiEnd = Save_Text_Value(agrsc_edit[16], 10); Print_sumocfg_file(); Msg_OK(hwnd, agrsb[5].szFileName, "File Is Generated"); break; } case ID_BUTTON_TYP_DEFAULT: { Default_typ(); Msg_OK(hwnd, "Default Values Are Set.", "Successful!"); break; } case ID_BUTTON_TYP_SET: { char szId[22], szOneway[6], szAldis[9]; char szPriority[10], szNumLanes[10], szSpeeed[10]; GetWindowText(agrsc_combo[0].hControl, szId, 22); GetWindowText(agrsc_combo[1].hControl, szOneway, 6); GetWindowText(agrsc_combo[2].hControl, szAldis, 9); GetWindowText(agrsc_edit[0].hControl, szPriority, 10); GetWindowText(agrsc_edit[1].hControl, szNumLanes, 10); GetWindowText(agrsc_edit[2].hControl, szSpeeed, 10); for (int i=0; i<12; ++i) { if (!strcmp(szId, etypList[i].strId.c_str())) { if (!strcpy(szAldis, "allow")) Set_edge_att(etypList[i], szId, !strcmp(szOneway, "true"), atoi(szPriority), atoi(szNumLanes), atof(szSpeeed), szCheck_TYP, "000000000000"); else Set_edge_att(etypList[i], szId, !strcmp(szOneway, "true"), atoi(szPriority), atoi(szNumLanes), atof(szSpeeed), "000000000000", szCheck_TYP); break; } } Msg_OK(hwnd, "Values Are Set.", "Successful!"); break; } case ID_BUTTON_TYP_EXPORT: { SelectFile(agrsb[1], false); Add_ext(".typ.xml", agrsb[1].szFileName); Print_typ_file(); Msg_OK(hwnd, agrsb[1].szFileName, "File Is Exported"); break; } case ID_BUTTON_VIN_DEFAULT: { SelectFile(agrsb[3], false); Add_ext(".vin", agrsb[3].szFileName); Default_vin(); Save_vin_file(); Msg_OK(hwnd, agrsb[3].szFileName, "Default Values Are Set"); break; } case ID_BUTTON_VIN_ADD_MANUAL: { SelectFile(agrsb[3], false); Add_ext(".vin", agrsb[3].szFileName); char szId[20], szAccel[10], szDecel[10], szLength[10]; char szWidth[10], szMinGap[10], szMaxSpeed[10]; char szSigma[10], szTau[10], szGuiShape[21]; GetWindowText(agrsc_combo[3].hControl, szGuiShape, 21); GetWindowText(agrsc_edit[3].hControl, szId, 20); GetWindowText(agrsc_edit[4].hControl, szAccel, 10); GetWindowText(agrsc_edit[5].hControl, szDecel, 10); GetWindowText(agrsc_edit[6].hControl, szLength, 10); GetWindowText(agrsc_edit[7].hControl, szWidth, 10); GetWindowText(agrsc_edit[8].hControl, szMinGap, 10); GetWindowText(agrsc_edit[9].hControl, szMaxSpeed, 10); GetWindowText(agrsc_edit[10].hControl, szSigma, 10); GetWindowText(agrsc_edit[11].hControl, szTau, 10); Default_rate(); Set_vin_att(vtypList, szId, atof(szAccel), atof(szDecel), atof(szLength), atof(szWidth), atof(szMinGap), atof(szMaxSpeed), atof(szSigma), atof(szTau), szGuiShape); Save_vin_file(); Msg_OK(hwnd, agrsb[3].szFileName, "Values Are Set"); break; } case ID_BUTTON_VIN_ADD_RANDOM: { SelectFile(agrsb[3], false); Add_ext(".vin", agrsb[3].szFileName); vtypList.clear(); Default_rate(); Add_random_vin("Tra", 1.5, 4.0, 5.0, 1.75, 2.5, 30.0, "transport"); Add_random_vin("Bus", 2.0, 5.0, 5.8, 2.2, 2.5, 30.0, "bus"); Add_random_vin("Pas", 2.5, 6.0, 5.0, 2.0, 2.5, 40.0, "passenger"); Add_random_vin("Mot", 3.0, 6.5, 2.5, 0.5, 0.5, 40.0, "motorcycle"); Add_random_vin("Bic", 0.5, 1.0, 2.0, 0.3, 1.0, 4.0, "bicycle"); Save_vin_file(); Msg_OK(hwnd, agrsb[3].szFileName, "Random Values Are Generated"); break; } } for (int i=0; i<12; ++i) if (LOWORD(wParam) == ID_CHECK_TYP_TRANSPORT+i) { HWND checkbox_handle = (HWND)lParam; int state = SendMessage(checkbox_handle, BM_GETCHECK, 0, 0); if (state == BST_CHECKED) szCheck_TYP[i] = '1'; else szCheck_TYP[i] = '0'; } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; }
bool DlgController::OnCommand (int ctrlid, int code) { int i = 0; switch (ctrlid) { case IDC_BUTTON_ABOUT: ::DialogBox (_hInst, MAKEINTRESOURCE (DLG_ABOUT), _hWnd, DLGPROC (AboutDlgProc)); return true; case IDC_BUTTON_START: if (_isStopped) { _isStopped = !_painter.Start(); if (_isStopped) { _buttonStart.SetText ("Start"); } else { _buttonStart.SetText ("Stop"); } } else { Stop (); _buttonStart.SetText ("Start"); _isStopped = true; } return true; case IDC_RADIO_8_BITS: if (_radio8.IsClicked (code)) { _bitsPerSample = 8; ReInit (); } return true; case IDC_RADIO_16_BITS: if (_radio16.IsClicked (code)) { _bitsPerSample = 16; ReInit (); } return true; case IDC_RADIO_MIKE: if (_mike.IsClicked (code)) { _painter.SetSource (SRC_MIKE); ReInit (); return true; } break; case IDC_RADIO_FILE: if (_wave.IsClicked (code)) { SelectFile (SRC_WAVE); return true; } break; case IDC_RADIO_IMAGE: if (_image.IsClicked (code)) { SelectFile (SRC_IMAGE); return true; } break; case IDC_EDIT_FILE: if (_editFile.IsChanged (code)) ::PostMessage (_hWnd, WM_COMMAND, MAKEWPARAM (IDC_BUTTON_FILE, 0), 0); break; case IDC_BUTTON_FILE: { std::string name = _editFile.GetString (); SourceType type = ValidateFile (name, SRC_ANY); if (type == SRC_WAVE) { _mike.UnCheck (); _image.UnCheck (); _wave.Check (); _painter.SetSource (SRC_WAVE, name.c_str ()); } else if (type == SRC_IMAGE) { _mike.UnCheck (); _wave.UnCheck (); _image.Check (); _painter.SetSource (SRC_IMAGE, name.c_str ()); } else { _wave.UnCheck (); _image.UnCheck (); _mike.Check (); _painter.SetSource (SRC_MIKE); } InitScrollPositions (); ReInit (); } return true; case IDC_COMBO_SAMPLING: if (_comboFreq.IsChanged (code)) { _samplesPerSecond = _comboFreq.GetValue (); InitScrollPositions (); ReInit (); return true; } break; case IDC_COMBO_POINTS: if (_comboPoints.IsChanged(code)) { _fftPoints = _comboPoints.GetValue (); InitScrollPositions (); ReInit (); return true; } } return false; }
/** * @brief Called when user presses "New..." button. * * Asks filename for new filter from user (using standard * file picker dialog) and copies template file to that * name. Opens new filterfile for editing. * @todo (At least) Warn if user puts filter to outside * filter directories? * @todo Can global filter path be empty (I think not - Kimmo). */ void FileFiltersDlg::OnBnClickedFilterfileNewbutton() { String globalPath = theApp.m_globalFileFilter.GetGlobalFilterPathWithCreate(); String userPath = theApp.m_globalFileFilter.GetUserFilterPathWithCreate(); if (globalPath.empty() && userPath.empty()) { LangMessageBox(IDS_FILEFILTER_NO_USERFOLDER, MB_ICONSTOP); return; } // Format path to template file String templatePath(globalPath); if (templatePath[templatePath.length() - 1] != '\\') templatePath += '\\'; templatePath += FILE_FILTER_TEMPLATE; if (paths_DoesPathExist(templatePath.c_str()) != IS_EXISTING_FILE) { CString msg; LangFormatString2(msg, IDS_FILEFILTER_TMPL_MISSING, FILE_FILTER_TEMPLATE, templatePath.c_str()); AfxMessageBox(msg, MB_ICONERROR); return; } String path = globalPath.empty() ? userPath : globalPath; if (!globalPath.empty() && !userPath.empty()) { path = CSharedFilterDlg::PromptForNewFilter(this, globalPath, userPath); if (path.empty()) return; } if (path.length() && path[path.length() - 1] != '\\') path += '\\'; CString s; if (SelectFile(GetSafeHwnd(), s, path.c_str(), IDS_FILEFILTER_SAVENEW, IDS_FILEFILTER_FILEMASK, FALSE)) { // Fix file extension TCHAR file[_MAX_FNAME] = {0}; TCHAR ext[_MAX_EXT] = {0}; TCHAR dir[_MAX_DIR] = {0}; TCHAR drive[_MAX_DRIVE] = {0}; _tsplitpath(s, drive, dir, file, ext); if (_tcslen(ext) == 0) { s += FileFilterExt; } else if (_tcsicmp(ext, FileFilterExt) != 0) { s = drive; s += dir; s += file; s += FileFilterExt; } // Open-dialog asks about overwriting, so we can overwrite filter file // user has already allowed it. if (!CopyFile(templatePath.c_str(), s, FALSE)) { ResMsgBox1(IDS_FILEFILTER_TMPL_COPY, templatePath.c_str(), MB_ICONERROR); return; } EditFileFilter(s); FileFilterMgr *pMgr = theApp.m_globalFileFilter.GetManager(); int retval = pMgr->AddFilter(s); if (retval == FILTER_OK) { // Remove all from filterslist and re-add so we can update UI CString selected; m_Filters->RemoveAll(); theApp.m_globalFileFilter.LoadAllFileFilters(); theApp.m_globalFileFilter.GetFileFilters(m_Filters, selected); UpdateFiltersList(); } } }