Bruke Microsoft Agent

Denne artikkelen viser hvordan å implementere Microsoft Agent inn dine egne applikasjoner.
Denne artikkelen opprinnelig dukket opp i Delphi DeveloperCopyright Pinnacle Publishing, Inc. Alle rettigheter reservert.
bruker Microsoft AGENT i Delphi Anmeldelser av Clay ShannonWhen jeg forteller folk hvor morsomt og effektivt det er å bruke Microsoft-agenter i mine programmer, de enten allerede vet hva jeg snakker om, og hjertelig enig, eller de ser på meg som om jeg bare falt av baksiden av en kålrot lastebil og si noe sånt som: "Du mener at bindersen fyr som gjør Twiggy se ut som en sumo bryter ?! Jeg hater den fyren!" Vel, jeg er ikke altfor glad i disse Agents, heller. Hvis når du hører "Microsoft Agent" du tenker på "kontoret Agents", for eksempel "at bindersen guy" i stygge dialogboksen som alltid plaging deg med spørsmål som "det ser ut som om du gjør dette, vil du ha meg å hjelpe? ", og" det ser ut som om du gjør det, vil du hjelp, huh? huh? ", du tenker på en annen rase av Microsoft Agent enn de som vil bli diskutert i denne artikkelen. Er du ikke glad? Disse Agenter er ikke fanget inne i en dialogboks, og de ser ut når og hvor du forteller dem til, og si akkurat hva du programmere dem til å si. Så la oss introdusere dem. De er: Peedy (Bird), Robby (Robot), Merlin (magikeren), og Genie (den ... vel, det Genie): Er disse "søte" små tegn av noen praktisk verdi? I noen programmer, indubitably ikke. I andre, men de kan ikke bare legge til appell (avhengig av brukerens preferanser, selvfølgelig), men også være til nytte i å hjelpe brukeren lære å bruke programmet og gjøre det gjennom "de tøffe". Jeg pleier å tenke på de Agenter som en slags "seremonimester". De kan brukes til å introdusere brukeren til programmet - hva gjør den? Hvordan kan du bruke det? De kan brukes som et supplement til, eller til og med en utskifting av en hjelpefilen. I tillegg er Agenter har et stort potensial, eller fremtid, som "guider" i CBT (Computer Based Training) og i demo programs.Not alle maskiner vil ha Microsoft Agents installert. Hvis du ikke er sikker på om brukerne vil ha Agenter installert eller ikke, har du to alternativer: fordele midler til brukerne i tilfelle de ikke har dem, eller skrive kode på en slik måte at det er transparent for de Agent-mindre brukerne at programmet er selv i stand til å bruke Agents ("de ikke vet hva de går glipp"). Hvis du vil distribuere agenter, må du gå til Microsofts Agent nettsted, laste ned et skjema, fylle det ut, sende det til dem, osv for å få tillatelse til å fordele midler. Jeg vet ikke om deg, men for meg som er, i ordene til Chuck Berry "for mye monkey business". Jeg velger å kode for enten situasjon: hvis de har Agenter installert, vil de se dem, ellers won't.The de første du som en utvikler trenger å vite er å laste ned og installere Agent teknologien selv, hvis du ikke har gjort det allerede. Agenten komponenter er tilgjengelig på http://msdn.microsoft.com/workshop/imedia/agent/default.aspThe~~number=plural mest aktuelle nedlastinger er det:


    The Agent Server

    tegn /Agenter

    En tekst-til-tale stykke

    Talekommando (input) stykke
    Denne artikkelen vil ikke forholde seg til Voice Command nedlasting og funksjonalitet ( gjenta etter meg: "det er en øvelse overlates til leseren"). Nettstedet inneholder også informasjon om en ny bok med tittelen "Microsoft Agent Software Development Kit", og du kan også laste ned Microsoft Agent Character Editor (programvare) for å lage dine egne agenter. Dette er "utenfor omfanget av denne artikkelen» og er dermed også "igjen som en øvelse ..." - vel, du vet resten. La oss komme ned til "business", eller moro, eller hva det er vi har her (funsiness?). De eneste nedlastinger vil du absolutt trenger er Agent Server og ett tegn. Jeg anbefaler å laste ned alle karakterene og tekst-til-tale-funksjonalitet, skjønt.Sengen nedlasting fra Microsoft installerer og registrerer Agent server på din maskin. Hva er igjen for deg å gjøre er å installere agenten kontroll i Delphi. For å gjøre dette, gjør du følgende:

      Velg Component | Import ActiveX Control

      Finn Microsoft Agent kontroll fra listeboksen og velg knappen Legg
      Agent skal nå være installert på din ActiveX side: Hvis du slippe denne kontrollen på en form, vil du se at en komponent av type TAgent er lagt til din skjemaets definisjon. Men hvis vi ikke er sikker på om brukeren skal ha Agent server installert på maskinen sin, vil vi ønsker å skape den Agent dynamisk. Ikke gjør dette kan føre til det samme problemet som å ha en statisk lastet DLL som ikke er funnet av programmet på brukerens maskin. Vi vil først se etter eksistensen av Agent teknologi, og bare da opprette Agent, hvis en slik exists.Add en boolsk felt i skjemaet som reflekterer tilstanden Agent teknologi tilstedeværelse. For eksempel kan dette være et felt som heter AgentInstalled. Dette er vist nedenfor sammen med andre Agent spesifikke boolske felt og tilhørende offentlige eiendommer som du kanskje ønsker å erklære: TYourObject privat AgentInstalled: Boolean; funksjon AgentIsInstalled: Boolean; prosedyre CreateAndLoadAgentIfInstalled; funksjon GetColorDepth: Word; funksjon GetWinDir: String; prosedyre SetFormColor; funksjon AgentWasClicked
      Du kan fylle dette feltet med sin passende verdi med en prosedyre som sjekker for eksistensen av Agent filer på brukerens maskin. For eksempel, hvis du bruker Robby (Robot) som Agent, kan koden se slik ut: {---------------------- ------------------------------------------} funksjon TYourObject.AgentIsInstalled: Boolean; begynne Resultat: = (FileSearch ('Robby.acs', Format ('% s \\ MSAGENT \\ tegn', [GetWinDir]))<>'');end;{----------------------------------------------------------------}function TYourObject.GetWinDir: string; Var WinDirZ: array [0..256] av Char, begynner GetWindowsDirectory (WinDirZ, sizeof (WinDirZ)); Resultat: = StrPas (WinDirZ); end;
      MERK: Don ' t anta at agenter har blitt lastet ned til sin "normal plass" på brukerens maskin C: \\ WINDOWS \\ MSAGENT \\ tegn) .Vi vet alle hva som kan skje (og vanligvis til slutt gjør) når vi antar for mye Så, det kan du. bruke GetWinDir funksjon ovenfor sammen med kallet til FileSearch å finne Windows-katalogen på brukerens maskin.
      Som vi skal lage agenten komponent dynamisk, ikke plassere en Agent ActiveX-kontroll på skjemaet. I stedet legger de OLECtrls og AgentObjects_TLB enheter til gjennomføringen bruker klausulen på formen [s] som du ønsker å bruke agent: implementationuses AgentDemoConsts, Registry, OLECtrls, AgentObjects_TLB;
      Du kan deretter dynamisk skape Agent komponent i dette måte: {-------------------------------------------- ---------------------} prosedyre TYourObject.CreateAndLoadAgentIfInstalled; const RightBias = 80; TopBias = 70; Var tp: TPoint; begynne if (AgentInstalled) og ikke (Assigned (RobotAgent)), og start RobotAgent: = TAgent.Create (Application); RobotAgent.Characters.Load ('Robby', 'Robby.acs'); {Flytt Agent til midten av skjermen} tp.x: = (Screen.Width div 2) - (Bredde div 2); tp.y: = (Screen.Height div 2) - (Høyde div 2); med RobotAgent.Characters.Item ['Robby'] vil begynne moveTo (tp.x + RightBias, tp.y + TopBias, 0); Show (0); Play ('Hils'); Play ('Forklar'); Speak (SDemoIntro, ''); Play ("fornøyd"); Play ('RestPose'); Speak (SWhisper, ''); Speak (SMonotone, ''); Speak (SMAP, ''); {Du kan ha ham filibuster og gest som en gal hvis du vil ...} end; end, end,
      Legge expressionThere er flere spesiell tale /tekst alternativer som du kan bruke til mer nøyaktig kontrollere hvordan Agent snakker. For eksempel kan du gjøre ham hviske, snakke i en monoton, pause, understreker en viss del av hans veltalenhet, eller selv har ham si en ting mens ballongen over hodet leser annerledes. Du kan bruke den sistnevnte funksjonalitet for å ha ham snakke på engelsk, og vise oversettelse til et annet språk i ballongen. Eller, kan du gå til "Mad magasinet" rute og har ham si en ting mens du tenker en annen. Disse capabilties er tilgjengelige via følgende tillegg:
      \\ Chr = 'Whisper "\\ Agenten vil hviske følgende tekst
      \\ Pau = N \\ The Agent vil ta en pause for det angitte antall millisekunder

      \\ EMP \\ Agenten vil gi spesiell vekt på følgende setning
      \\ Chr = "Montone" \\ Agenten vil understreke noe i det hele tatt
      \\ Kart == Agenten vil si en ting, og "tror" en annen
      Her er noen eksempler på bruk av disse tale "kvaliteter":. SFuzzyWuzzy = 'Fuzzy wuzzy var en bjørn; \\ Pau = 500 \\ uklar wuzzy hadde ingen' + 'hår; \\ Pau = 500 \\ fuzzy wuzzy' 't veldig \\ EMP \\ fuzzy,' + '\\ EMP \\ var han?'; SWhisper = '\\ Chr = " Whisper " \\ Nå vil jeg hviske: Whisper hviske' + 'hviske.'; SMonotone = '\\ Chr = " monoton " \\ Nå vil jeg snakke i en monoton Pat.' + 'Paulsen for presidenten.'; SMAP = '\\ Kart = " Jeg vil nå fortsette å snakke i engelsk, men du vil "+" se mine ord oversatt til tysk i ballon over min "+" hodet "+" Hvordan er du i dag er jeg bare \\ EMP \\ dandy ".?! = " Jetzt werde ich '+ 'Zwar immer noch i Englisch Reden, sie werden aber meine' + 'Woerte im Ballon obenauf ins Deutsch uebersetzt sehen. "+" Wie geht es Ihnen heute? Mir geht es ganz gut " \\ '; Merk: Ikke alle handlinger (argumenter som sendes til Play-metoden) er tilgjengelig for alle agenter. Se tilsvarende dokumentasjon som finnes i Microsoft-filer som lastes ned med agenten for å se hvilke tegn (agenter) støtte hvilke handlinger
      InteractionIf du ønsker å svare på agentens hendelser, kan du koble disse opp på følgende måte:.

        Drop en Agent komponent på et skjema.

        Gå til Object Inspector arrangement side

        Klikk på hendelsen du vil håndtere

        Kopier sin metode signatur (til utklippstavlen, til Notepad, eller hva)

        Legg til en metode med som signatur i skjemaet erklæring

        Etter etableringen av Agent, tildele din metode til arrangementet du ønsker å håndtere.
        For eksempel, hvis du ønsker å håndtere Agent onclick hendelsen, skriver en metode med denne signaturen: prosedyre AgentWasClicked (Sender: TObject; konst CharacterID: WideString, Button, Shift, x, y: SMALLINT);
        Gjør tildeling av hendelseshåndterer til metoden direkte etter å skape Agent: RobotAgent: = TAgent.Create (Application); RobotAgent.OnClick: = AgentWasClicked, Hotell og deretter skrive definisjonen for hendelsesbehandling i enhetens implementering seksjon: prosedyre TYourObject.AgentWasClicked (Sender: TObject; konst CharacterID: WideString; Button, Shift, x, y: SMALLINT); begynne ShowMessage ('Don' 't røre meg der!'); End {--------------------- -------------------------------------------} funksjon TfrmAgent.UsersName: String; Var Buff: DWORD; CharArray: array [0..255] av Char, begynner Buff: = sizeof (CharArray); GetUserName (CharArray, Buff); Resultat: = CharArray; ende;
        Clay Shannon er en uavhengig Delphi konsulent basert i det nordlige Idaho. Han er tilgjengelig for: 1) Delphi consulting arbeid i større Spokane /Coeur d'Alene areas2) Remote utvikling (ingen jobb for liten) 3) Kortsiktige eller deltids oppdrag i andre locales.Clay er en sertifisert Delphi 5! utbygger, og er forfatter av Feilsøking [Wordware 1999] utvikler Guideto Delphi. Du kan nå ham på [email protected]



        Previous:
        Next Page: