MS Agent в Delphi

Тема в разделе "Другие языки", создана пользователем ras999, 27 май 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. ras999

    ras999 Создатель

    Регистр.:
    18 июл 2008
    Сообщения:
    35
    Симпатии:
    9
    Нашел вот эту статью
    http://subritto.h1.ru/msagent/msagent1.php
    сделал подобный проект в delphi,
    на windows xp работает, а на vista почему то нет.

    Прошу подсказать решение проблемы

    пример кода

    var
    s:string;
    x,y:integer;
    begin
    s:='Genie.acs';
    x:=100;y:=100;


    form1.Agent1.Connected:=true;
    form1.Agent1.Characters.Load('MyAgent',s);
    form1.Agent1.Characters['MyAgent'].Left :=x;
    form1.Agent1.Characters['MyAgent'].Top :=y;
    form1.Agent1.Characters['MyAgent'].Show(False);
    form1.Agent1.Characters['MyAgent'].MoveTo((x+650)-form1.Agent1.Characters['MyAgent'].Width, (y+300)-form1.Agent1.Characters['MyAgent'].Height, 1500);
    form1.Agent1.Characters['MyAgent'].Play('Greet');
    form1.Agent1.Characters['MyAgent'].Hide(False);

    end;

     
  2. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Скорее всего разная версия мс офиса, и, соответственно, разные версии dll с агентом.
     
  3. krivov

    krivov Постоялец

    Регистр.:
    24 дек 2007
    Сообщения:
    142
    Симпатии:
    19
  4. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Я сделал пример из статьи на D2009 под Vista x64. При запуске получил ошибку:

    Access violation at address 0045CDC2 in module 'TestAgent.exe'. Read of address 00000338

    Проблему решил созданием экземпляра класса до его первого использования. Мерлин запустился:

    Код:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     {Здесь мы загружаем персонаж из файла 'merlin.acs' под именем 'Merlin'.
      Вы можите здесь вписать свое имя и имя файла, имеющегося у вас персонажа}
    [B] Agent1 := TAgent.Create(self); // я добавил эту строку[/B]
     Agent1.Characters.Load('MyAgent', 'Genie.acs');
     {Запоминаем персонаж в переменной Character}
     Chars:= Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx;
     {Показываем списаок анимаций персонажа}
     ShowAgentAnim;
     {Наконец-то показываем персонаж, и запоминаем, что он делает в данное вермя.
      Будем всегда так делать, так как это понадобиться, если мы вдруг захотими
      остановить анимацию во время ее выполнения}
     Req:=Chars.Show(0);
    end;
     
    ras999 нравится это.
  5. ras999

    ras999 Создатель

    Регистр.:
    18 июл 2008
    Сообщения:
    35
    Симпатии:
    9
    благодарю за помощь,
    мерлин действительно работает.
     
Статус темы:
Закрыта.