int  WeiXinShareSessionObject::AS3_sendVedio(int sendType, Stringp title, Stringp description, BitmapDataObject * thumbPicData, Stringp videoUrl)
		{
			if(!g_WeiXinAppIsInstalled)
				return 0;
            sendType < 2 ? (g_WeiXinSendType = sendType) : (g_WeiXinSendType = 0);
            if(!g_WeiXinShareSessionSavedData)
                g_WeiXinShareSessionSavedData = new BWSendMessageContentClass;
            XLock lock(&(g_WeiXinShareSessionSavedData->m_lock));
            StUTF8String titleUTF8(title);
            if(!g_WeiXinShareSessionSavedData->parameter1)
            {
                g_WeiXinShareSessionSavedData->parameter1 = malloc(titleUTF8.length() + 1);
                g_WeiXinShareSessionSavedData->parameter1Len = titleUTF8.length() + 1;
                memcpy(g_WeiXinShareSessionSavedData->parameter1, titleUTF8.c_str(), titleUTF8.length() + 1);
            }
            StUTF8String descriptionUTF8(description);
            if(!g_WeiXinShareSessionSavedData->parameter2)
            {
                g_WeiXinShareSessionSavedData->parameter2 = malloc(descriptionUTF8.length() + 1);
                g_WeiXinShareSessionSavedData->parameter2Len = descriptionUTF8.length() + 1;
                memcpy(g_WeiXinShareSessionSavedData->parameter2, descriptionUTF8.c_str(), descriptionUTF8.length() + 1);
            }
            //DataFile datafile = thumbPicData->GetByteArray();
			//XU8Array data;
			//thumbPicData->Encode(data);
            if(!g_WeiXinShareSessionSavedData->parameter3)
            {
				XDrawDib dib;
				if(thumbPicData->GetDib(dib))
				{
					int width = dib.Width();//bits->width;
					int height = dib.Height();//bits->height;
					int length = 4 * width * height;
					g_WeiXinShareSessionSavedData->parameter3Width = width;
					g_WeiXinShareSessionSavedData->parameter3Height = height;
					g_WeiXinShareSessionSavedData->parameter3Len = length;
					//g_WeiXinShareSessionSavedData->parameter3 = malloc(data.GetSize());//thumbPicData->GetLength());
					g_WeiXinShareSessionSavedData->parameter3 = malloc(length);
					//g_WeiXinShareSessionSavedData->parameter3Len = data.GetSize();//thumbPicData->GetLength();
					g_WeiXinShareSessionSavedData->parameter3Len = length;
					//memcpy(g_WeiXinShareSessionSavedData->parameter3, data.GetData(),data.GetSize());//(void *)datafile.GetBuffer(), thumbPicData->GetLength());
					memcpy(g_WeiXinShareSessionSavedData->parameter3, dib.GetAddress(), length);
				}
            }
            StUTF8String videoUrlUTF8(videoUrl);
            if(!g_WeiXinShareSessionSavedData->parameter4)
            {
                g_WeiXinShareSessionSavedData->parameter4 = malloc(videoUrlUTF8.length() + 1);
                g_WeiXinShareSessionSavedData->parameter4Len = videoUrlUTF8.length() + 1;
                memcpy(g_WeiXinShareSessionSavedData->parameter4, videoUrlUTF8.c_str(), videoUrlUTF8.length() + 1);
            }
            lock.UnLock();
            XWindow*pWnd=XWindow::m_pMainWnd;
			if(pWnd)
            {
				pWnd->PostMsg(XWM_WXSENDVEDIO,0,0,XMS_TOPMOST);
				return 1;
			}
			return 0;
		}
NS_IMETHODIMP Icon::Init(nsIDOMWindow *aWindow, const nsString& aTitle)
{
  nsresult rv;
  nsCOMPtr<nsIBaseWindow> baseWindow;
  rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
  NS_ENSURE_SUCCESS(rv, rv);

  nativeWindow native = 0;
  rv = baseWindow->GetParentNativeWindow(&native);
  NS_ENSURE_SUCCESS(rv, rv);

  // Get the window
  mGdkWindow = gdk_window_get_toplevel(reinterpret_cast<GdkWindow*>(native));
  if (!mGdkWindow) {
    return NS_ERROR_UNEXPECTED;
  }

  // Get the widget and gtk window
  GtkWidget *widget;
  gdk_window_get_user_data(mGdkWindow, reinterpret_cast<gpointer*>(&widget));
  widget = gtk_widget_get_toplevel(widget);
  mGtkWindow = reinterpret_cast<GtkWindow*>(widget);

  // Set up tray icon
  mStatusIcon = gtk_status_icon_new();

  // Get the window icon and set it
  GdkPixbuf *buf = gtk_window_get_icon(mGtkWindow);
  if (buf) {
    gtk_status_icon_set_from_pixbuf(mStatusIcon, buf);
  } else {
    const gchar *iconname = gtk_window_get_icon_name(mGtkWindow);
    if (iconname)
      gtk_status_icon_set_from_icon_name(mStatusIcon, iconname);
  }

  // Get and set the title
  if (aTitle.IsEmpty()) {
    gtk_status_icon_set_tooltip_text(mStatusIcon, gtk_window_get_title(mGtkWindow));
    gtk_widget_add_events(widget, GDK_PROPERTY_CHANGE_MASK);
    propertyEventId = g_signal_connect(mGtkWindow, "property-notify-event", G_CALLBACK(gtkPropertyEvent), this);
  }
  else {
    NS_ConvertUTF16toUTF8 titleUTF8(aTitle);
    gtk_status_icon_set_tooltip_text(mStatusIcon, reinterpret_cast<const char*>(titleUTF8.get()));
    propertyEventId = 0;
  }

  // Add signals
  g_signal_connect(G_OBJECT(mStatusIcon), "button-press-event", G_CALLBACK(gtkButtonEvent), this);
  g_signal_connect(G_OBJECT(mStatusIcon), "button-release-event", G_CALLBACK(gtkButtonEvent), this);

  // Make visible
  gtk_status_icon_set_visible(mStatusIcon, 1);
  return NS_OK;
}