Hallo Experten,
ich habe ein Problem mit der Prozesskontrolle. Ich möchte folgendes in meinem Programm erreichen:
Ich produziere per Fernsteuerung eine Word-Datei und speicher sie ab und beende sauber die COM-Session. Nun möchte ich das fertige Dokument dem User zeigen, so dass er noch manuelle Änderungen vornehmen kann. Ich starte über die Klasse Process() also einen neuen Prozess, öffne das Dokument und warte auf dessen Abschluss. Nun überprüfe ich, ob sich am Dateidatum etwas geändert hat, wenn ja möchte ich das Dokument auf der Datenbnk sichern.
Eigentlich funktioniert das auch stabil, wenn nicht schon eine Instanz von Word geöffnet ist, z.B. über Outlook mit Word als Mail-Editor. Hier also ein Codebeispiel:
//Eigenschaften der Datei ermitteln
DateTime dtFileOrg = File.GetLastWriteTime(Filename);
Process pr = new Process();
pr.StartInfo.FileName = Filename;
pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
pr.Start();
pr.WaitForExit(); //<-!!! hier kommt der Fehler bei schon vorher geöffnetem Word
pr.Close();
//nach Schließen des Prozesses Eigenschaften der Datei ermitteln
DateTime dtFileNow = File.GetLastWriteTime(Filename);
if (dtFileNow != dtFileOrg)
{
DialogResult diar = MessageBox.Show("Die Datei wurde verändert\nMöchten Sie die Änderungen auf der Datenbank speichern?",
"Nachfrage", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (diar == DialogResult.OK)
{
SaveBinFile(FileGuid, Filename, JobFileTyp);
}
}
Kann man das Problem lösen, umgehen oder ganz anders an die Sache herangehen? Ich möchte den Aufwand natürlich begrenzen.
Vielen Dank für eure Mühen schon jetzt.
Viele Grüße
O. Steffan
ich habe ein Problem mit der Prozesskontrolle. Ich möchte folgendes in meinem Programm erreichen:
Ich produziere per Fernsteuerung eine Word-Datei und speicher sie ab und beende sauber die COM-Session. Nun möchte ich das fertige Dokument dem User zeigen, so dass er noch manuelle Änderungen vornehmen kann. Ich starte über die Klasse Process() also einen neuen Prozess, öffne das Dokument und warte auf dessen Abschluss. Nun überprüfe ich, ob sich am Dateidatum etwas geändert hat, wenn ja möchte ich das Dokument auf der Datenbnk sichern.
Eigentlich funktioniert das auch stabil, wenn nicht schon eine Instanz von Word geöffnet ist, z.B. über Outlook mit Word als Mail-Editor. Hier also ein Codebeispiel:
//Eigenschaften der Datei ermitteln
DateTime dtFileOrg = File.GetLastWriteTime(Filename);
Process pr = new Process();
pr.StartInfo.FileName = Filename;
pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
pr.Start();
pr.WaitForExit(); //<-!!! hier kommt der Fehler bei schon vorher geöffnetem Word
pr.Close();
//nach Schließen des Prozesses Eigenschaften der Datei ermitteln
DateTime dtFileNow = File.GetLastWriteTime(Filename);
if (dtFileNow != dtFileOrg)
{
DialogResult diar = MessageBox.Show("Die Datei wurde verändert\nMöchten Sie die Änderungen auf der Datenbank speichern?",
"Nachfrage", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (diar == DialogResult.OK)
{
SaveBinFile(FileGuid, Filename, JobFileTyp);
}
}
Kann man das Problem lösen, umgehen oder ganz anders an die Sache herangehen? Ich möchte den Aufwand natürlich begrenzen.
Vielen Dank für eure Mühen schon jetzt.
Viele Grüße
O. Steffan
Comment