private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if ((nCode >= 0) && (wParam == (IntPtr)WM_KEYDOWN)) { int vkCode = Marshal.ReadInt32(lParam); if ((Key)vkCode == Key.O) { Activate(); FilesSearchTB.Focus(); return((IntPtr)1); } } return(CallNextHookEx(hook, nCode, wParam, lParam)); }
private void SearchButton(object sender, RoutedEventArgs e) { string tmp = FilesSearchTB.Text; string pattern = "[\\/:*?<>|+.%!@\"]"; Regex rgx = new Regex(pattern); if (tmp == "") { MessageBox.Show("Строка поиска не может быть пустой", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (rgx.IsMatch(tmp)) { MessageBox.Show("Строка поиска содержит недопустимые символы", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } FilesSearchTB.Clear(); FileSearchLabel.Content = "Поиск..."; Thread th = new Thread(new ParameterizedThreadStart(SearchFileOrDirectories)); th.SetApartmentState(ApartmentState.STA); th.IsBackground = true; th.Start(tmp); }