Come creare un componente aggiuntivo COM di Office 2000 in Visual Basic

Identificativo articolo: 238228 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Microsoft Office 2000 e versioni successive supportano una nuova architettura uniforme di progettazione per la creazione di componenti aggiuntivi che consentono di migliorare e controllare le applicazioni Office. Tali componenti aggiuntivi sono denominati componenti aggiuntivi COM. In questo articolo viene spiegato come creare un componente aggiuntivo COM utilizzando Visual Basic.

Informazioni

Un componente aggiuntivo COM è un server COM in-process (una DLL ActiveX) che implementa l'interfaccia IDTExensibility2 in base a quanto descritto nella libreria di tipi Progettazione componenti aggiuntivi Microsoft (Msaddndr.dll). Tutti i componenti aggiuntivi COM ereditano proprietà da tale interfaccia e devono implementarne i relativi cinque metodi.

OnConnection

L'evento OnConnection viene generato ogni volta che il componente aggiuntivo COM è connesso. Il componente aggiuntivo può essere connesso all'avvio, dall'utente finale oppure attraverso l'automazione. Se OnConnection ha esito positivo, il componente aggiuntivo viene considerato caricato. Se viene restituito un errore, l'applicazione host rilascia immediatamente il proprio riferimento il componente aggiuntivo e l'oggetto viene distrutto.

OnConnection accetta i seguenti quattro parametri:
  • Application - Riferimento all'oggetto applicazione host.
  • ConnectMode - Costante che specifica la modalità di connessione del componente aggiuntivo.
    • ext_cm_AfterStartup - Avviato dall'utente finale dalla finestra di dialogo del componente aggiuntivo COM.
    • ext_cm_CommandLine - Connesso dalla riga di comando. (non si applica alla creazione di componenti aggiuntivi COM per applicazioni Office)
    • ext_cm_External - Connesso da un'applicazione esterna tramite l'automazione. (non si applica alla creazione di componenti aggiuntivi COM per applicazioni Office)
    • ext_cm_Startup - avviato dall'host all'avvio dell'applicazione. (Questo comportamento è controllato da un'impostazione nel Registro di sistema).
  • AddInInst - Riferimento all'oggetto COMAddIn che fa riferimento al componente aggiuntivo nell'insieme COMAddIns relativo all'applicazione host.
  • Custom - Matrice di varianti che può contenere dati definiti dall'utente.

OnDisconnection

L'evento OnDisconnection viene generato quando il componente aggiuntivo viene disconnesso e appena prima che Scarica dalla memoria. Il componente aggiuntivo dovrebbe eseguire un eventuale rilascio delle risorse in questo evento e ripristinare eventuali modifiche apportate all'applicazione host.

OnDisconnection accetta i seguenti due parametri:
  • RemoveMode - Costante che specifica la modalità di disconnessione del componente aggiuntivo.
    • ext_dm_HostShutdown - Disconnesso alla chiusura dell'applicazione host.
    • ext_dm_UserClosed - Disconnesso dall'utente finale o da un controller di automazione.
  • Custom - Matrice di varianti che può contenere dati definiti dall'utente.

OnAddInsUpdate

L'evento di OnAddInsUpdate viene generato quando cambia il set di componenti aggiuntivi di COM registrati. In altre parole, ogni volta che un componente aggiuntivo COM viene installato o rimosso dall'applicazione host, viene generato un evento OnAddInsUpdate.

OnStartupComplete e OnBeginShutdown

Entrambi i metodi OnStartupComplete e OnBeginShutdown vengono chiamati quando l'applicazione host ha lasciato oppure sta entrando in uno stato in cui dovrebbe essere evitata l'interazione con l'utente poiché l'applicazione è in fase di caricamento o di rimozione dalla memoria. L'evento OnStartupComplete viene chiamato solo se la connessione del componente aggiuntivo è avvenuta durante l'avvio e l'evento OnBeginShutdown viene chiamato solo se la disconnessione è stata eseguita dall'host durante l'arresto.

Poiché l'interfaccia utente per l'applicazione host è pienamente attiva quando vengono generati questi eventi, questi potrebbero rappresentare l'unico modo per eseguire determinate azioni che altrimenti risulterebbero non disponibili da OnConnection e OnDisconnection.

Registrazione di aggiungere aggiuntivo COM

Oltre alla normale registrazione COM, è necessario che un componente aggiuntivo COM si registri con tutte le applicazioni di Office in cui viene eseguito. Per registrarsi con una determinata applicazione, il componente aggiuntivo deve creare una sub chiave, utilizzando il proprio ProgID come nome per la chiave, nella seguente posizione:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
il componente aggiuntivo può fornire valori in questa posizione chiave per un nome descrittivo e una descrizione completa. Il componente aggiuntivo dovrebbe inoltre specificare un comportamento di caricamento preferito utilizzando un valore DWORD denominato "LoadBehavior" Tale valore determina il modo in cui il componente aggiuntivo viene caricato dall'applicazione host ed è costituito da una combinazione dei seguenti valori:
  • 0 = Disconnect dash Non viene caricato.
  • 1 = Connected - Viene caricato.
  • 2 = Bootload - Viene caricato all'avvio dell'applicazione.
  • 8 = DemandLoad - Viene caricato solo se richiesto dall'utente.
  • 16 = ConnectFirstTime - Viene caricato solo una volta (all'avvio successivo).
Il valore che viene generalmente specificato è 0x03 (Connected | Bootload).

I componenti aggiuntivi che implementano IDTExtensibility2 devono inoltre specificare un valore DWORD denominato "CommandLineSafe" per indicare se possono eseguire senza problemi operazioni che non supportano un'interfaccia utente. Il valore 0x00 significa False, 0x01 significa True.

Creazione di un componente aggiuntivo COM

È possibile creare un componente aggiuntivo COM con uno dei tre metodi menzionati di seguito:

Creazione di un componente aggiuntivo COM utilizzando il modello di componente aggiuntivo COM

Se si dispone di Microsoft Office 2000 Developer o di Microsoft Office XP Developer e di Visual Basic 6.0, il metodo più semplice per creare un componente aggiuntivo COM consiste nell'utilizzare il modello COM Add-in.vbp. Questo progetto si trova nella sottocartella ODETools\V9\Samples\OPG\Samples\CH11\VB_COM_AddIn del CD di Office 2000 Developer. Copiare i file contenuti in questa cartella nella cartella di Visual Basic 6.0 Template\Projects, di solito nel percorso C:\Programmi\Microsoft Visual Studio\VB98\Template\Projects. Se il progetto modello viene copiato in questa cartella, verrà visualizzato nella finestra di dialogo Nuovo progetto di Visual Basic 6.0. Per ulteriori informazioni sul modello e la creazione di componenti aggiuntivi COM, vedere il capitolo 11 del manuale per il programmatore in Visual Basic di Microsoft Office 2000.

Creazione di un componente aggiuntivo COM con l'autore del componente aggiuntivo di Visual Basic 6

Se si dispone solo Microsoft Visual Basic 6.0 installato e desidera utilizzare un wrapper in modo che non sia necessario implementare direttamente IDTExtensibility2, è possibile utilizzare Progettazione lo stesso componente aggiuntivo strumento che verrebbero utilizzate per creare una completa Aggiungi In. VB6 procedura per generare tale componente aggiuntivo per Microsoft Excel 2000 o 2002:
  1. Avviare Microsoft Visual Basic 6.0 e selezionare componente aggiuntivo come tipo di progetto. Questo dovrebbe aggiungere una classe finestra di progettazione per il progetto (Connect) e un form (frmAddin).
  2. Aprire la finestra di Progettazione per connessione e selezionare Microsoft Excel dalla casella di riepilogo applicazione .
  3. Nell'elenco a discesa Caricamento iniziale , selezionare avvio .
  4. Rimuovere frmAddin dal progetto.
  5. Finestra progetto fare clic con il pulsante destro del mouse sull'elemento Connetti e selezionare Visualizza codice .
  6. Rimuovere il codice presente nella finestra del codice dello strumento di progettazione. È codice valido per i componenti aggiuntivi di VB e non di Office.
  7. Aggiungere il codice riportato di seguito alla finestra di progettazione:
       Option Explicit
    
       Dim oXL As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
       Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
        ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
        ByVal AddInInst As Object, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin started in " & Application.Name
       
          Set oXL = Application
       
          Set MyButton = oXL.CommandBars("Standard").Controls.Add(1)
             With MyButton
                .Caption = "My Custom Button"
                .Style = msoButtonCaption
    
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                .OnAction = "!<" & AddInInst.ProgId & ">"
    
                .Visible = True
             End With
       
       End Sub
    
       Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
          AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin was disconnected by " & _
             IIf(RemoveMode = ext_dm_HostShutdown, _
             "Excel shutdown.", "end user.")
          
          MyButton.Delete
          Set MyButton = Nothing
          Set oXL = Nothing
        End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton, _
         CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
  8. Salvare il progetto e creare il MyAddin.dll . La finestra di progettazione provvederà a registrare il componente aggiuntivo.
  9. Verrà aperto e si noterà una finestra di messaggio quando il componente aggiuntivo è caricato e scaricato. Sulla barra degli strumenti standard, sarà necessario un nuovo pulsante con etichettato My Custom Button che il componente aggiuntivo verrà gestito quando questa opzione è selezionata.

Creazione di un componente aggiuntivo COM utilizzando implements

Mentre non sono più semplice, è possibile creare un componente aggiuntivo COM utilizzando Microsoft Visual Basic 5.0 e la parola chiave Implements per direttamente implementano l'interfaccia IDTExtensibility2. L'unica difficoltà di questo approccio è la registrazione. Poiché Microsoft Visual Basic non sa come aggiungere le chiavi necessarie per registrare il componente aggiuntivo con Office, sarà necessario eseguire questa operazione separatamente (in un'utilità di installazione personalizzata, o utilizzando uno script REG).

L'impiego di Implements, tuttavia, presenta il vantaggio di essere più diretto ed efficiente rispetto alla finestra di progettazione e consente di creare un unico oggetto COM in grado di funzionare in varie applicazioni di Office anziché creare un oggetto Connect separato per ogni applicazione in cui si desidera lavorare.

Segue la procedura di scrittura di un componente aggiuntivo mediante l'utilizzo di Implements:
  1. Aprire Visual Basic e creare un nuovo progetto DLL ActiveX. Denominare il progetto MyCOMAddin e il nome della classe pubblica connessione .
  2. Nella finestra di dialogo riferimenti (progetto | riferimenti), aggiungere un riferimento alla libreria di oggetti di Microsoft Office 9.0 (o 10.0 per Office XP) e la libreria dei tipi Microsoft Add-in Designer. Se nell'elenco dei riferimento non è elencata la libreria Progettazione componenti aggiuntivi, cercare il file Msaddndr.dll o Msaddndr.tlb che di solito si trova nella cartella "C:\Programmi\File comuni\Finestra di progettazione".
  3. Nella finestra del codice per connessione, aggiungere quanto segue:
       Option Explicit
       Implements IDTExtensibility2
    
       Dim oHostApp As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
      Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, _
         ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
    
         ByVal AddInInst As Object, custom() As Variant)
      
          On Error Resume Next
        ' Set a reference to the host application...
          Set oHostApp = Application
       
        ' If you aren't in startup, then manually call OnStartupComplete...
          If (ConnectMode <> ext_cm_Startup) Then _
             Call IDTExtensibility2_OnStartupComplete(custom)
          
       End Sub
    
       Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
          Dim oCommandBars As Office.CommandBars
          Dim oStandardBar As Office.CommandBar
       
          On Error Resume Next
        ' Set up a custom button on the "Standard" commandbar...
          Set oCommandBars = oHostApp.CommandBars
          If oCommandBars Is Nothing Then
           ' Outlook has the CommandBars collection on the Explorer object
             Set oCommandBars = oHostApp.ActiveExplorer.CommandBars
          End If
       
          Set oStandardBar = oCommandBars.Item("Standard")
          If oStandardBar Is Nothing Then
           ' Access names it's main toolbar Database
    
             Set oStandardBar = oCommandBars.Item("Database")
          End If
       
        ' In case the button was not deleted, use the exiting one...
          Set MyButton = oStandardBar.Controls.Item("My Custom Button")
             If MyButton Is Nothing Then
    
                Set MyButton = oStandardBar.Controls.Add(1)
                With MyButton
                   .Caption = "My Custom Button"
                   .Style = msoButtonCaption
     
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                   .OnAction = "!<MyCOMAddin.Connect>"
    
                   .Visible = True
                End With
             End If
     
        ' Display a simple message to know which application you started in...
          MsgBox "Started in " & oHostApp.Name & "."
    
          Set oStandardBar = Nothing
          Set oCommandBars = Nothing
       End Sub
    
       Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As _
         AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    
          On Error Resume Next
          If RemoveMode <> ext_dm_HostShutdown Then _
             Call IDTExtensibility2_OnBeginShutdown(custom)
          
          Set oHostApp = Nothing
    
       End Sub
    
       Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
          On Error Resume Next
        ' Notify the user you are shutting down, and delete the button...
          MsgBox "Our custom Add-In is unloading."
          MyButton.Delete
          Set MyButton = Nothing
       End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,    CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
    
       Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
          'You do nothing if this is called, but you need to
          'add a comment so Visual Basic properly implements the function...
       End Sub
  4. Salvare il progetto e creare il MyCOMAddin.dll . Prima che il componente aggiuntivo sia in grado di funzionare, tuttavia, è necessario associarlo a tutte le applicazioni di Office in cui si desidera eseguirlo. In situazioni reali questa operazione viene eseguita da un'utilità di installazione durante l'installazione della DLL. Ai fini di questo esempio si richiamerà una funzione di registrazione direttamente dall'IDE di Visual Basic.
  5. Aggiungere un nuovo modulo al progetto. Nel codice di Module1 aggiungere quanto segue:
       Option Explicit
    
       Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
       Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
       ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As _
       Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, _
       phkResult As Long, lpdwDisposition As Long) As Long
       
       Private Declare Function RegSetValueEx Lib "advapi32.dll" _
       Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As _
       String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
       ByVal cbData As Long) As Long
       
       Private Declare Function RegDeleteKey Lib "advapi32.dll" _
       Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) _
       As Long
       
       Private Declare Function RegCloseKey Lib "advapi32.dll" _
       (ByVal hKey As Long) As Long
    
       Private Const HKEY_CURRENT_USER = &H80000001
       Private Const KEY_ALL_ACCESS = &H1F0037
       Private Const REG_CREATED_NEW_KEY = &H1
       Private Const REG_SZ = 1
       Private Const REG_DWORD = 4
    
       'These are the settings for your Add-in...
       Private Const PROGID As String = "MyCOMAddin.Connect"
       Private Const DESCRIPTION As String = "My VB5/6 COM Add-In Sample"
       Private Const LOADBEHAVIOR As Long = 3
       Private Const SAFEFORCOMMANDLINE As Long = 0
    
    
       Public Sub RegisterAll()
          RegisterOfficeAddin "Access"
          RegisterOfficeAddin "Excel"
          RegisterOfficeAddin "FrontPage"
          RegisterOfficeAddin "Outlook"
          RegisterOfficeAddin "PowerPoint"
          RegisterOfficeAddin "Word"
       End Sub
    
       Public Sub UnregisterAll()
          UnRegisterOfficeAddin "Access"
          UnRegisterOfficeAddin "Excel"
          UnRegisterOfficeAddin "FrontPage"
          UnRegisterOfficeAddin "Outlook"
          UnRegisterOfficeAddin "PowerPoint"
          UnRegisterOfficeAddin "Word"
       End Sub
    
       Public Sub RegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          Dim nRet As Long, dwTmp As Long
          Dim hKey As Long
       
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
          nRet = RegCreateKeyEx(HKEY_CURRENT_USER, sRegKey, 0, _
             vbNullString, 0, KEY_ALL_ACCESS, 0, hKey, dwTmp)
          
          If nRet = 0 Then
             If dwTmp = REG_CREATED_NEW_KEY Then
                Call RegSetValueEx(hKey, "FriendlyName", 0, _
                   REG_SZ, ByVal PROGID, Len(PROGID))
                Call RegSetValueEx(hKey, "Description", 0, _
                   REG_SZ, ByVal DESCRIPTION, Len(DESCRIPTION))
                Call RegSetValueEx(hKey, "LoadBehavior", 0, _
                   REG_DWORD, LOADBEHAVIOR, 4)
                Call RegSetValueEx(hKey, "CommandLineSafe", 0, _
                   REG_DWORD, SAFEFORCOMMANDLINE, 4)
             End If
             Call RegCloseKey(hKey)
          End If
       
       End Sub
    
       Public Sub UnRegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
           Call RegDeleteKey(HKEY_CURRENT_USER, sRegKey)
       
       End Sub
  6. Dalla finestra controllo immediato (Visualizza | finestra immediata), digitare RegisterAll e quindi premere INVIO. In questo modo il componente aggiuntivo verrà registrato con tutte le applicazioni di Office supportate: Access, Excel, FrontPage, Outlook, PowerPoint e Word.
  7. Aprire un'applicazione di Office qualsiasi tra quelle sopra elencate. Notare la visualizzazione della finestra di messaggio all'avvio e all'arresto e il pulsante personalizzato aggiunto alla barra degli strumenti standard.
  8. Quando si desidera annullare la registrazione del componente aggiuntivo, digitare UnregisterAll nella finestra immediata di Visual Basic e quindi premere INVIO.

Riferimenti

"Microsoft Office 2000 Visual Basic Programmer Guide", capitolo 11. Add-ins, Templates, Wizards, and Libraries (informazioni in lingua inglese).

Per ulteriori informazioni sulla scrittura di componenti aggiuntivi COM, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
230689ESEMPIO: Comaddin.exe Office 2000 componente aggiuntivo COM scritto in Visual c ++
190253Finestre di progettazione di VB6 non funzionano in VB5
Per ulteriori informazioni sullo sviluppo di soluzioni basate sul Web per Microsoft Internet Explorer, visitare il sito di Web di Microsoft:
http://msdn.microsoft.com/ie/
Nota Quando si aggiunge una voce di menu in Office Word da un componente aggiuntivo COM di Visual Basic utilizzando la procedura che è elencata in questo articolo oppure utilizzando un metodo simile, la voce di menu non funziona come previsto. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
313948Word perde il riferimento agli elementi di menu dell'oggetto COM (oggetto CommandBarControl)

Proprietà

Identificativo articolo: 238228 - Ultima modifica: mercoledì 24 gennaio 2007 - Revisione: 6.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Chiavi: 
kbmt kbautomation kbhowto KB238228 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 238228
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti