2013-02-25 76 views
2

我正在学习如何从我的php脚本运行iMacros,以便PHP脚本调用iMacros浏览器会话并传递我拥有的任何变量(例如url和宏名称)。然后,iMacros会话运行iMacro,在宏完成运行后,它将生成的html页面传递回PHP脚本并关闭自身。无论如何,在理想的世界里。我的iMacro脚本不在我的PHP脚本中运行。为什么?

这里是iMacros的调用脚本:

<?php 

require 'src/iimfx.class.php'; 

$iim = new imacros(); 

$vars = array(); 

$iim->play($vars,'grab_data.iim'); 


?> 

但是当我运行cmd.exe的从[命令行]上WAMP这个剧本,我得到这个:

New imacros session started! 
Using Proxy: MY_PROXY_IP:MY_PROXY_PORT 
-runner -fx -fxProfile default 
-------------------------------------------------------- 
Setting Value IP => MY_PROXY_IP 
Setting Value port => MY_PROXY_PORT 
Playing Macro proxy.iim 
--------MACRO ERROR!------------------- 
ERROR: Browser was not started. iimInit() failed? 
-------------------------------------------------------- 
Playing Macro grab_google.iim 
--------MACRO ERROR!------------------- 
ERROR: Browser was not started. iimInit() failed? 

附: MY_PROXY_IP和MY_PROXY_PORT被上面的错误信息和iimfx.class.php中的实际数字替换。

这里是为iimfx.class.php代码:

<?php 

class imacros { 
    function __construct($proxyip = 'MY_PROXY_IP', $proxyport = 'MY_PROXY_PORT', $silent = false, $noexit = false) { 

     echo "--------------------------------------\nNew imacros session started!\nUsing Proxy: $proxyip:$proxyport\n"; 
     $this->proxyip = $proxyip; 
     $this->proxyport = $proxyport; 

     if (empty ($this->proxyip)) 
      echo "NO PROXY!!\n"; 

     $this->noexit = $noexit; 
     $this->fso = new COM ('Scripting.FileSystemObject'); 
     $this->fso = NULL; 

     $this->iim = new COM ("imacros"); 

     $toexec = "-runner -fx -fxProfile default"; 

     if ($silent === true) 
      $toexec .= " -silent"; 

     if ($noexit === true) 
      $toexec .= " -noexit"; 

     echo $toexec . "\n"; 

     $this->iim->iimInit ($toexec); 

     if (! empty ($this->proxyip)) { 
      $dvars ['IP'] = $this->proxyip; 
      $dvars ['port'] = $this->proxyport; 
      $this->play ($dvars, 'proxy.iim'); 
     } 
    } 

    function __destruct() { 
     if ($this->noexit === false) 
      $this->iim->iimExit(); 
    } 

    function play($immvars = '', $macro) { 

     echo "--------------------------------------------------------\n"; 

     if (is_array ($immvars)) { 
      foreach ($immvars as $key => $value) { 
       echo "Setting Value $key => $value\n"; 
       $this->iim->iimSet ("-var_" . $key, $value); 
      } 
     } 

     echo "Playing Macro $macro\n"; 
     $s = $this->iim->iimPlay ($macro); 

     if($s>0){ 
      echo "Macro successfully played!\n"; 
     }else{ 
      echo "--------MACRO ERROR!-------------------\n ERROR: " . $this->getLastError() . "\n"; 
     } 
     return $s; 
    } 

    // This function retrieves extracts in your iMacros script if you have any. 
    function getLastExtract($num) { 
     return $this->iim->iimGetLastExtract ($num); 
    } 

    // Returns the last error :) 
    function getLastError(){ 
     return $this->iim->iimGetLastError(); 
    } 

    // Enables/disables images 
    function setImages($images = 1) { // 1 = on 2 = off 

     $dvars ['images'] = $images; 
     $this->play ($dvars, 'images.iim'); 

    } 

    // Enables or disables adblockplus 
    function enableABP($status = true){ 

     $dvars['status'] = $status; 
     $this->play ($dvars, 'abp.iim'); 

    } 

} 

?> 

有我丢失的东西吗? 我有iimRunner.exe在此[在运行脚本之前手动启动]期间运行,并且我拥有iMacros Browser V8 +。 此外,我的grab_data.iim和所有其他所需的.iim与尝试调用它们并执行它们的php脚本位于相同的位置。

任何形式的帮助和/或转向正确的方向将不胜感激! 在此先感谢。

+1

,我觉得问题很有意思,我做的iMacros但不是在PHP。大拇指为这个问题,让别人可以看到它。 – macroscripts 2013-02-26 20:53:23

回答

相关问题