Процесс. Выдерживает не всегда стрельбу
Если я запустил следующий код:
Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "notepad.exe";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();
public static void Process_OnExit(object sender, EventArgs e)
{
// Delete the file on exit
}
Событие возникает при выходе из блокнота. Если я попробую тот же код, но вместо этого создаю изображение:
Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = @"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();
public static void Process_OnExit(object sender, EventArgs e)
{
// Delete the file on exit
}
Событие никогда не запускается. Это потому, что процесс, который загружает изображение, никогда не закрывается?
ОБНОВЛЕНИЕ: Процесс запуска - это не всегда изображение. Это может быть что угодно (pdf, word document и т.д.). Может быть, мой подход неправильный. Есть ли другой способ удалить файл после выхода пользователя из процесса?
Спасибо
Ответы
Ответ 1
Я бы использовал временный файл. Существуют функции для создания временного файла...
Ваше мероприятие не стреляет из-за отсутствия самого процесса, я думаю. Вы можете попытаться использовать оболочку для "запуска" рассматриваемого документа, но ничего не гарантирует, что будет обработчик для всех типов файлов.
Ответ 2
вам следует активировать события для процесса.
process_name.EnableRaisingEvents = true;
Ответ 3
Для Windows Media Player попробуйте следующий код
myProcess.StartInfo.FileName = "wmplayer";
myProcess.StartInfo.Arguments = "yourfilename";
Для просмотра изображений в Windows попробуйте
myProcess.StartInfo.FileName = @"rundll32.exe";
myProcess.StartInfo.Arguments = @"C:\Windows\System32\shimgvw.dll,ImageView_Fullscreen " + yourfilepath;
Теперь оба передадут ваше завершенное событие в Windows 7
Ответ 4
Вы используете средство просмотра изображений по умолчанию в Windows, поскольку файл изображения не является исполняемым. Я изменил код для использования XP по умолчанию, и он работал нормально.
class Program
{
static void Main(string[] args)
{
Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = @"rundll32.exe";
myProcess.EnableRaisingEvents = true;
myProcess.StartInfo.Arguments = @"C:\winnt\System32\shimgvw.dll,ImageView_Fullscreen c:\leaf.jpg";
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();
Console.Read();
}
public static void Process_OnExit(object sender, EventArgs e)
{
Console.WriteLine("called");
Console.Read();
}
}
Ответ 5
Событие запускается для меня с помощью Microsoft Photo Viewer в качестве средства просмотра. Возможно, вы используете средство просмотра, которое фактически не закрывается?