Χρησιμοποιώντας πρώιμη σύνδεση και αργή ενοποίηση του αυτοματισμού

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 245115 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Πώς θα συνδέσετε με ένα διακομιστή αυτοματοποίησης μπορεί να επηρεάσει πολλά πράγματα στο πρόγραμμά σας, όπως η απόδοση, ευελιξία και maintainability.

Αυτό το άρθρο περιγράφει τους τύπους σύνδεσης που είναι διαθέσιμες σε υπολογιστές-πελάτες αυτοματισμού του και weighs και στις δύο πλευρές της κάθε μεθόδου.

Περισσότερες πληροφορίες

Αυτοματισμού είναι μια διαδικασία ή/όπου ένα στοιχείο λογισμικού επικοινωνεί με και ελέγχει ένα άλλο στοιχείο λογισμικού της Microsoft χρησιμοποιώντας το μοντέλο αντικειμένου στοιχείου (COM). Αποτελεί τη βάση για τις περισσότερες μεταξύ στοιχείων επικοινωνίας χρησιμοποιούνται σε γλώσσες όπως η Visual Basic ή Visual Basic for Applications και έχει γίνει κανονική μέρος τα περισσότερα προγράμματα.

Από παλιά, ένα αντικείμενο αυτοματισμού είναι οποιοδήποτε αντικείμενο που υποστηρίζει το IDispatch διασύνδεσης. Αυτή η διασύνδεση επιτρέπει στους υπολογιστές πελάτες να καλέσετε τις μεθόδους και ιδιότητες κατά το χρόνο εκτέλεσης, χωρίς να χρειάζεται να γνωρίζετε το ακριβές αντικείμενο τους επικοινωνείτε κατά τη σχεδίαση, μια διαδικασία που ονομάζεται αργή ενοποίηση. Σήμερα, ωστόσο, ο όροςΑντικείμενο αυτοματισμούμπορεί να εφαρμοστεί σε όλες σχεδόν οποιουδήποτε αντικειμένου COM, ακόμη και αυτά που δεν υποστηρίζουν IDispatch (και επομένως δεν είναι δυνατό να αργά συνδεθεί). Αυτό το άρθρο προϋποθέτει ότι και οι δύο μέθοδοι σύνδεσης που υποστηρίζει το αντικείμενο είναι αυτοματοποίηση.

Τι η σύνδεση;

Σύνδεση είναι μια διαδικασία που ταιριάζουν σε κλήσεις συναρτήσεων που έχουν συνταχθεί από τον προγραμματιστή με τον πραγματικό κώδικα (εσωτερική ή εξωτερική) που υλοποιεί τη συνάρτηση. Γίνεται όταν η εφαρμογή έχει μεταγλωττιστεί και όλες οι λειτουργίες που ονομάζεται στον κώδικα πρέπει να συνδεθεί πριν από την εκτέλεση του κώδικα.

Για να κατανοήσετε τη διαδικασία, σκεφτείτε "σύνδεση" του δημοσίευση ενός βιβλίου. Φανταστείτε τον κώδικά σας μοιάζει με το κείμενο του βιβλίου όπου σε μια συγκεκριμένη παράγραφο που έχουν γραφτεί κάτι σαν "ανατρέξτε στο κεφάλαιο 12, σελίδα x για περισσότερες λεπτομέρειες." Δεν γνωρίζετε τι είναι ο αριθμός της σελίδας, μέχρι να ολοκληρωθεί το βιβλίο, έτσι, πριν η παράγραφος μπορεί να διαβαστεί όπως θέλατε, όλες οι σελίδες του βιβλίου πρέπει να συνδεθεί μαζί και εισαγάγει τον σωστό αριθμό στην παράγραφο. Αναμονή για το βιβλίο είναι "δεσμευμένη" πριν να αναφέρεστε σε άλλα τμήματα του βιβλίου.

Σύνδεση λογισμικού είναι παρόμοια. Ο κώδικας αποτελείται από τμήματα που πρέπει να λαμβάνονται μαζί, πριν ο κώδικας μπορεί να "διαβαστεί." Σύνδεση είναι η ενέργεια αντικατάστασης συνάρτηση ονόματα με διευθύνσεις μνήμης (ή μετατοπίσεις μνήμης, για να είναι πιο ακριβής) όπου ο κωδικός θα "Μετάβαση σε" όταν καλείται η συνάρτηση. Για αντικείμενα COM, η διεύθυνση είναι μια μετατόπιση μνήμης σε έναν πίνακα δεικτών (που ονομάζονται στον πίνακα v) από το αντικείμενο. Όταν μια συνάρτηση COM είναι δεσμευμένο, συνδέεται μέσω του πίνακα v.

Η δομή ενός αντικειμένου COM είναι απλή. Όταν ο κώδικάς σας περιέχει μια αναφορά σε ένα αντικείμενο, διατηρεί ένας έμμεσος δείκτης στο επάνω μέρος του πίνακα v. Ο πίνακας v είναι ένας πίνακας διευθύνσεων μνήμης όπου κάθε εγγραφή είναι μια διαφορετική συνάρτηση που μπορεί να κληθεί σε αυτό το αντικείμενο. Για να καλέσετε τη συνάρτηση τρίτου σε ένα αντικείμενο COM, μετακίνηση προς τα κάτω τρεις καταχωρήσεις στον πίνακα και μεταβείτε στη θέση μνήμης δόθηκε. Που εκτελεί τον κωδικό για τη λειτουργία και, όταν ολοκληρωθεί, επιστρέφει μπορείτε πάλι έτοιμος να εκτελέσει την επόμενη γραμμή κώδικα.

+-[Code]------------+  +.................................[COM Object]...+
|                   |  : +-------------+                                :
|Set obj = Nothing -|--->| obj pointer |                                :
|                   |  : +-|-----------+                                :
+-------------------+  :   |   +-----------------+                      :
                       :   +-->| v-table pointer |                      :
                       :       +--|--------------+                      :
                       :          |                                     :
                       :          |  +----------------------------+     :
                       :  (3rd)   |  | Function 1 Address pointer |     :
                       : (Offset) |  +----------------------------+     :
                       :          |  | Function 2 Address pointer |     :
                       :          |  +----------------------------+     :
                       :          +->| Function 3 Address pointer |     :
                       :             +----------------------------+     :
                       +................................................+

				
Στο παραπάνω παράδειγμα δείχνει τι συμβαίνει κατά την αποδέσμευση ενός αντικειμένου COM. Επειδή όλα τα αντικείμενα COM που κληρονομούν από IUnknown, τις πρώτες τρεις καταχωρήσεις στον πίνακα είναι οι μέθοδοι για την IUnknown. Όταν χρειάζεται να δημιουργήσετε ελεύθερο χώρο σε ένα αντικείμενο, τον κώδικά σας καλεί τη συνάρτηση τρίτου πίνακα v-(IUnknown::Release).

Ευτυχώς, αυτή η εργασία γίνεται από τη Visual Basic στο παρασκήνιο. Ως προγραμματιστές της Visual Basic, έχετε ποτέ να μοιράσετε απευθείας με έναν πίνακα v. Όμως, αυτή η δομή είναι πως όλα τα αντικείμενα COM είναι συνδεδεμένα και είναι σημαντικό να είστε εξοικειωμένοι με το να καταλάβετε ποια σύνδεση είναι.

Πρώτη σύνδεση

Στο παραπάνω παράδειγμα είναι τι είναι γνωστή και ως νωρίς (ή πίνακας v) σύνδεσης. Για όλα τα αντικείμενα COM, αυτή η μορφή σύνδεσης μεταφέρει τοποθετήστε κάθε φορά που καλείται η διασύνδεση IUnknown ενός αντικειμένου COM. Τι συμβαίνει με τις λειτουργίες του αντικειμένου αλλά; Πώς ονομάζετε τη μέθοδο Refresh ή την ιδιότητα Parent; Αυτές οι προσαρμοσμένες συναρτήσεις που είναι συνήθως μοναδικά ένα αντικείμενο. Εάν δεν είναι δυνατό να θεωρείται θέσεις τους στον πίνακα v, πώς θεωρείτε τις διευθύνσεις της συνάρτησης που απαιτούνται για να καλέσει τους;

Η απάντηση, φυσικά, εξαρτάται αν γνωρίζετε εκ των προτέρων τι μοιάζει το αντικείμενο πίνακα-v. Σε αυτή την περίπτωση, μπορείτε να εκτελέσετε την ίδια διαδικασία νωρίς σύνδεσης σε προσαρμοσμένες μεθόδους του αντικειμένου, όπως συνέβαινε με τις μεθόδους του IUnknown. Πρόκειται για τι προορίζεται γενικά από "πρώιμη σύνδεσης."

Για να χρησιμοποιήσετε την πρώτη σύνδεση σε ένα αντικείμενο, πρέπει να γνωρίζετε τι μοιάζει του πίνακα v. Στη Visual Basic, μπορείτε να το κάνετε προσθέτοντας μια αναφορά σε μια βιβλιοθήκη τύπων η οποία περιγράφει το αντικείμενο, το περιβάλλον εργασίας (πίνακας v) και όλες τις λειτουργίες που μπορούν να κληθούν από το αντικείμενο. Μόλις γίνει αυτό, μπορείτε να δηλώσετε ένα αντικείμενο ως ενός συγκεκριμένου τύπου, τότε σύνολο και να χρησιμοποιούν αυτό το αντικείμενο χρησιμοποιώντας τον πίνακα v. Για παράδειγμα, αν θέλατε να αυτοματοποίησης του Microsoft Office Excel χρησιμοποιεί την πρώτη σύνδεση, θα προσθέσετε μια αναφορά στη "Microsoft Excel 8.0 βιβλιοθήκη αντικειμένων" από το παράθυρο διαλόγου Project|References, και στη συνέχεια Δηλώστε την μεταβλητή σαν να είναι του τύπου "Excel.Application". Από τότε στο όλες τις κλήσεις που γίνονται προς την μεταβλητή αντικειμένου θα νωρίς συνδεθεί:
' Set reference to 'Microsoft Excel 8.0 Object Library' in
' the Project|References dialog (or Tools|References for VB4 or VBA).

' Declare the object as an early-bound object
  Dim oExcel As Excel.Application

  Set oExcel = CreateObject("Excel.Application")

' The Visible property is called via the v-table
  oExcel.Visible = True
				
Αυτή η μέθοδος λειτουργεί σπουδαία μεγαλύτερο μέρος του χρόνου, αλλά αν δεν γνωρίζετε το ακριβές αντικείμενο που θα χρησιμοποιήσετε κατά τη σχεδίαση; Για παράδειγμα, αν πρέπει να μιλήσετε εντελώς πολλές εκδόσεις του Excel ή πιθανώς σε ένα αντικείμενο "Άγνωστο";

Αργή ενοποίηση

COM περιλαμβάνει IDispatch. Αντικείμενα που υλοποιούν το IDispatch είναι είπατε σε μια διασύνδεση (Εάν είναι το μόνο περιβάλλον εργασίας που υποστηρίζουν) ή διπλής διασύνδεσης (αν έχουν επίσης ένα προσαρμοσμένο περιβάλλον εργασίας που νωρίς μπορείτε να συνδέσετε). Οι υπολογιστές-πελάτες που θα συνδέσετε με το IDispatch είναι είπατε να "αργά συνδεθεί" επειδή η ακριβής ιδιότητα ή τους καλείτε τη μέθοδο που καθορίζεται κατά το χρόνο εκτέλεσης, χρησιμοποιώντας τις μεθόδους του IDispatch για τον εντοπισμό τους. Επιστροφή στο βιβλίο παράδειγμα παραπάνω, σκεφτείτε το σαν να είναι σαν μια υποσημείωση που σας κατευθύνει σε πίνακα περιεχομένων όπου έχετε για την "Αναζήτηση"του αριθμού σελίδας σε"ανάγνωση χρόνου" παρά να ήδη εκτυπώσετε υπάρχουν στο κείμενο.

Η μαγεία της διασύνδεσης ελέγχεται από δύο λειτουργίες: GetIDsOfNames και Invoke. Η πρώτη συνάρτηση αντιστοιχίσεις ονομάτων (συμβολοσειρές) σε ένα αναγνωριστικό (ονομάζεται μια dispid) που αντιπροσωπεύει τη συνάρτηση. Από τη στιγμή που γνωρίζετε ότι το Αναγνωριστικό για τη συνάρτηση που θέλετε να καλέσετε, μπορείτε να καλέσετε χρησιμοποιώντας τη συνάρτηση Invoke. Αυτή η μορφή της κλήσης της μεθόδου που ονομάζεται "αργή ενοποίηση."

Και πάλι, στη Visual Basic με τον τρόπο που μπορείτε να καθορίσετε με ποιον τρόπο είναι συνδεδεμένο το αντικείμενο είναι σας δήλωση αντικειμένου. Εάν δηλώσετε μια μεταβλητή αντικειμένου ως "Αντικείμενο" είναι, στην πραγματικότητα, που σας πληροφορεί της Visual Basic για να χρησιμοποιήσετε IDispatch, και επομένως είναι μεταγενέστερη της σύνδεσης:
' No reference to a type library is needed to use late binding.
' As long as the object supports IDispatch, the method can 
' be dynamically located and invoked at run-time.

' Declare the object as a late-bound object
  Dim oExcel As Object

  Set oExcel = CreateObject("Excel.Application")

' The Visible property is called via IDispatch
  oExcel.Visible = True
				
Όπως μπορείτε να δείτε το υπόλοιπο του κώδικά σας είναι η ίδια. Η μόνη διαφορά μεταξύ σύνδεσης νωρίς και αργή ενοποίηση (από την άποψη των τον γράφετε κώδικα) είναι στη δήλωση μεταβλητής.

Είναι σημαντικό να σημειωθεί ότι το τι είναι "αργά δεσμευμένο" είναι η συνάρτηση που ονομάζεται και όχι τον τρόπο ονομάζεται. Από την προηγούμενη συζήτηση σε σύνδεση σε γενικές γραμμές, θα πρέπει να προσέξετε ότι IDispatch είναι ίδια "νωρίς δεσμευμένο:" Αυτό σημαίνει ότι αυτής της Visual Basic πραγματοποιεί την κλήση για να ορίσετε την ιδιότητα Visible μέσω μιας καταχώρησης πίνακα v (IDispatch::Invoke), όπως κάνατε με οποιαδήποτε κλήση COM. Το ίδιο το αντικείμενο COM είναι υπεύθυνος για την προώθηση της κλήσης προς τη σωστή συνάρτηση για να γίνει ορατό το Excel. Indirection αυτή επιτρέπει τον πελάτη της Visual Basic για να μεταγλωττιστεί (δηλαδή, συνδέεται με μια έγκυρη λειτουργία διεύθυνσης) αλλά και πάλι δεν γνωρίζει την ακριβή λειτουργία που θα πραγματοποιήσετε την εργασία.

Σύνδεση dispid

Ορισμένες αυτοματισμού (πιο αισθητά MFC και 3.0 της Visual Basic, αλλά και της Visual Basic 5.0 και 6.0 με σέβονται για στοιχεία ελέγχου ActiveX) στους υπολογιστές-πελάτες χρησιμοποιούν μια φόρμα υβριδική καθυστέρηση της σύνδεσης που ονομάζεται dispid σύνδεσης. Εάν το αντικείμενο COM είναι γνωστή κατά το χρόνο σχεδίασης, το dispids για τις λειτουργίες που καλούνται μπορεί να αποθηκεύονται προσωρινά και που διαβιβάζονται απευθείας σε IDispatch::Invoke χωρίς να χρειαστεί να καλέσετε GetIDsOfNames κατά το χρόνο εκτέλεσης. Αυτό μπορεί να αυξήσει σημαντικά επιδόσεις, επειδή αντί για τα δύο τηλεφωνήματα COM ανά λειτουργία, αρκεί να κάνετε μία.

Σύνδεση dispid δεν είναι μια επιλογή που μπορείτε να επιλέξετε κανονικά στη Visual Basic 5.0 ή 6.0. Χρησιμοποιείται για αντικείμενα που αναφέρονται σε μια βιβλιοθήκη τύπων, αλλά δεν περιέχουν ένα προσαρμοσμένο περιβάλλον εργασίας (δηλαδή, για αντικείμενα που έχουν μόνο μια διασύνδεση) και για να συναθροιστούν τα στοιχεία ελέγχου ActiveX, αλλά Γενικά, χρησιμοποιεί η Visual Basic νωρίς οποιοδήποτε σημείο που θα χρησιμοποιούσατε κανονικά dispid σύνδεσης της σύνδεσης.

Ποια μορφή σύνδεσης πρέπει να χρησιμοποιήσω;

Η απάντηση σε αυτήν την ερώτηση εξαρτάται από όσο περισσότερα σχετικά με το σχέδιο του έργου σας ως κάτι άλλο. Η Microsoft συνιστά την πρώτη σύνδεση σχεδόν σε όλες τις περιπτώσεις. Ωστόσο, μπορεί να υπάρχουν λόγοι για την επιλογή αργή ενοποίηση.

Νωρίς σύνδεσης είναι η προτιμώμενη μέθοδος. Είναι το καλύτερο κοστούμι επειδή η εφαρμογή σας συνδέει άμεσα με τη διεύθυνση της συνάρτησης που ονομάζεται και δεν υπάρχει καμία επιπλέον επιβάρυνση σε κάνοντας αναζήτηση κατά το χρόνο εκτέλεσης. Από την άποψη των συνολική ταχύτητα εκτέλεσης, είναι τουλάχιστον δύο φορές και ως γρήγορη ως αργή ενοποίηση.

Πρώιμη σύνδεσης παρέχει επίσης ασφάλεια τύπου. Όταν έχετε μια αναφορά την τιμή του στοιχείου βιβλιοθήκης τύπων, Visual Basic παρέχει υποστήριξη IntelliSense για να τον κωδικό κάθε συνάρτηση σωστά. Visual Basic επίσης προειδοποιεί εάν τον τύπο δεδομένων μιας παραμέτρου ή επιστρεφόμενη τιμή είναι εσφαλμένη, αποθήκευση πολύ χρόνο κατά την εγγραφή και τον εντοπισμό σφαλμάτων σε κώδικα.

Αργή ενοποίηση είναι ακόμα χρήσιμο στις περιπτώσεις όπου το ακριβές διασύνδεση ενός αντικειμένου δεν είναι γνωστή κατά το χρόνο σχεδίασης. Εάν η εφαρμογή σας αναζητά για να συνομιλήσετε με πολλούς διακομιστές άγνωστο ή πρέπει να καλέσετε συναρτήσεις με το όνομά του (με χρήση της Visual Basic 6.0CallByNameΓια παράδειγμα λειτουργεί) πρέπει να χρησιμοποιήσετε αργή ενοποίηση. Αργή ενοποίηση είναι επίσης χρήσιμη για να αντιμετωπίσετε προβλήματα συμβατότητας μεταξύ πολλών εκδόσεων ενός στοιχείου που έχει εσφαλμένη τροποποίηση ή προσαρμοστεί η διασύνδεση μεταξύ των εκδόσεων.

Τα πλεονεκτήματα που δόθηκε στην πρώτη σύνδεση να είναι η καλύτερη επιλογή όταν είναι δυνατόν.

Διατήρηση συμβατότητας σε πολλαπλές εκδόσεις

Εάν πρόκειται να χρησιμοποιήσετε ένα στοιχείο που δεν αναδιανομή με το πακέτο εγκατάστασης, και δεν είναι δυνατό να βεβαιωθούν της ακριβούς έκδοσης που θα επικοινωνεί με κατά το χρόνο εκτέλεσης, θα πρέπει να πληρώσουν με ιδιαίτερη προσοχή στην πρώτη σύνδεση με μια διασύνδεση η οποία είναι συμβατή με όλες τις εκδόσεις του στοιχείου ή (σε ορισμένες περιπτώσεις) Χρησιμοποιήστε καθυστερημένης σύνδεσης για την κλήση μιας μεθόδου που μπορεί να υπάρχουν σε μια συγκεκριμένη έκδοση και αποτύχει ομαλό, εάν αυτή η μέθοδος δεν υπάρχει στην έκδοση που είναι εγκατεστημένη στο σύστημα υπολογιστή-πελάτη.

Οι εφαρμογές του Microsoft Office παρέχουν ένα καλό παράδειγμα αυτοί οι διακομιστές COM. Εφαρμογές του Office θα επεκταθεί συνήθως τις διασυνδέσεις για να προσθέσετε νέες λειτουργίες ή σωστό προηγούμενη shortcomings μεταξύ των εκδόσεων. Εάν θέλετε να αυτοματοποιήσετε μια εφαρμογή του Office, συνιστάται ότι συνδέετε νωρίς με την παλαιότερη έκδοση του προϊόντος που αναμένετε ότι θα μπορούσε να είναι εγκατεστημένη στο σύστημα του υπολογιστή-πελάτη. Για παράδειγμα, εάν πρέπει να έχει τη δυνατότητα να αυτοματοποιήσετε το Excel 95, το Excel 97, το Excel 2000 και το Excel 2002, πρέπει να χρησιμοποιείτε τη βιβλιοθήκη τύπων για το Excel 95 (XL5en32.olb) για να διατηρηθεί η συμβατότητα με όλες τις τρεις εκδόσεις.

Εφαρμογές γραφείου δείχνουν επίσης ότι μοντέλα αντικειμένου με μεγάλο διπλή διασυνδέσεις να προβλήματα περιορισμών παράταξης ορισμένες πλατφόρμες. Για τον κώδικά σας να λειτουργεί καλύτερα σε όλες τις πλατφόρμες, χρησιμοποιήστε το IDispatch.Για περισσότερες πληροφορίες σχετικά με τη διατήρηση συμβατότητας κατά την εργασία με το Office εφαρμογές, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
247579Χρήση σύνδεσης DISPID για την αυτοματοποίηση εφαρμογών του Office όποτε είναι δυνατό

Αναφορές

Για περισσότερες πληροφορίες σχετικά με το COM, v-πίνακες και χρήση αυτοματισμού, ανατρέξτε στα ακόλουθα βιβλία:
Rogerson, Dale,ΤΙΤΛΟΣ ΑΡΘΡΟΥ ΕΣΩΤΕΡΙΚΗΣ COMMSPRESS, ISBN: 1-57231-349-8.

Curland, Matt,Για προχωρημένους της Visual Basic 6DevelopMentor, 0201707128.

Ιδιότητες

Αναγν. άρθρου: 245115 - Τελευταία αναθεώρηση: Δευτέρα, 27 Σεπτεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Office Ultimate 2007
  • Microsoft Office Enterprise 2007
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Plus 2007
  • Microsoft Office Standard 2007
  • Microsoft Office Home and Student 2007
  • Microsoft Office Basic 2007
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Λέξεις-κλειδιά: 
kbautomation kbinfo kbmt KB245115 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:245115

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com