Флешка

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Amur[чик], 26 Jul 2011.

  1. Amur[чик]

    Amur[чик] New Member

    Joined:
    11 May 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    -5
    в общем, есть сайт к примеру возьмем вконтакте на нем есть игра, так вот как можно средствами C# отображать в окне только именно эту флеш игру а не всю страницу ? причем так что бы не только показать но и взаимодействовать с этой флешкой(нажимать кнопки и прочее)
     
  2. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Например так:

    Все достаточно просто. Далее привожу отрывок из недр интернета:

    С помощью AxtiveX компонента Shockware Flash Object.
    Действия:
    - в VS 2005 правой кнопкой кликнуть на поле Toolbox, в контекстном меню выбрать Choose Items.
    - в появившемся окне Choose Toolbox Items перейти на закладку COM Components, выбрать Shokware Flash Object
    (я использую Debug версию 9 плеера, у меня это - c:\Windows\system32\Macromed\Flash\ FlDbg9.ocx).
    - теперь на закладке у нас появился Shockware Flash Object, который можно смело перетянуть на форму.

    Код:
    PHP:

    private AxShockwaveFlashObjects.AxShockwaveFlash flashPlayer;
        
    this.flashPlayer = new AxShockwaveFlashObjects.AxShockwaveFlash();
        
    this.flashPlayer.Enabled true;
        
    this.flashPlayer.Location = new System.Drawing.Point(1312);
        
    this.flashPlayer.Name "flashPlayer";
        
    this.flashPlayer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("flashPlayer.OcxState")));
        
    this.flashPlayer.Size = new System.Drawing.Size(300200);
    - замеченные баги: Если при первой компиляции после добавления ролика выдает ошибку, что не найден только что добавленный компонент - необходимо удалить папки obj, bin в проекте.
    Работа с компонентом:
    - загрузка ролика в компонент:

    Код:

    PHP:
    string path "c:\\tmp\\simple.swf";
        
    flashPlayer.LoadMovie(0path);
    здесь я надеюсь все понятно, смущение может вызвать первый параметр - для тех, кто знает флеш - это слой, на который будет загружен ролик.
    - получение команд от ролика:
    флеш ролик может взаимодействовать с окружением с помощью команды языка Action Sript - fscommand, например(обработчик нажатия кнопки во флеш ролике) -

    Код:
    PHP:

    on
    (click) {
            
    fscommand("sendCmd"1);
        }
    первый параметр - имя комманды, второй - аргумент комманды.
    Ловим эту комманду из Windows.Forms :
    //подписываемся на событие от ролика на получение fscommand

    Код:
    PHP:

    flashPlayer
    .FSCommand += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(flashPlayer_FSCommand);
        
    //подписчик:
        
    void flashPlayer_FSCommand(object senderAxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
            {
                
    tbOut.Text += e.command " (" e.args ")" "\r\n";
            }
    при этом - e.command - команда (строка), e.args - аргумент команды (строка). В примере команда добавляется в текстовое поле для отображения.
    - управление роликом:
    для управления роликом у компонента есть блок методов, начинающихся с T, вот некоторые:

    Код:
    и еще много вкусного

    Для начала можешь почитать здесь: http://www.google.ru/search?q=Flash+C%23
    На англоязычных ресурсах.
     
  3. Amur[чик]

    Amur[чик] New Member

    Joined:
    11 May 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    -5
    окей, спасибо !