示例#1
0
 private void SparTaskAddProgram(object sender, MouseEventArgs e)
 {
     System.Threading.Tasks.Task.Factory.StartNew(() =>
     {
         var menu = new ContextMenuStrip();
         for (int i = 0; i < SparTaskButtonInfoTbl.Length; i++)
         {
             bool create = false;
             foreach (Button b in SparTaskButtonTbl)
             {
                 if (((ArrayList)b.Tag)[1].Equals(((ArrayList)SparTaskButtonInfoTbl[i])[1]))
                 {
                     create = true;
                 }
             }
             if (create)
             {
                 continue;
             }
             var item       = new ToolStripMenuItem((string)(((ArrayList)SparTaskButtonInfoTbl[i])[0]));
             Icon IEIcon    = System.Drawing.Icon.ExtractAssociatedIcon(WinAPI.GetProcessPath((IntPtr)(((ArrayList)SparTaskButtonInfoTbl[i])[1])));
             Image im       = IEIcon.ToBitmap();
             item.BackColor = System.Drawing.Color.FromArgb(200, 200, 200);
             item.ForeColor = System.Drawing.Color.FromArgb(50, 50, 50);
             item.Image     = im;
             if (this.InvokeRequired)
             {
                 this.BeginInvoke(new Action(() => menu.Items.Add(item)));
                 this.BeginInvoke(new Action(() => menu.Show(this, new Point(e.X, e.Y))));
             }
             else
             {
                 menu.Items.Add(item);
                 menu.Show(this, new Point(e.X, e.Y));
             }
             item.Tag    = ((ArrayList)SparTaskButtonInfoTbl[i]);
             item.Click += new EventHandler(this.SparTaskAddProgram_);
         }
         return;
     });
 }
示例#2
0
        private void SparTaskAddProgram_(object sender, EventArgs e)
        {
            System.Windows.Forms.ToolStripMenuItem item = (System.Windows.Forms.ToolStripMenuItem)sender;
            ArrayList Item = (ArrayList)item.Tag;

            try
            {
                Icon IEIcon = System.Drawing.Icon.ExtractAssociatedIcon(WinAPI.GetProcessPath((IntPtr)Item[1]));

                System.Windows.Forms.Button SparTaskButton = new System.Windows.Forms.Button();
                SparTaskButtonTbl.Add(SparTaskButton);
                Image im = IEIcon.ToBitmap();
                SparTaskButton.Name      = "TaskBarButton." + (string)Item[0];
                SparTaskButton.BackColor = System.Drawing.Color.FromArgb(50, 50, 50);
                SparTaskButton.Image     = im;
                SparTaskButton.Tag       = Item;
                uint pid = 0;
                WinAPI.GetWindowThreadProcessId((IntPtr)Item[1], out pid);
                System.Diagnostics.Process proc = System.Diagnostics.Process.GetProcessById((int)pid);
                proc.EnableRaisingEvents = true;
                proc.Exited             += (sender2, event2) => this.SparTaskHookRemoveButton(sender2, event2, SparTaskButton);
                SparTaskButton.Location  = new System.Drawing.Point(0, 0);
                SparTaskButton.Margin    = new System.Windows.Forms.Padding(0);
                SparTaskButton.Size      = new System.Drawing.Size(40, 40);
                SparTaskButton.TabIndex  = 0;
                SparTaskButton.FlatStyle = FlatStyle.Flat;
                SparTaskButton.FlatAppearance.BorderSize = 0;
                System.Windows.Forms.ToolTip tt = new System.Windows.Forms.ToolTip();
                tt.SetToolTip(SparTaskButton, (string)Item[0]);
                SparTaskButton.MouseUp   += this.SparTaskSwitchTo;
                SparTaskButton.MouseDown += SparTaskBar_MouseDown;
                SparTaskBar.Controls.Add(SparTaskButton);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
                Console.WriteLine("Error in: " + ((string)Item[0]));
            }
        }