📄 findhostsdlg.cpp
字号:
m_nofm = ""; UpdateData(FALSE); m_num_items = m_list.GetItemCount(); if (m_num_items < 1) return; m_ok_btn.EnableWindow(FALSE); m_cancel_btn.EnableWindow(FALSE); m_progress.SetRange(0, m_num_items); m_progress.SetStep(1); m_progress.SetPos(0); m_bWildcard = true; m_hFindThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)OnFindBtnThread, this, 0, &dwThreadID); if (m_hFindThread == NULL) { MessageBox("Unable to create a Find thread", "Error", MB_OK); } }}void CFindHostsDlg::OnFindhosts() { DWORD dwThreadID; UpdateData(); m_nofm = ""; UpdateData(FALSE); m_num_items = m_list.GetItemCount(); if (m_num_items < 1) return; m_ok_btn.EnableWindow(FALSE); m_cancel_btn.EnableWindow(FALSE); m_progress.SetRange(0, m_num_items); m_progress.SetStep(1); m_progress.SetPos(0); m_bWildcard = false; m_hFindThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)OnFindBtnThread, this, 0, &dwThreadID); if (m_hFindThread == NULL) { MessageBox("Unable to create a Find thread", "Error", MB_OK); }}void CFindHostsDlg::OnLoadlist() { CFileDialog f( TRUE, "*.txt", m_filename, OFN_HIDEREADONLY | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, "Text (*.txt)|*.txt|All files (*.*)|*.*||" ); if (f.DoModal() == IDOK) { POSITION p; QVS_Container qvs; CStdioFile fin; CString line; p = f.GetStartPosition(); m_filename = f.GetNextPathName(p); if (fin.Open(m_filename, CFile::modeRead)) { while (fin.ReadString(line)) { qvs.decode_string((char*)(LPCTSTR)line); } fin.Close(); char host[100]; if (qvs.first(host, 100)) { InsertHost(host); while (qvs.next(host, 100)) { InsertHost(host); } } qvs.output_encoded_string(m_encoded_hosts.GetBuffer(8192), 8192); m_encoded_hosts.ReleaseBuffer(); UpdateData(FALSE); } else { MessageBox(m_filename, "Unable to open file"); } }}void CFindHostsDlg::OnSavelist() { CFileDialog f( FALSE, "*.txt", m_filename, OFN_HIDEREADONLY | OFN_EXPLORER | OFN_PATHMUSTEXIST, "Text (*.txt)|*.txt|All files (*.*)|*.*||" ); if (f.DoModal() == IDOK) { POSITION p; QVS_Container qvs; CStdioFile fout; CString str; p = f.GetStartPosition(); m_filename = f.GetNextPathName(p); if (fout.Open(m_filename, CFile::modeWrite | CFile::modeCreate)) { qvs.decode_string((char*)(LPCTSTR)m_encoded_hosts); if (qvs.first(str.GetBuffer(100), 100)) { str.ReleaseBuffer(); fout.WriteString(str + "\n"); while (qvs.next(str.GetBuffer(100), 100)) { str.ReleaseBuffer(); fout.WriteString(str + "\n"); } } fout.Close(); } else { MessageBox(m_filename, "Unable to open file"); } }}BOOL CFindHostsDlg::OnInitDialog() { CDialog::OnInitDialog(); ParseRegistry(); r_domain.SetInitialPosition(m_encoded_hosts_edit.m_hWnd, RSR_STRETCH_RIGHT); r_hosts.SetInitialPosition(m_list.m_hWnd, RSR_STRETCH); r_ok.SetInitialPosition(m_ok_btn.m_hWnd, RSR_MOVE); r_cancel.SetInitialPosition(m_cancel_btn.m_hWnd, RSR_MOVE); r_progress.SetInitialPosition(m_progress.m_hWnd, RSR_MOVE); r_nofm.SetInitialPosition(m_nofm_static.m_hWnd, RSR_MOVE); m_pImageList = new CImageList(); m_pImageList->Create(16, 16, ILC_COLOR8 | ILC_MASK, 2, 1); m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON_YES)); m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON_NO)); m_list.SetImageList(m_pImageList, LVSIL_STATE); Refresh(); UpdateSelectedHosts(); m_bInitDialogCalled = true; return TRUE; // return TRUE unless you set the focus to a control}void CFindHostsDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); r_domain.Resize(cx, cy); r_hosts.Resize(cx, cy); r_ok.Resize(cx, cy); r_cancel.Resize(cx, cy); r_progress.Resize(cx, cy); r_nofm.Resize(cx, cy); if (m_bInitDialogCalled) m_list.Arrange(LVA_DEFAULT );}LRESULT CFindHostsDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_USER + 1: if (lParam) { m_list.SetItemState((int)wParam, LVIS_SELECTED, LVIS_SELECTED); } else { if ((int)wParam != -1) { m_list.SetItemState((int)wParam, 0, LVIS_SELECTED); m_list.SetItemState((int)wParam, INDEXTOSTATEIMAGEMASK(0), LVIS_STATEIMAGEMASK); } m_num_threads--; if (m_num_threads == 0) { m_ok_btn.EnableWindow(); m_cancel_btn.EnableWindow(); UpdateSelectedHosts(); } m_progress.StepIt(); m_nofm.Format("%d of %d", m_progress.GetPos(), m_num_items); UpdateData(FALSE); } break; case WM_USER + 2: m_list.SetItemState((int)wParam, LVIS_SELECTED, LVIS_SELECTED); m_list.SetItemState((int)wParam, INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK); m_num_threads--; if (m_num_threads == 0) { m_ok_btn.EnableWindow(); m_cancel_btn.EnableWindow(); UpdateSelectedHosts(); } m_progress.StepIt(); m_nofm.Format("%d of %d", m_progress.GetPos(), m_num_items); UpdateData(FALSE); break; } return CDialog::WindowProc(message, wParam, lParam);}void CFindHostsDlg::OnVerify() { char host[100]; SOCKET sock; int index; char str[100]; HCURSOR hOldCursor; POSITION pos; UpdateData(); m_nofm = ""; UpdateData(FALSE); m_num_threads = m_list.GetSelectedCount(); if (m_num_threads == 0) return; pos = m_list.GetFirstSelectedItemPosition(); if (pos == NULL) { return; } hOldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); m_ok_btn.EnableWindow(FALSE); m_cancel_btn.EnableWindow(FALSE); m_num_items = m_list.GetSelectedCount(); m_progress.SetRange(0, m_num_items); m_progress.SetPos(0); m_progress.SetStep(1); m_nofm.Format("0 of %d", m_num_items); UpdateData(FALSE); if (m_bNeedPassword) { CPwdDialog dlg; dlg.DoModal(); if (dlg.m_bUseDefault) strcpy(m_pszPhrase, MPD_DEFAULT_PASSPHRASE); else strcpy(m_pszPhrase, dlg.m_password); } while (pos) { index = m_list.GetNextSelectedItem(pos); if (m_list.GetItemText(index, 0, host, 100) == 0) { SetCursor(hOldCursor); MessageBox("GetItemText failed", "Error", MB_OK); return; } if (!ConnectToHost(host, m_nPort, m_pszPhrase, &sock)) { easy_closesocket(sock); ::PostMessage(m_hWnd, WM_USER+1, index, FALSE); continue; } if (WriteString(sock, "version") == SOCKET_ERROR) { easy_closesocket(sock); ::PostMessage(m_hWnd, WM_USER+1, index, FALSE); continue; } if (!ReadString(sock, str)) { easy_closesocket(sock); ::PostMessage(m_hWnd, WM_USER+1, index, FALSE); continue; } WriteString(sock, "done"); easy_closesocket(sock); ::PostMessage(m_hWnd, WM_USER+2, index, FALSE); } SetCursor(hOldCursor);}void CFindHostsDlg::UpdateSelectedHosts(){ QVS_Container qvs; POSITION pos; char host[100]; int index; UpdateData(); pos = m_list.GetFirstSelectedItemPosition(); while (pos) { index = m_list.GetNextSelectedItem(pos); if (m_list.GetItemText(index, 0, host, 100) == 0) { MessageBox("GetItemText failed", "Error", MB_OK); return; } qvs.encode_string(host); } qvs.output_encoded_string(m_encoded_hosts.GetBuffer(8192), 8192); m_encoded_hosts.ReleaseBuffer(); UpdateData(FALSE);}void CFindHostsDlg::OnClickDomainHostList(NMHDR* pNMHDR, LRESULT* pResult) { UpdateSelectedHosts(); *pResult = 0;}void CFindHostsDlg::OnConnectionOptions() { CMPDConnectionOptionsDlg dlg; dlg.m_bFastConnect = m_bFastConnect; dlg.m_phrase = m_pszPhrase; dlg.m_port = m_nPort; if (dlg.DoModal() == IDOK) { if (dlg.m_bPhrase) { strcpy(m_pszPhrase, dlg.m_phrase); } else { strcpy(m_pszPhrase, MPD_DEFAULT_PASSPHRASE); } m_bNeedPassword = false; m_bUseDefault = false; if (dlg.m_bPort) { m_nPort = dlg.m_port; } else { m_nPort = MPD_DEFAULT_PORT; } m_bFastConnect = (dlg.m_bFastConnect == TRUE); }}void CFindHostsDlg::InsertHost(char *host){ LVFINDINFO info; int i; char pszHost[100]; if (host == NULL || *host == '\0') return; strncpy(pszHost, host, 100); for (i=0; i<100, pszHost[i] != '\0'; i++) pszHost[i] = toupper(pszHost[i]); info.flags = LVFI_STRING; info.psz = pszHost; if (m_list.FindItem(&info) == -1) { m_list.InsertItem(0, pszHost, 0); }}void CFindHostsDlg::SelectHost(char *host){ LVFINDINFO info; int i; char pszHost[100]; if (host == NULL || *host == '\0') return; strncpy(pszHost, host, 100); for (i=0; i<100, pszHost[i] != '\0'; i++) pszHost[i] = toupper(pszHost[i]); info.flags = LVFI_STRING; info.psz = pszHost; i = m_list.FindItem(&info); if (i != -1) { m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -