我编写了一个更改windows主题的程序,但在更改主题个性化窗口后仍然打开,我想关闭它。我尝试使用熟悉的进程名称的process.kill(),但它不起作用。谢谢。
我正在做的代码如下:
BottomAppBar = null;
其中“themepath”是aero.theme的String位置。 我甚至将CreateNoWindow设置为true,然后它打开Personalization来更改主题但没有自动关闭它。
答案 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,并让您的程序编辑相关的两个注册表项。