/** * Delete the messages that are queued for deletion. * @return HRESULT */ HRESULT Deleter::PurgeQueuedMessages() { HRESULT hr = hrSuccess; EntryListPtr ptrEntryList; list<entryid_t>::const_iterator iEntryId; ULONG ulIdx = 0; if (m_lstEntryIds.empty()) goto exit; hr = MAPIAllocateBuffer(sizeof(ENTRYLIST), &ptrEntryList); if (hr != hrSuccess) goto exit; hr = MAPIAllocateMore(m_lstEntryIds.size() * sizeof(SBinary), ptrEntryList, (LPVOID*)&ptrEntryList->lpbin); if (hr != hrSuccess) goto exit; ptrEntryList->cValues = m_lstEntryIds.size(); for (iEntryId = m_lstEntryIds.begin(); iEntryId != m_lstEntryIds.end(); ++iEntryId, ++ulIdx) { ptrEntryList->lpbin[ulIdx].cb = iEntryId->size(); ptrEntryList->lpbin[ulIdx].lpb = *iEntryId; } hr = CurrentFolder()->DeleteMessages(ptrEntryList, 0, NULL, 0); if (hr != hrSuccess) { Logger()->Log(EC_LOGLEVEL_FATAL, "Failed to delete %u messages. (hr=%s)", ptrEntryList->cValues, stringify(hr, true).c_str()); goto exit; } m_lstEntryIds.clear(); exit: return hr; }
void FindFiles::findAll(files* f, matcher& m, bool includeSubFolders, bool skipSystemFolders) { while (FindItem(includeSubFolders, skipSystemFolders)) { fileData fd(AllInfo(), CurrentFolder()); if (!isFolder() && m.matched(fd)) { f->add(fd); } } } // void FindFiles::findAll(files* f)
void CPhiFs::KillThreadsL(void) { CPhiSelection* selection=iListBox->SelectionLC(CurrentFolder(),EFalse,CPhiSelection::ENone); TInt count=selection->Array()->MdcaCount(); for(TInt ii=0;ii<count;ii++) { TPckgC16<TPhiEntry> item(selection->Array()->MdcaPoint(ii)); RThread thread; if(thread.Open(item().iName)==KErrNone) { if(!thread.Protected()) thread.Kill(KErrNone); thread.Close(); } } CleanupStack::PopAndDestroy(); //selection RefreshL(); }
/** * マクロから呼び出されるエントリポイント。 * @param [in] text 検索文字列 * @return 戻り値に意味はない */ EXPORT int search(const char *text) { if (!IsHidemaruMail()) { #ifndef _DEBUG MessageBox(NULL, "このマクロは秀丸からは起動できません。", NULL, MB_OK); return 0; #endif } HWND hwnd = reinterpret_cast<HWND>(MainWnd()); if (hwnd == NULL) { MessageBox(NULL, "秀丸メール本体が起動してなければなりません。", NULL, MB_OK); return 0; } if (strlen(text) != 0) { std::string oneLine = text; size_t pos; if ((pos = oneLine.find("\r\n")) != std::string.npos) { oneLine[pos] = '\0'; } if (oneLine.find(' ') != std::string.npos) { selectedText = "\""; selectedText += YenEncode(oneLine.c_str()); selectedText += "\""; } else { selectedText = YenEncode(oneLine.c_str()); } } // SetQuietMode を使用すると、検索結果ウィンドウが手前に来ない // SetQuietMode(1); int rc = (int)DialogBox(hInst, (LPCTSTR)IDD_HIDEMARUMAILSEARCH_DIALOG, hwnd, (DLGPROC)DialogProc); // SetQuietMode(0); if (rc == IDOK) { const char *account = NULL; const char *folder = NULL; switch (selectedRadioButton) { case IDC_RADIO1: case IDC_RADIO2: account = (const char *)ExecAtMain("CurrentAccount"); if (IsHidemaruMailMain() || IsHidemaruMailGrep()) { folder = CurrentFolder(); } else { folder = (const char *)ExecAtMain("CurrentFolder"); } break; case IDC_RADIO3: account = (const char *)ExecAtMain("CurrentAccount"); if (selectedCheckBox) { folder = ""; } else { folder = "受信+送信済み+ユーザー"; } break; case IDC_RADIO4: account = ""; if (selectedCheckBox) { folder = ""; } else { folder = "受信+送信済み+ユーザー"; } break; } #ifdef _DEBUG switch (selectedRadioButton) { case IDC_RADIO1: case IDC_RADIO2: case IDC_RADIO3: if (account == NULL || strlen(account) == 0) { MessageBox(NULL, "秀丸メールにアカウントが見つかりませんでした。\nこのエラーが頻発するようなら作者に連絡してください。", "HidemaruMailSearch", MB_OK); } break; } #endif std::string inputText = history[0].c_str(); std::string query; trim(inputText); // お気に入りの保存と読み込み if (inputText.find("fav:") == 0) { size_t pos = inputText.find(' '); if (pos != std::string::npos) { size_t len = strlen("fav:"); if (pos != len) { std::string favname = inputText.substr(len, pos - len); std::string favval = inputText.substr(pos + 1); if (favval == "\"\"") { iniFile->write("Favorite", favname.c_str(), NULL); return 0; } else { iniFile->write("Favorite", favname.c_str(), favval.c_str()); return 0; } } } else { char *favval = iniFile->read("Favorite", inputText.substr(strlen("fav:")).c_str()); if (favval != NULL) { inputText = favval; free(favval); } } } if (inputText.compare("help:") == 0) { if (helpCmd == "") { char *temp; char *work = NULL; DWORD type; if ((temp = (char *)get_reg_value(hideinstloc, &type)) == NULL) { // 秀丸がインストールされていないなら、メモ帳 helpCmd = "notepad.exe "; work = (char *)get_reg_value(turukamedir, &type); helpCmd += "\""; helpCmd += work; helpCmd += "\\HidemaruMailSearch.txt\""; } else { helpCmd = "\""; helpCmd += temp; helpCmd += "\\Hidemaru.exe\" \""; helpCmd += "/j"; helpCmd += HELPFILE_LINE; helpCmd += " "; if ((work = (char *)get_reg_value(macropath, &type)) == NULL) { // マクロパスが存在しなければ秀丸の InstallLocation がホーム helpCmd += temp; } else { helpCmd += work; } helpCmd += "\\HidemaruMailSearch.txt\""; } if (temp != NULL) { free(temp); } if (work != NULL) { free(work); } } PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si, 0, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); CreateProcess(NULL, (LPSTR)helpCmd.c_str(), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); return 0; } else if (inputText.find("debug:") == 0) { query = inputText.substr(strlen("debug:")); } else { std::string flag; trim(inputText); while (inputText.size() != 0) { int tagKind = findTag(inputText); if (tagKind == TARGET_SMALLHEADERBODY && inputText.find(colon_targets[TARGET_SMALLHEADERBODY]) != 0) { inputText = colon_targets[TARGET_SMALLHEADERBODY] + inputText; } rc = makeQuery(tagKind, inputText, query, flag); trim(inputText); } if (flag.size() != 0) { if (query.size() != 0) { query += ","; } query += flag; } // サブフォルダを検索対称にするかどうか if (selectedRadioButton == IDC_RADIO2) { query += ",subfolder=1"; } else { query += ",subfolder=0"; } // 常にハイライト query += ",hilight=1"; } #ifdef _DEBUG println("■アカウント"); println(account); println("■フォルダ"); println(folder); println("■検索式"); println(query); println("■入力"); println(history[0]); #endif if (IsHidemaruMailMain() || IsHidemaruMailGrep()) { SetFindPack(query.c_str()); StartDoGrep(account, folder); PushFindPack(); } else { ExecAtMain("SetFindPack", query.c_str()); ExecAtMain("StartDoGrep", account, folder); ExecAtMain("PushFindPack"); } } return 0; }