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; }); }
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])); } }