Acrobat Reader - Öffnen und warten, bis Fenster geschlossen wurde

26/02/2010 - 09:21 von René | Report spam
Dies ist eine mehrteilige Nachricht im MIME-Format.

=_NextPart_000_0120_01CAB6C5.1EBDD3D0

Hallo,

nachfolgender Programmcode ermittelt das mit der Dateiendung assoziierte Programm, startet es mit entsprechenden Parametern und wartet auf dessen Beendigung (WaitForExit).

In meinem speziellen Fall wird der Acrobat Reader mit einem Dokument gestartet.

Process proc = new Process();
proc.StartInfo.FileName = CFileAssocation.FileAssocation(".PDF");
proc.StartInfo.Arguments = sPDFFile;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
proc.Close();
MessageBox.Show("Fertig");

Wenn weitere Programminstanzen gestartet werden, macht der Acrobat Reader jedes Mal ein neues Dokumentfenster auf, ohne dass er erneut gestartet wird. Deswegen hat die Anweisung WaitForExit in solchen Fàllen nicht die erhoffte Wirkung.

Ich habe das Problem in diesem Fall anders gelöst, aber mich interessiert weiterhin folgendes:

Gibt es eine Möglichkeit zu ermitteln, dass a) das gerade neu geöffnetes Acrobat-Reader-Fenster von mir geöffnet wurde, um b) auf dessen Schließung zu warten?

Vielen Dank im Voraus

René
=_NextPart_000_0120_01CAB6C5.1EBDD3D0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.7600.16490"></HEAD>
<BODY style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px"
id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area">
<DIV><FONT face=Consolas>Hallo,</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>nachfolgender Programmcode ermittelt das mit der
Dateiendung assoziierte Programm, startet es mit entsprechenden Parametern und
wartet auf dessen Beendigung (WaitForExit).</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>In meinem speziellen Fall wird der Acrobat Reader mit
einem Dokument gestartet.</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>Process proc = new
Process();<BR>proc.StartInfo.FileName =
CFileAssocation.FileAssocation(".PDF");<BR>proc.StartInfo.Arguments =
sPDFFile;<BR>proc.StartInfo.CreateNoWindow =
true;<BR>proc.Start();<BR>proc.WaitForExit();<BR>proc.Close();<BR>MessageBox.Show("Fertig");</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Consolas>Wenn weitere Programminstanzen gestartet werden, macht
der&nbsp;Acrobat Reader jedes Mal ein neues Dokumentfenster auf, ohne dass er
erneut gestartet wird. Deswegen hat die Anweisung WaitForExit in solchen Fàllen
nicht die erhoffte Wirkung.</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>Ich habe das Problem in diesem Fall anders gelöst, aber
mich interessiert weiterhin folgendes:</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>Gibt es eine Möglichkeit zu ermitteln, dass a) das
gerade neu geöffnetes&nbsp;Acrobat-Reader-Fenster von mir geöffnet wurde, um b)
auf dessen Schließung zu warten?</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>Vielen Dank im Voraus</FONT></DIV>
<DIV><FONT face=Consolas></FONT>&nbsp;</DIV>
<DIV><FONT face=Consolas>-- </FONT></DIV>
<DIV><FONT face=Consolas>René</FONT></DIV></BODY></HTML>

=_NextPart_000_0120_01CAB6C5.1EBDD3D0--
 

Lesen sie die antworten

#1 Markus Springweiler
26/02/2010 - 10:00 | Warnen spam
Hallo René,

Wenn weitere Programminstanzen gestartet werden, macht der Acrobat Reader jedes Mal ein neues Dokumentfenster auf, ohne dass er erneut gestartet wird.



Es wird schon ein neuer Prozess gestartet:
Console.WriteLine(Process.Start(@"c:\temp\doc1.pdf").Id);
System.Threading.Thread.Sleep(3333);
Console.WriteLine(Process.Start(@"c:\temp\doc2.pdf").Id);

Allerdings macht die zweite Instanz nicht viel mehr, als die 1. zu finden
und ihr, über welche Wege auch immer, mitzuteilen, daß ein weiteres Fenster
zu Öffnen ist -- danach beendet sich die 2. Instanz wieder bevor du Notiz
von ihr genommen hast.

/\/\arkus.

Ähnliche fragen