加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 如何以编程方式重新启动Windows资源管理器进程

发布时间:2020-12-13 20:33:52 所属栏目:Windows 来源:网络整理
导读:我正在开发一个Windows shell扩展,不幸的是,在更改DLL时,我必须重新启动Windows资源管理器(因为它将DLL保留在内存中). 我从Dino Esposito找到了这个程序,但它对我不起作用. void SHShellRestart(void){ HWND hwnd; hwnd = FindWindow("Progman",NULL ); Post
我正在开发一个Windows shell扩展,不幸的是,在更改DLL时,我必须重新启动Windows资源管理器(因为它将DLL保留在内存中).

我从Dino Esposito找到了这个程序,但它对我不起作用.

void SHShellRestart(void)
{
    HWND hwnd;
    hwnd = FindWindow("Progman",NULL );
    PostMessage(hwnd,WM_QUIT,0 );
    ShellExecute(NULL,NULL,"explorer.exe",SW_SHOW );
    return;
}

有人可以分享他们可以分享的东西吗?

附:我意识到我可以去任务管理器并杀死资源管理器进程,但我只是想以懒惰的方式去做.此外,这可实现自动化.

P.P.S我使用.NET进行开发,但shell重启功能可以是C,C或.NET语言.它只是一个小的独立可执行文件.

一个万无一失的解决方案:
foreach (Process p in Process.GetProcesses())
{
    // In case we get Access Denied
    try
    {
        if (p.MainModule.FileName.ToLower().EndsWith(":windowsexplorer.exe"))
        {
            p.Kill();
            break;
        }
    }
    catch
    { }
}
Process.Start("explorer.exe");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读