日期:2014-05-16  浏览次数:20448 次

(轻便)调试JavaScript的旺旺插件(基于jzshmyt的javascript-logger)
Demo如下,大家拍砖吧!


请看下面介绍:







程序代码:

下面代码负责实现和旺旺IM通讯的接口,这里只响应了onClick事件。
using System.Linq;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;
using wwsdkcomLib;
using System.Xml;

namespace JSHelper
{
    public class Global
    {
        public static int lPluginCookie;
        public static int lCookie;
        public static object pSlot;
        public static string appid = "18265";
    }
    [ComVisible(true),
    Guid("B221A17A-D3E7-44df-AD67-D45CFA4B5229"),
    ClassInterface(ClassInterfaceType.None)]
    public class Class1 : ISDKPlugin2
    {
        public void OnConnect(object pApplication, int lPluginCookie)
        {
            // OnConnect 不建议使用末态对话框 
            //ISDKPluginQueryResult pqr = (pApplication as ISDKApplication3).GetSubScriptionInfo(lPluginCookie) as ISDKPluginQueryResult;
            //Global.appid = pqr.appID;
        }
        
        public void OnDisconnect(object pApplication, int lPluginCookie)
        {
            // OnDisConnect 不建议使用末态对话框 
            // MessageBox.Show("我被卸载了", "csharp helloworld");
        }



        public void OnNotify(SDKMessageID MsgID, object pParam)
        {

            if (MsgID == SDKMessageID.NOTIFY_OFFLINE)
            {
            }

            else if (MsgID == SDKMessageID.NOTIFY_USERLOGIN)
            {
            }
        }

        public void OnUninstall()
        {
        }

        public void Require()
        {
        }
    }
    [ComVisible(true),
    Guid("950BFC6C-502A-4239-A36E-90893BA3B03E"),
    ClassInterface(ClassInterfaceType.None)]

    public class Class2 : ISDKPluginItem {

        Form1 f1;

        public void OnMenuClick(int lCmdID)
        {
        }

        // 插件作为按钮出现时候得到点击后被调用 
        // 本例中此方法将在点击发生后得到调用 

        public void OnClick()
        {
            try
            {
                this.f1.Show();
            }
            catch(Exception ex)
            {
                this.f1 = new Form1();
                this.f1.Show();
            }
        }

        // 插件接入到插槽后得到通知 

        public void OnCreate(object pSlot, int hParentWnd, int lCookie)
        {

        }

        // 插件在附属插槽被销毁时候得到通知 

        public void OnDestroy()
        {
            // 使用模态对话框可能导致异常 
            // MessageBox.Show("聊天对话框输入工具条插件被销毁", "csharp allinone plugin");
        }

        // 和插件项本身相关的消息通知 

        public void OnNotify(SDKItemNotifyID MsgIDD, object pParam)
        {

        }

        // 当插件以窗口形式出现情况下,在父窗口发生变化情况下得到通知 

        public void OnSize(int cx, int cy)
        {
        }

    }

}


下面代码是JSHelper窗体主程序,没什么意思。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace JSHelper
{
    public partial class Form1 : Form
    {
        String path;
        Form2 f2;
        Form2 f3;
        Form2 f4;
        Form2 f5;
        Form2 f6;

        public Form1()
        {
            InitializeComponent();
            this.path = Application.StartupPath;
            this.webBrowser1.Url = new System.Uri(this.path + "\\plugins\\" + Global.appid + "\\src\\debugger.html", false);
        }

        private void ExamplesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start("explorer", this.path + "\\plugins\\" + Global.appid + "\\src\\example\\");//+this.path 
            }
            catch(Exception ex)
            {