如何修改注册表立刻生效
2010-03-13 10:38
597 查看
前两种不知什么原因,改了注册表之后,即使刷新并发送一个通知其他窗口的消息,但是依然不能立即生效,
最后一种最简单有效,但是修改之后,只是程序运行时为程序设置的默认值,程序一旦退出就会还原。
如设置一种文件类型的图标和默认的打开程序后怎么让设置马上生效。
//-----------------------方法一----------------------------
[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (
int hwnd,
int wMsg,
int wParam,
int lParam
);
public const int HWND_BROADCAST = 0xFFFF;
public const int WM_SETTINGCHANGE = 0x1A;
//修改后发送一个消息给系统
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
//-----------------------方法二----------------------------
IntPtr result1;
// SendMessageTimeout tools
[Flags]
public enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0000,
SMTO_BLOCK = 0x0001,
SMTO_ABORTIFHUNG = 0x0002,
SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
}
const int WM_SETTINGCHANGE = 0x001A;
const int HWND_BROADCAST = 0xffff;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(
IntPtr windowHandle,
uint Msg,
IntPtr wParam,
IntPtr lParam,
SendMessageTimeoutFlags flags,
uint timeout,
out IntPtr result
);
//调用
SendMessageTimeout(
new IntPtr(HWND_BROADCAST),
WM_SETTINGCHANGE,
IntPtr.Zero,
IntPtr.Zero,
SendMessageTimeoutFlags.SMTO_NORMAL,
1000,
out result1);
//-----------------------方法三----------------------------
//修改系统鼠标的双击速度,经实践,该方法可用
const uint ULNTERVAL = 400;
[DllImport("user32")]
public static extern bool SetDoubleClickTime(uint ulnterval);
//调用
SetDoubleClickTime(ULNTERVAL);
最后一种最简单有效,但是修改之后,只是程序运行时为程序设置的默认值,程序一旦退出就会还原。
如设置一种文件类型的图标和默认的打开程序后怎么让设置马上生效。
//-----------------------方法一----------------------------
[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (
int hwnd,
int wMsg,
int wParam,
int lParam
);
public const int HWND_BROADCAST = 0xFFFF;
public const int WM_SETTINGCHANGE = 0x1A;
//修改后发送一个消息给系统
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
//-----------------------方法二----------------------------
IntPtr result1;
// SendMessageTimeout tools
[Flags]
public enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0000,
SMTO_BLOCK = 0x0001,
SMTO_ABORTIFHUNG = 0x0002,
SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
}
const int WM_SETTINGCHANGE = 0x001A;
const int HWND_BROADCAST = 0xffff;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(
IntPtr windowHandle,
uint Msg,
IntPtr wParam,
IntPtr lParam,
SendMessageTimeoutFlags flags,
uint timeout,
out IntPtr result
);
//调用
SendMessageTimeout(
new IntPtr(HWND_BROADCAST),
WM_SETTINGCHANGE,
IntPtr.Zero,
IntPtr.Zero,
SendMessageTimeoutFlags.SMTO_NORMAL,
1000,
out result1);
//-----------------------方法三----------------------------
//修改系统鼠标的双击速度,经实践,该方法可用
const uint ULNTERVAL = 400;
[DllImport("user32")]
public static extern bool SetDoubleClickTime(uint ulnterval);
//调用
SetDoubleClickTime(ULNTERVAL);
相关文章推荐
- 如何修改注册表立刻生效【搜藏】
- 如何使/etc/profile中修改的配置立刻生效?
- 如何使/etc/profile中修改的配置立刻生效?
- 如何使/etc/profile中修改的配置立刻生效?
- Q&A修改了注册表如何即可生效,在不重启电脑的情况下
- c# 修改注册表后不重启计算机生效
- 3个Win8系统的隐藏功能如何通过修改注册表来开启
- 开发Windows Mobile和Wince(Windows Embedded CE)的部署项目(Deploy Project)时,如何修改注册表
- 修改hosts不必重启 立刻生效
- ABAP中SE71修改Form之后如何生效
- win7中如何通过修改注册表设置默认浏览器
- linux下如何快速让DNS修改生效
- Mysql 修改数据库 User 表 如何立即生效
- 修改hosts立刻生效不必重启
- 修改 .bashrc后立刻生效
- 修改注册表立即生效
- java应用(非web应用)中log4j.properties动态修改配置文件,无需重启,就能立即生效,如何实现?
- 在Linux下不重启让配置文件修改后立即生效 例如,我刚修改了“/etc/profile”或“~/.bash_profile”文件,我想让刚刚作出的修改立刻看到效果,但又不愿意重启,这时,就可以利
- 如何不重起而让bashrc的修改生效——使用source命令
- 如何简要判断自己对.cpp文件的修改是否生效? 如何简要判断程序所进入的预编译分支?