В настоящее время я пытаюсь выполнить следующее:C# получить полный путь еще не запущенного процесса объекта
Для SDK, который мы предоставляем нашим клиентам, мы хотим, чтобы SDK-разработчиков, чтобы иметь возможность обеспечивают внешние вызовы приложений, чтобы они могли вставлять дополнительные кнопки. Эти кнопки, чем запускают внешнее приложение или открывают файл с приложением по умолчанию для него (например, Word for * .docx).
Должно быть какое-то визуальное различие между различными кнопками, поэтому наш подход заключается в том, чтобы показать значок приложения, которое будет вызываться.
Теперь есть три различные виды звонков: (Приводимые ниже строки всегда будут значение ProcessStartInfo.FileName)
- Вызов приложения, предоставляющее полный путь к приложению, возможно, с environement варов (например,
"C:\Program Files\Internet Explorer\iexplore.exe"
/"%ProgramFiles%\Internet Explorer\iexplore.exe"
) - Вызов приложения, обеспечивающий только имя исполняемого файла, поскольку приложение может быть найден в PATH переменной (например,
"iexplore"
) - Открытие документа без предоставления заявления в ор ru (см.
"D:\test.html"
)
Мы ищем способ найти соответствующий значок для любого данного вызова. Для этого мы должны найти путь полного приложения приложения, которое будет выполняться в любом из трех способов выше, но перед тем мы фактически начали процесс
Есть ли способ найти полный путь или значок объекта System.Diagnostics.Process или System.Diagnostics.ProcessStartInfo, до процесс начат?
Важно: Мы не должны начать процесс, прежде чем (может иметь побочные эффекты)
Пример кода:
var process = new Process
{
StartInfo =
{
//applicationPath could be any of the stated above calls
FileName = Environment.ExpandEnvironmentVariables(applicationPath)
}
};
//we have to find the full path here, but MainModule is null as long as the process object has not yet started
var icon = Icon.ExtractAssociatedIcon(process.MainModule.FullPath)
Solution Спасибо вам, ребята, я нашел свое решение , Проект, связанный с here at CodeProject, предлагает решение для моей точной проблемы, которая работает в равной степени с программами и файлами и может предоставить значок перед запуском процесса. Спасибо за ссылку @wgraham
Вам необходимо запросить список программ по умолчанию. затем найдите программу по умолчанию, связанную с расширением, которое вы хотите открыть. затем получите путь к запуску, и вы можете получить значок программы с помощью одного из методов win api. – Franck