Questions générales à propos des Plugins
Comment implémenter la fonction "Config" d'un Plugin
Comment ajouter ou modifier un protocole?
Comment créer un plugin de type "Bouton"
Comment créer un plugin de type "Barre latérale"
Comment activer la fonction "Config" d'un Plugin.
Support du DHTML étendu
Fonctions callback des plugins de barre latérale

Questions générales à propos des Plugins :

1. Object COM:

L'objet COM doit être implémenté dans l'interface IMyIEClient. Se reporter à IMyIE.h

2. Fichier Exe:

Tous fichier win32 exécutables peuvent être utilisés comme plugin. Maxthon enverra differents paramètres dans certaines circonstances.
Paramètre général:
a. "-h=handle" : handle est le Wnd handle de la fenêtre principale de Maxthon, de format décimal.

3. Fichier Script:

Des fichiers Script peuvent être écris dans le format suivant:

Exemple:
<script language="Javascript">
alert(document.lastModified);
</script>

Le 'langage' doit être n'importe quel langage valide supporté par IE.


Comment implémenter la fonction "Config" d'un Plugin ?

Il y a un bouton 'Config' dans la page des options des 'Plugins de Maxthon'. Maxthon appellera la fonction 'Config' correspondante au plugin, lorsque l'utilisateur cliquera sur le bouton 'Config'.

1. Object COM:

L'objet COM IMyIEClient::Config doit être appelé avec comme paramètre le hWnd handle de la boite de dialogue de config.

2. Fichier Exe:

Le fichier doit être appelé avec le paramètre "-setup". Par exemple, si le fichier est "abc.exe", alors Maxthon appellera "abc.exe -setup ..." .

3. Fichier Script:

Non supporté actuellement...

Comment ajouter ou modifier un protocole ?

Avec Maxthon, le plugin peut établir un nouveau protocole, comme book://, ou modifier un protocole existant, comme ftp://. Lorsque l'utilisateur saisi le protocole dans la barre d'adresse ou clique sur le protocole sur la page Web, Maxthon appelera le plugin.

1. Objet COM:

Non supporté actuellement...

2. Fichier Exe:

Le fichier doit être appelé avec le paramètre "-u=url", où l'url est l'adresse que l'utilisateur veut visiter, comme book://www.mysite.com/abc.pdf, ou ftp://www.google.com.

3. Fichier Script:

Non supporté actuellement...

Comment créer un plugin de type "Bouton" ?

Maxthon supporte des plugins de type "Bouton", qui peuvent être placés dans la barre des "Extensions d'IE". Le plugin est appelé lorsque l'utilisateur clique sur le bouton correspondant. Le 'Bouton' du plugin peut être implémenté en utilisant la méthode suivante.

1.Objet COM:

Lorsque l'utilisateur clique sur le bouton, Maxthon appelle l'interface Com IOleCommandTarget et IObjectWithSite en passant le pointeur IWebBrowser2 de la page courrante à la fonction IObjectWithSite::SetSite, puis appelle la fonction IOleCommandTarget::Exec. Ceci est identique à l'implémentation des boutons d'IE. Se reporter à MSDN pour plus d'informations.

Fichier Plugin.ini:

[General]
Name=ComButton
Author=bloodchen
Version=1.0
ModuleType=COM
FileName=ComButton.dll
CLSID={96E78121-9FF2-466D-B6CD-4038CAC1BB79}
Comments=Com type 'Button'
Type=M2Plugin_BUTTON
HotIcon=hot.ico
Icon=cold.ico


2.Script:

Lorsque l'utilisateur cliquera sur le bouton, Maxthon exécutera le script sur la page Web en cours.

Fichier Plugin.ini:
[General]
Name=LastModified
Author=bloodchen
Version=1.0
ModuleType=SCRIPT
FileName=LastModified.htm
Comments=See last modified date of current page
Type=M2Plugin_BUTTON
HotIcon=hot.ico
Icon=cold.ico

3.Fichier Exe:

Lorsque l'utilisateur cliquera sur le bouton, Maxthon appellera le fichier avec comme paramètres l'adresse courante et le handle de la fenêtre principale de Maxthon. Par exemple, si le fichier est abc.exe, alors Maxthon appellera abc.exe -h=23424 -u=http://www.yahoo.com, où 23424 est le handle de la fenêtre principale de Maxthon et http://www.yahoo.com est l'URL de la page courante.

Fichier Plugin.ini:

[General]
Name=ExeButton
Author=BloodChen
Version=1.0
ModuleType=EXE
FileName=abc.exe
Comments=Exe type Button
Type=M2Plugin_BUTTON
Icon=p.ico

Comment créer un plugin de type "Volet latéral" ?

Maxthon supporte des plugins de type "Volet latéral". Ce type de plugin se trouvent dans le volet latéral de Maxthon, en utilisant un fichier Html.

1.HTML:

Lorsque l'utilisateur clique sur le bouton, Maxthon charge le fichier Html dans le volet latéral, qui est indiqué dans le fichier Plugin.ini.

Exemple de fichier Plugin.ini:

[General]
Name=Calculator++ 1.2
Author=SiC
Version=1.2
ModuleType=SCRIPT
FileName=calculator.htm
Comments=Scientific programmable calculator.
Type=M2Plugin_Sidebar
HotIcon=cpp.ico
Icon=cpp.ico

2. COM

Lorsque l'utilisateur clic sur le bouton £ Maxthon chargera le contrôle COM dans la volet latéral, qui est défini dans le fichier plugin.ini.

Exemple de Plugin.ini:

[General]
Name=Exemple AXSidebar
Author=bloodchen
Version=1.0
ModuleType=COM
Comments=Simple contrôle activex de volet latéral
Type=M2Plugin_SideBar
FileName=AXSidebar.dll
CLSID={108C8E56-90AF-408B-873F-8AE3480BE090}
HotIcon=ax.ico
Icon=ax.ico

Le plugin COM peut être implémenté de 2 façons :

1. Un objet COM identique à l'implémentation de IE. Il doit utiliser l'interface IObjectWithSite,
IDeskBand et optionellement IInputObject. Le plugin de volet latéral Net Snippet en est un exemple.

2. Un contrôle activex. N'importe quel contrôle activex valide peut-être utilisé, fournissant le CLSID correcte. Le contrôle activex peut implémenter optionellement l'interface IObjectWithSite , à partir de laquelle Maxthon passera l'interface IWebBrowser2 de l'onglet actif. Si le contrôle activex n'est pas enregistré dans le système de l'utilisateur et que le nom de fichier n'est pas vide, Maxthon essayera d'enregistrer le fichier et de charger le contrôle de nouveau. Le plugin AXSidebar en est un exemple (avec code source).

Comment activer la fonction 'Config' d'un plugin. (Disponible après la v1.1.067)

Lorsqu'un utilisateur clique sur le bouton 'config' dans la boîte de dialogue de configuration des pluginq, Maxthon essayera d'ouvrir le fichier 'config.html' de votre répertoire plugin. Et un fichier 'max.src' sera crée pour que votre plugin récupère son security_id, afin de pourvoir utiliser certaines fonctions de maxthon. Vous pouvez utiliser les paramètres suivants pour définir la taille de la boîte de dialogue.
<meta name="Dialog-Width" content="110">
<meta name="Dialog-Height" content="120">

Support étendu du DHTML

Maxthon a étendu le support du DHTML en ajoutant un certains nombre de nouvelles commandes qui peuvent être appelées par le langage de script. Le code HTML ou script peut appeler la fonction par l'objet 'window.external'. La fonction peut être appelée à partir du script dans une page HTML ou un script de plugin.

Notez : Certaines fonctions nécessite un security_id comme premier paramètre qui n'était pas nécessaire dans les anciennes versions de MyIE2. Les plugins qui utilisent cette commande doivent être modifiés pour utiliser le security_id .

Comment récupérer l'id de sécurité ?
1. Pour les plugins de barre de boutons, vous devez avoir un %max_security_id dans vos fichiers de script, comme 'var security_id=%max_security_id", ainsi vous pourrez utiliser de security_id dans vos scripts.

2. Pour les plugins de barre latérale, un fichier nommé "max.src" doit être crée dans le répertoire de votre plugin et doit contenir "max_security_id=id". Vous pouvez inclure ce fichier dans votre page html pour récupérer l'id.

  1. addFavorite( url , title ) , addFavorite( url )

    Cette fonction demandera à l'utilisateur d'ajouter l''url' dans les favories, en utilisant 'title' comme nom d'url.

    Exemple1: external.addFavorite( "http://www.google.com" ); Démo
    Exemple2: external.addFavorite( "http://www.google.com","C' est google"); Démo
  2. addProxy (name, address, speed, is_web_proxy)

    Cette fonction appellera la boîte de dialogue d'ajout d'un proxy de Maxthon pour ajouter le nom du proxy 'name' à l'adresse 'address', en indiquant comme vitesse initiale 'speed'. Le is_web_proxy indique si le proxy est un proxy web ou un proxy normal.

    Exemple: external.addProxy("My proxy","192.168.1.0:8080",1,0); Démo
  3. addFilter( address ) , addFilter( address, is_pop_filter )

    Cette fonction appellera la boîte de dialogue d'ajout d'un filtre de Maxthon, en indiquant l'adresse à filtrer 'address'. 'is_pop_filter' indiquant si le type de filtre par défaut est un filtre de popup.

    Exemple1: external.addFilter("http://www.yahoo.com/ad*"); Démo
    Exemple1: external.addFilter("http://www.yahoo.com/img/*", 0); Démo
  4. readFile( security_id, plugin_name, file_name)

    Cette fonction ne peut être utilisée que dans un script de plugin, pour des raisons de sécurité. Le 'plugin_name' se réfère au nom du plugin défini dans plugin.ini et le 'file_name' indique le nom du fichier qui doit être lu. La fonction retournera contenu du fichier. Si le plugin n'est pas capable de lire ou que le nom du plugin est erroné ou non trouvé, la fonction se terminera sur une erreur et retournera null.

    Example: alert(external.readFile(security_id,"Test plugin","plugin.ini")) ;

  5. writeFile(security_id, plugin_name, file_name, content )

    Cette fonction ne peut être utilisée que dans un script de plugin, pour des raisons de sécurité. Le 'plugin_name' se réfère au nom du plugin défini dans plugin.ini et le 'file_name' indique le nom du fichier qui doit être écrit. Le 'content' est le contenu qui sera écrit dans le fichier. Si le plugin n'est pas capable d'écrire ou que le nom du plugin et erroné ou non trouvé,la fonction se terminera sur une erreur et retournera null.
    Notez SVP: Le fichier sera écrasé à partir du début.

    Example: external.writeFile(security_id,"Test plugin","setting.ini","username=abc\npass=qwrxcv");

  6. tab_count : Cette propriété retourne le nombre total d'onglets dans un entier.

    Exemple: var total_tab = external.tab_count ; Demo

  7. activate_tab(security_id, index)

    Cette fonction active l'onglet numéro 'index' de Maxthon.

    Exemple: external.activate_tab(1); Demo

  8. get_tab(security_id, index)

    Cette fonction retourne la page web de l'onglet index.

    Exemple: alert(external.get_tab(0).document.URL); Demo

  9. cur_sel

    Cette fonction retourne le numéro de l'onglet courant dans un entier.

    Exemple: var cur_tab = external.cur_sel; Demo

  10. close_tab(security_id, index)

    Cette fonction ferme l'onglet numéro 'index' de Maxthon.

    Exemple: external.close_tab(0); Demo

  11. m2_readIni(security_id, plugin_name,file_name, section_name,key, default_value)

    Cette fonction lira la clé utilisant la default_value dans le fichier ini spécifié par file_name dans le répertoire du plugin.

    Exemple: path = external.m2_readIni("testplugin","settings.ini","general","save","0");

  12. m2_writeIni(security_id, plugin_name, file_name,section_name, key, value)

    Cette fonction écrira la clé avec la valeur dans le fichier ini spécifié par file_name.

    Exemple: external.m2_writeIni("testplugin","settings.ini","general","save","1");

  13. m2_search_text

    Cette propriété retournera le texte dans la barre de recherche de Maxthon.

    Exemple: alert(external.m2_search_text)

  14. m2_run_cmd(security_id, id)

    Cette fonction appellera une commande de Maxthon avec l'ID. L'id de chaque commande sera présent dans le fichier de chaque langue.

    Exemple: external.m2_run_cmd(security_id, 32772); //Ouvrira une page blanche.

  15. m2_plugin_folder(security_id, plugin_name)

    Cette fonction retournera le répertoire local du plugin.

    Exemple:external.m2_plugin_folder("ViewSource!");
  16. max_actSideBarItem( plugin_name )

    Cette fonction activera le plugin de la barre latérale du nom de 'plugin_name'.
  17. max_modelessDialog( security_id,url,option,attr,window)

    Cette fonction ouvrira un modelessDialog. C'est la même chose que la fonction window.ShowModelessDialog. Le dernire paramètre 'window' est l'objet fenêtre de la page web.
  18. m2_callerName( security_id, plugin_name)

    Cette fonction indique à Maxthon que l'appel est réalisé à partir du Plugin. C'est habituellement utilisé avant un appel window.open pour que maxthon ne tienne pas compte de la fenêtre popup que le plugin ouvre.
  19. max_showConfig(security_id, plug_name)

    Cette fonction affichera la boîte de dialogue de configuration des plugins.

Fonctions callback des plugins de barre latérale :

La barre latérale peut utiliser la fonction max_callback(status) .
1. Lorsqu'elle est crée, l'URL sera filename?maxcmd=init
2. Lorsque le plugin est activé, max_callback('sidebar_activate') sera appelée
3. Lorsque le plugin est déactivé, max_callback('sidebar_deactivate') sera appelée
4. Lorsque l'onglet actif est modifié, max_callback('sidebar_tab_change') sera appelée
5. Lorsque le plugin est déchargé, max_callback('sidebar_unload') sera appelée.