Exemplo n.º 1
0
        public static bool SendMessage(IntPtr handle, string args)
        {
            if (handle == IntPtr.Zero)
            {
                handle = FindWindow(null, MainFormName);
                if (handle == IntPtr.Zero)
                {
                    return(false);
                }
            }

            WindowsMessageHelper.CopyDataStruct cds = new WindowsMessageHelper.CopyDataStruct();
            try
            {
                cds.cbData = (args.Length + 1) * 2;
                cds.lpData = WindowsMessageHelper.LocalAlloc(0x40, cds.cbData);
                Marshal.Copy(args.ToCharArray(), 0, cds.lpData, args.Length);
                cds.dwData = (IntPtr)1;
                WindowsMessageHelper.SendMessage(handle, WindowsMessageHelper.WM_COPYDATA, IntPtr.Zero, ref cds);
                return(true);
            }
            catch
            {
                return(false);
            }
            finally
            {
                cds.Dispose();
            }
        }
        public static void AddTaskSelfLink(string title, string commandName, string iconPath, int iconNumber)
        {
            if (string.IsNullOrWhiteSpace(commandName))
            {
                throw new ArgumentNullException("commandName");
            }

            var icon = CreateIconReference(iconPath, iconNumber);

            // Register the command and get the associated number.
            int command = WindowsMessageHelper.RegisterCommand(commandName);

            AddTaskLink(title, Assembly.GetEntryAssembly().Location, WindowsMessageHelper.COMMAND_PREFIX + command.ToString(), icon);
        }
Exemplo n.º 3
0
 protected override void WndProc(ref Message m)
 {
     if (WindowsMessageHelper.WindowMessages.ContainsKey(m.Msg))
     {
         OnJumpListCommandReceived(new CommandEventArgs(WindowsMessageHelper.WindowMessages[m.Msg]));
     }
     else if (m.Msg == WindowsMessageHelper.WM_COPYDATA)
     {
         string arguments = WindowsMessageHelper.GetArguments(m.LParam);
         OnStartupInstance(new StartupEventArgs(false, arguments));
     }
     else
     {
         base.WndProc(ref m);
     }
 }
Exemplo n.º 4
0
        private static void HandleCommand(IntPtr handle)
        {
            var commandLineArgs = Environment.GetCommandLineArgs();

            if (commandLineArgs.Length > 1 && commandLineArgs[1].StartsWith(WindowsMessageHelper.COMMAND_PREFIX))
            {
                // It is a Jump List command.
                string temp = commandLineArgs[1].Split(':').LastOrDefault();
                int    commandNumber;
                if (int.TryParse(temp, out commandNumber))
                {
                    WindowsMessageHelper.SendMessage(handle, commandNumber);
                }
            }
            else
            {
                var args = string.Join(" ", commandLineArgs.Skip(1).ToArray());
                WindowsMessageHelper.SendMessage(handle, args);
            }
        }