Использование кода VB.NET, как я могу открыть процесс проводника для поиска результатов на основе критериев из формы? Например: поле формы A имеет в нем число «1», а поле формы B имеет в нем дату «2015-11-30». Объединив эти два критерия в коде VB, я хочу запустить процесс проводника и отобразить все имена файлов в данной корневой папке, содержащей шаблон «1 2015-11-30». (По сути, это были бы те же самые результаты, которые я бы набрал выше в поле поиска Explorer в Windows 7, за исключением того, что мне нужно его закодировать.)Открытый процесс Explorer с шаблоном поиска по имени файла (VB.NET)
UPDATE 25 января: Я вернулся к этой последней оставшейся проблеме после завершая все другие кодировки проекта, и у меня все еще возникает проблема в Windows 7 (отлично работает в Windows 10) после долгих исследований. Некоторая дополнительная полезная информация, которую я могу предложить на этот раз, показана ниже. Заметьте, я также попробовал синтаксис AQS Search, используя кодировку url в месте Crumb и все еще получаю ту же ошибку времени выполнения. Также обратите внимание: я НЕ получаю ошибку времени выполнения, когда я оставляю аргумент Crumb, но это мало практическое применение для меня, просто наблюдение.
Наконец, я также попробовал код на других машинах Win 7 в корпоративных офисах и получил ту же ошибку времени выполнения. Возможно, кто-то может попробовать код ниже фрагмента ниже на их Win 7 и сообщить, что они получают?
импортированы АССАМБЛЕЙ:
Imports System
Imports System.IO
Imports System.Text
Imports System.Drawing.Imaging
Imports System.Threading
Imports System.Configuration
Imports System.Net.Mail
Imports Microsoft.Win32
Imports System.Web
Imports System.ComponentModel
Imports System.Windows
ПОИСК КНОПКА фрагмент кода, ВКЛЮЧАЯ Messagebox OUTPUT строки поиска:
Dim searchString As String
Dim Search As String
searchString = ControlChars.Quote & " " & Me.DateTimePicker1.Value.Year.ToString & "-" & Me.DateTimePicker1.Value.Month.ToString().PadLeft(2, "0") & "-" & Me.DateTimePicker1.Value.Day.ToString().PadLeft(2, "0") & ControlChars.Quote
Search = "search-ms:query=System.FileName:~=" & searchString.ToString & "&crumb=location:" & strArchiveDirectory_SHARED & ",recursive" & "&"
MessageBox.Show(Search) 'Messagebox shows: search-ms:query=System.FileName:~=" 2016-01-25"&crumb=location:C:\EPS\Enforcement Photos Archive_DEMO,recursive&
Process.Start(Search)
Ошибка выполнения:
System.ComponentModel.Win32Exception was unhandled
ErrorCode=-2147467259
HResult=-2147467259
Message=The system cannot find the file specified
NativeErrorCode=2
Source=System
StackTrace:
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at EPS.Form1.btnSearch_Click(Object sender, EventArgs e) in E:\Code Development\Visual Studio 2013\EPS\EPS\Form1.vb:line 622
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
at System.Windows.Forms.Control.DefWndProc(Message& m)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at EPS.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
ДВОЕ веб-ресурса ССЫЛКИ I СПРАВОЧНАЯ ИНФОРМАЦИЯ:
https://msdn.microsoft.com/en-us/library/ff684385.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/cc144080(v=vs.85).aspx
Возможно, вам захочется изучить сохраненные поисковые запросы для Проводника, а затем запустить их как процесс, как это предлагается в этом ответе SuperUser: http://superuser.com/questions/499238/command-to-open-windows-explorer -window-with-filter-results – Adrian
Привет Адриан. Извините за задержанный ответ, и спасибо, что нашли время ответить.Если я не упустил что-то в предложении «Сохраненный поиск», я не вижу, как это будет работать, поскольку критерии поиска определяются пользователем через пользовательский интерфейс приложения. – AlanGrant
Вы должны ввести данные из формы и использовать ее для создания содержимого сохраненного файла поиска (формат которого можно легко распознать путем создания сохраненного поиска с типом интересующих вас критериев, а затем его сохранения) , а затем выполните этот файл. Вы можете удалить его после этого, если хотите. – Adrian