使用c#关闭个性化窗口

时间:2015-12-04 17:55:39

标签: c# windows personalization

我编写了一个更改windows主题的程序,但在更改主题个性化窗口后仍然打开,我想关闭它。我尝试使用熟悉的进程名称的process.kill(),但它不起作用。谢谢。

我正在做的代码如下:

BottomAppBar = null;

其中“themepath”是aero.theme的String位置。 我甚至将CreateNoWindow设置为true,然后它打开Personalization来更改主题但没有自动关闭它。

2 个答案:

答案 0 :(得分:2)

首先使用find窗口通过使用FindWindow从其名称中获取窗口..

 [DllImport("user32.dll")]
    public static extern int FindWindow(string lpClassName,string lpWindowName);

它会返回您想要的窗口句柄,现在您可以使用发送消息将其关闭..

 [DllImport("User32.dll")]
    public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
    public const int WM_SYSCOMMAND = 0x0112;
    public const int SC_CLOSE = 0xF060;
        private void closeWindow()
         {
          // retrieve the handler of the window  
            int iHandle = FindWindow("CabinetWClass", "Personalization");
            if (iHandle > 0)
             {
                 SendMessage(iHandle, WM_SYSCOMMAND, SC_CLOSE, 0);  
             }  
          }   

答案 1 :(得分:0)

您需要通过它的名称获取窗口句柄,然后发送一个关闭消息。这可以防止必须杀死任何进程。有关获取窗口的信息,请参阅this article。有关从句柄关闭窗口的信息,请参阅this one

在看到代码并进行一些挖掘后,您可以通过两次注册表编辑来完成此操作。您应该阅读此article,并让您的程序编辑相关的两个注册表项。