精华内容
下载资源
问答
  • 主要介绍了C#获取任务栏显示进程的方法,涉及C#针对进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 修改windows任务栏右击进程图标显示文字实质说明Qtvisual studio MFC效果图注意事项 实质 修改windows任务栏右击进程图标显示文字,实质就是:修改程序exe的描述说明 说明 以win10为例 Qt 主要就是修改.pro文件的...

    修改windows任务栏右击进程图标显示文字

    实质

    修改windows任务栏右击进程图标显示文字,实质就是:修改程序exe的描述说明

    说明

    以win10为例

    Qt

    主要就是修改.pro文件的程序生成配置

    • 添加版本字段:VERSION = 1.6.77

    • 添加输出文件描述:QMAKE_TARGET_DESCRIPTION = haha6
      整体如下所示:

    #
    #-------------------------------------------------
    
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    VERSION = 1.6.77
    QMAKE_TARGET_DESCRIPTION = haha6
    
    TARGET = testApplication
    TEMPLATE = app
    
    # The following define makes your compiler emit warnings if you use
    # any feature of Qt which has been marked as deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    

    注意、注意、注意:

    • 必须先配了VERSION字段、QMAKE_TARGET_DESCRIPTION才生效
    • 配置了‘.pro’文件,记住qmake下,要不你会很郁闷的

    visual studio MFC

    主要就是修改.rc资源文件的FileDescription

    效果图

    修改后效果

    注意事项

    如在修改文件描述之前运行过exe,那必须得更改注册表,貌似注册表只会第一次自动写入。
    打开注册表HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache找到对应路径程序,将相应的键值改为自己想要的描述
    如本例所示:
    注册表修改

    展开全文
  • C# 结束任务栏指定进程

    千次阅读 2011-11-01 19:25:18
    public static void KillProcess(string processName) { System.Diagnostics.Process myproc = new System.Diagnostics.Process(); //得到所有打开的进程 try {
            public static void KillProcess(string processName)
            {
                System.Diagnostics.Process myproc = new System.Diagnostics.Process();
                //得到所有打开的进程
                try
                {
                    foreach (Process thisproc in Process.GetProcessesByName(processName))
                    {
                        if (!thisproc.CloseMainWindow())
                        {
                            if (thisproc != null)
                                thisproc.Kill();
                        }
                    }
                }
                catch (Exception Exc)
                {
                    throw Exc;   
                }
            }

    用法:

                KillProcess("Excel");
    


    展开全文
  • 最近在做一个项目,有2个进程,A进程需要定时把B进程强行kill掉,然后再启动,当时这样会有一个问题,就是强行kill掉的进程任务栏的托盘图标不会自动消失,必须用鼠标经过那个位置才会消失。这样就导致事件久了,...

           最近在做一个项目,有2个进程,A进程需要定时把B进程强行kill掉,然后再启动,当时这样会有一个问题,就是强行kill掉的进程在任务栏的托盘图标不会自动消失,必须用鼠标经过那个位置才会消失。这样就导致事件久了,任务栏出现一大堆图标,非常影响形象。

          后来网上看到一个方法,说是通过进程间的通讯,就是由A发送通知给B,告诉B应该要退出程序了,然后由B自己来结束进程,这样任务栏的图标才会正常的消失。废话少说,直接看代码吧:

    对于A进程来说,需要先找到B进程的句柄,然后才能给它发送通知,代码如下:

    /// <summary>
            /// 根据端口号结束某个进程
            /// </summary>
            /// <param name="port">端口号,如:7012  </param>
            /// <returns></returns>
            private void KillPortProcess(int port)
            { 
                int pid = 0;
    
                try
                {
                    IntPtr hwnd = FindWindow(null, port.ToString());
                    int ihWnd = (int)hwnd;
                    GetWindowThreadProcessId(hwnd, out pid);
                    var p = Process.GetProcessById(pid);
                    if (p != null)
                    {
                        if (p.ProcessName == "MySvr")
                        {
                            //强制杀掉进程(这种模式不能自动销毁任务栏图标)
                            //p.Kill();                        
                              
                            //利用发送消息方式,通知进程自杀(这种模式可以自动销毁任务栏图标)
                            byte[] sarr = System.Text.Encoding.Default.GetBytes("SelfKill");
                            int len = sarr.Length;
                            COPYDATASTRUCT cds;
    
                            cds.dwData = (IntPtr)Convert.ToInt16("1");//可以是任意值 
                            cds.cbData = len + 1;//指定lpData内存区域的字节数 
                            cds.lpData = "SelfKill";//发送给目标窗口所在进程的数据
    
                            int iflag = SendMessage(ihWnd, WM_COPYDATA, 0, ref cds); 
                        }
                    }
                }
                catch (Exception e)
                { 
                } 
            }

    我这个函数是根据进程的窗体标题来查找的,因为我的标题都是一个固定的端口号,所以按这种方式来做,当然也可以根据进程名称来做,在这里就不举例了。

    这里用到了Windows的API函数:  SendMessage  , 要引用这个函数,必须事先做以下的声明才能使用:

     消息结构体:

    public struct COPYDATASTRUCT
        {
    
            public IntPtr dwData;
    
            public int cbData;
    
            [MarshalAs(UnmanagedType.LPStr)]
    
            public string lpData;
    
        }

    声明要引用的API函数:

            [DllImport("User32.dll", EntryPoint = "FindWindow")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
            [DllImport("user32", EntryPoint = "GetWindowThreadProcessId")]
            public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int pid);
    
            [DllImport("User32.dll", EntryPoint = "SendMessage")]
            private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
     
    
            const int WM_COPYDATA = 0x004A;

    -------------------------------------------------------------------------------------------------------------------------------------------------------

    那么对于B进程来说,需要做的事情就是接收A进程发来的消息,根据消费的内容来做出对应的动作,

    只要重载 DefWndProc 函数即可实现消息的接收处理,代码如下:

    /// <summary>
            /// 消息接受处理函数
            /// </summary>
            /// <param name="m"></param>
            protected override void DefWndProc(ref Message m)
            {
    
                switch (m.Msg)
                {
    
                    case WM_COPYDATA: 
                        COPYDATASTRUCT cds = new COPYDATASTRUCT(); 
                        Type t = cds.GetType(); 
                        cds = (COPYDATASTRUCT)m.GetLParam(t); 
                        string strResult = cds.dwData.ToString() + ":" + cds.lpData;
    
                        AppendText(strResult);
                         
                        //强制退出
                        if (strResult == "1:SelfKill")
                        {
                            Thread.Sleep(1000);
                            this.mainNotifyIcon.Dispose();
                            Application.Exit();
                        }
                        break; 
                    default: 
                        base.DefWndProc(ref m); 
                        break; 
                }
    
            }

    在B进程退出前,只要把 NotifyIcon.Dispose() , 那么任务栏托盘图标就会自动消失了。

     

    转载于:https://www.cnblogs.com/lpq21314/p/9475325.html

    展开全文
  • //刷新任务栏图标 function RefreshTaskbarIcon: Integer; var hShellTrayWnd: HWND; //任务栏窗口 hTrayNotifyWnd: HWND; //任务栏右边托盘图标+时间区 hSysPager: HWND; //不同系统可能有可能没有这层 ...
    //刷新任务栏图标
    function RefreshTaskbarIcon: Integer;
    var
      hShellTrayWnd: HWND;   //任务栏窗口
      hTrayNotifyWnd: HWND;  //任务栏右边托盘图标+时间区
      hSysPager: HWND;     //不同系统可能有可能没有这层
      hToolbarWindow32: HWND;  //托盘图标窗口  
      r: TRECT;
      width, height: integer;
      x: Integer;
    begin
      hShellTrayWnd  := FindWindow('Shell_TrayWnd',nil);
      hTrayNotifyWnd := FindWindowEx(hShellTrayWnd,0,'TrayNotifyWnd',nil);
      hSysPager := FindWindowEx(hTrayNotifyWnd,0,'SysPager',nil); 
      if (hSysPager <> 0) then
            hToolbarWindow32 := FindWindowEx(hSysPager,0,'ToolbarWindow32',nil)
      else
        hToolbarWindow32 := FindWindowEx(hTrayNotifyWnd,0,'ToolbarWindow32',nil);
    
      if (hToolbarWindow32 <> 0) then
      begin
        GetWindowRect(hToolbarWindow32,r);
        width := r.right - r.left;
        height := r.bottom - r.top;
        //从任务栏中间从左到右 MOUSEMOVE一遍,所有图标状态会被更新  
        for x := 1 to width-1 do
          SendMessage(hToolbarWindow32,WM_MOUSEMOVE,0,MAKELPARAM(x,trunc(height/2)));
      end;
    end;

    展开全文
  • 隐藏进程.隐藏应用程序.不在任务栏显示图标 在win2000下,测试通过
  • delphi2010 进程不显示在任务栏的总结

    千次阅读 2017-12-13 09:25:49
    1、把进程设置为后台程序,不显示在任务栏 在.dpr文件中,加上一行代码即可 Application.ShowMainForm:=false; 2、当进程主窗体最小化后,小图标显示在任务栏右侧,而不是任务栏底部 在delphi窗体中,拖入一个 ...
  • C# 获取任务栏显示的进程

    千次阅读 2013-04-10 11:15:59
    private static void getWindowsInfo() { try { Process[] ... Console.WriteLine("进程:" + Minfo[2]); Console.WriteLine("开始时间" + Minfo[3]); Console.WriteLine(); } } } catch { } }
  • 前言: 最近公司又重新封了QQ,我写的一个代理软件很好的集成进程查询功能,伪装性的...最近试点服务器好像有人折腾了,由于明显的放在任务栏里显示,所以经常被关,弄的我还要经常性的开。 所以: 于是,今天已...
  • 电脑任务栏点击没有反应导致的原因有:(1)系统问题 (2)暂时性假死如果碰到任务栏点击没反应时,在键盘按下”ctrl+alt+del“然后在打开的【启动任务管理器】如下图所示会看到所有进程:点击【进程】在这里找到...
  • 如果您想学Electron视频教程请访问: ...electron创建系统托盘,Electron 创建任务栏图标以及任务栏图标右键菜单代码如下所示,注意写到主进程里面 var { Menu, Tray,app,BrowserWindow } =...
  • ==========以下为:关闭进程==================================================== 方法1(vbs): sub Close_Process(ProcessName)  On Error Resume Next   for each ps in getobject("winmgmts:\\.\...
  • 进程和子进程设置相同的,AppUserModelIDs。可以通过函数SetCurrentProcessExplicitAppUserModelID function实现。 SetCurrentProcessExplicitAppUserModelID(L"your appid"); 微软开发文档参考...
  • 任务栏管理器.可以直接查找进程的所在位置``复制到C盘system32里面代替.
  • U盘监控,进程监控,任务栏监控 VB写的,源码开放
  • 请问用什么方法能得到任务栏上有哪些进程? 想写个程序实现判断某个窗口是否最小化到托盘区。
  • MFC程序在有些机子上运行一段时间后任务栏图标消失
  • Win10系统是现在大家都在使用的电脑...1、首先,碰到这种情况,大部分人都仅仅只是任务栏进程上的小毛病。我们只需要重启下“Windows资源管理器”就行了。 2、右键任务栏,选择“任务管理器”。在进程中找到“Window
  • 结束不用进程的时候不小心...(1)重建进程:(ctrl_shift+esc ctrl+shift+delete)打开任务管理器—>文件—>新建任务,在输入内输入EXPLORER.EXE ,确定即可; (2)或者选择任务管理器的“关机”,重启电脑即可。
  • 获取 window任务栏已经打开应用程序窗口(也就是任务管理器中前台进程)的图标 1.功能描述 获取到window任务栏已经打开的应用程序的窗口图标。如下:(要获取到QQ,浏览器,文件夹的图标,但是任务栏中隐藏的图标...
  • Alt+F4以及任务栏上右键关闭都是触发的window 的closed方法,并不是完全关闭。 解决方案:在VS的MainWindow中事件属性添加closed事件,在这个事件中调用关闭程序的代码即可。 ...
  • 有时候电脑会出现各种各样的问日题,如果出现点击桌面下方...电脑下方任务栏点不动 方案一:重启【Windows资源管理器】 直接按键盘组合键【Ctrl+Alt+Del】打开【任务管理器】,切换到【进程】选项卡,选中【Windo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,889
精华内容 755
关键字:

任务栏进程