登录    关于
马育民老师的博客

马育民的博客

QQ:65242847

python通过操作windows注册表修改环境变量

操作注册表

https://www.cnblogs.com/slqt/p/5718154.html

激活环境变量

需要执行下面代码才能激活上面的修改:

import win32con
import win32gui

rc, result=win32gui.SendMessageTimeout(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE , win32con.NULL,"Environment", win32con.SMTO_NOTIMEOUTIFNOTHUNG, 1000)

print(rc,result)

SendMessageTimeOut 函数功能

该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,并且,如果指定的窗口属于不同的线程,直到窗口程序处理完消息或指定的超时周期结束函数才返回。如果接收消息的窗口和当前线程属于同一个队列,窗口程序立即调用,超时值无用。

函数原型:

LRESULT SendMessageTimeout(HWND hwnd,
UINT Msg,
WPARAM wParam,
LPARAM IParam,
UINT fuFlags,
UIUT uTimeout,
LPDWORD lpdwResultult);

参数说明:

  • hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口。
  • Msg:指定被发送的消息。
  • wParam:指定附加的消息指定信息。
  • IParam:指定附加的消息指定信息。
  • fuFlags:指定如何发送消息。此参数可为下列值的组合:
    • SMTO_ABORTIFHUNG:如果接收进程处于“hung”状态,不等待超时周期结束就返回。
    • SMTO_BLOCK:阻止调用线程处理其他任何请求,直到函数返回。
    • SMTO_NORMAL:调用线程等待函数返回时,不被阻止处理其他请求。
    • SMTO_NOTIMEOUTIFNOTHUNG:Windows 95及更高版本:如果接收线程没被挂起,当超时周期结束时不返回。
  • uTimeout:为超时周期指定以毫秒为单位的持续时间。如果该消息是一个广播消息,每个窗口可使用全超时周期。例如,如果指定5秒的超时周期,有3个顶层窗回未能处理消息,可以有最多15秒的延迟。
  • IpdwResult:指定消息处理的结果,依赖于所发送的消息。

返回值:如果函数调用成功,返回非零值。如果函数调用失败,或超时,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。如果GetLastError返回零,表明函数超时。如果使用HWND_BROADCAST,SenddMessaggTimeout不提供单个窗口超时信息。

原文链接:https://blog.csdn.net/hellokandy/article/details/53408799


原文出处:https://malaoshi.top/show_1IX1g1iUQuo0.html