Avatar billede thepsypher Nybegynder
20. maj 2010 - 12:31 Der er 1 kommentar og
1 løsning

Word (2007) og Events....

Hej Udviklere....
Jeg sidder og udvikler på en applikation som holder styr på nogle Word-filer, disse skal så kunne hentes fra serveren og editeres og hvis/når de så bliver gemt, så skal applikationen kunne poppe op med en messagebox, som spørger om man vil lægge den nye udgave af dokumentet tilbage på serveren.

Åbning af Word, åbning af dokumentet, etc. er jo nemt nok, men hvordan lytter man på et DocumentSaved-event som ikke er der!?  ;-)

Jeg har dette ret banale kode, som har 4 knapper, som en lille test/forsøg, som kan åbne Word, åbne en fildialog (og derefter åbner Word filen), lukke dokumentet og lukke Word (samtidig har jeg smidt en lytter på BeforeSave-eventet, men dette er jo ikke umiddelbart til megen nytte eller hva?):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Word;

namespace WordTEST
{
    public partial class Form1 : Form
    {
        Word.ApplicationClass word;
        object missing = System.Reflection.Missing.Value;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            word = new Word.ApplicationClass();
            word.Visible = true;
            word.DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(EventRaised);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                object filename = dialog.FileName;
                object readOnly = false;
                object isVisible = true;

                //Word.Document aDoc = word.Documents.Open(ref filename, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible);
                word.Documents.Open(ref filename, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            word.Documents.Close(ref missing, ref missing, ref missing);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            object savechanges = false;
            word.Quit(ref savechanges, ref missing, ref missing);
        }

        private void EventRaised(Document Doc, ref bool SaveAsUI, ref bool Cancel)
        {
            MessageBox.Show("Event raised!");
        }
    }
}


Nogen som har nogle kommentarer eller gode forslag til at kunne poppe op med en messagebox, når filen bliver gemt i Word?

Hilsen Psypher
Avatar billede thepsypher Nybegynder
20. maj 2010 - 14:15 #1
hej igen....tænkte lige på et andet approach, som helt undgår word og events....

Kunne man mon med fordel hente filen ned fra serveren og derefter overvåge den med FileSystemWatcher og så lade den lytte på noget FileChanged-event (eller hvad det nu hedder) og så poppe en messagebox op der. Dette er approach gør jo også at jeg ikke skal koble mig og skrive enkelt-løsninger til hvert fil-format, men i stedet kan folk editere den med deres foretrukne applikation og så vil det stadig virke.....

Nogle erfaringer med brugen af FileSystemWatcher og denne løsning? (Er lige faldet over FileSystemWatcher, så læser op i mellemtiden)

Hilsen Psypher
Avatar billede thepsypher Nybegynder
15. juni 2010 - 11:56 #2
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester