停止更新, 转移至wiki
流水帐,一切详细记得查看MSDN
SetProcessWorkingSetSize
设置进程工作集大小MoveFileEx
可以设置为重启电脑后才移动/删除,关键字MOVEFILE_DELAY_UNTIL_REBOOT
SHGetFolderPath
获取系统各文件夹路径RegisterWaitForSingleObject
,vista之后则是CreateThreadpoolxxx
系列函数,现成的线程池来等待事件,不需要自己开线程了。GetExitCodeProcess
获取进程结束时的返回值CreateProcessAsUser
如果访问不了注册表HKCU,要考虑调用LoadUserProfile
,详见MSDN- 关于stations和desktops,详见MSDN:About Window Stations and Desktops
CoInitalzieSecurity
给进程设置安全权限,一个进程只能设置一次,多次设置会返回RPC_E_TOO_LATE
错误,值为0x80010119
ATL::CSecurityDesc
ATL提供了这类函数来方便权限设定ShellExecuteEx
如果用户为管理员,可以把参数lpVerb
设置为"runas"
来绕过UAC,具体步骤是用runas启动一个自身新实例,再把自身进程退出。- 想让服务和桌面交互?看这里MSDN:Interactive Services.
SetProcessShutdownParameters
想让程序退出慢时不让弹出重试窗口?关键词SHUTDOWN_NORETRY
详见MSDNWTSGetActiveConsoleSessionId
只能获取本地用户活动ID,不能获取远程登录ID,要配合用WTSEnumerateSessions
来判断state值来获取当前活动用户session id。- theme and visual styles手动绘制原生主题风格控件相关
- Application Registration
- WNetAddConnection2 映射网络驱动器
NetShareAdd
共享文件夹NetUserAdd
,NetLocalGroupAddMembers
创建帐户- Internationalization
GetSystemDefaultLangID
获取系统语言; xp设置程序界面语言:SetThreadLocale
;vista以上设置程序界面语言:SetThreadUILanguage
一些坑
- listview控件行高居然不能直接设置,只能用图片高度或文字字体高度设置
- 虽然msdn显示托盘图标的气泡提示在XP就能用,但是如果你编译时的
_WIN32_WINNT
高于等于0x0600, 且用的xin7编译,那么你程序在XP运行时一切正常包括各种返回值都正确,但就是不出托盘气泡——奇葩——所以还是老老实实把那些个宏定到你想支持的最低系统版本吧,不然真不知道会出什么不能追踪的问题——虽然好像程序运行起来没问题。 - windows服务要接收设备或关机等通知的话,需要用到
HandlerEx
,但是VS2010默认的ATL服务项目的代码用的是Handler
, 需要自己手动copy atlbase.h的相关代码并修改 - FILETIME需转为LARGE_INTEGER进行处理再转为FILETIME, 需要注意的是 FILETIME的单位是100*nanosecond, 即10,000,000分之一秒!
- 通知栏只是任务栏窗口的一部分,
Shell_Notifyicon
添加的图标会因为启动时任务栏窗口还未创建, explorer.exe过于繁忙, 或者直接在任务管理器结束explorer.exe 而丢失. 为了避免这种情况, 需要RegisterWindowMessage(_T("TaskbarCreated")
, 详见MSDN:Shell_Notifyicon底下评论部分, 以及Taskbar created notification - win32工程的资源界面, 在对话框资源右键菜单中, 选项”Insert Activex Control”是灰的, 要让其可用, 可以删掉resource.h里的宏 “_APS_NO_MFC”!!
edit on 2014-06-05