如何获取Windows用户头像(XP,2003,vista及以上版本系统的实现)
一、获取思路1.调用API
2.从注册表获取
3.直接从硬盘读取文件
二、实现过程关于调用API:
网上找了找资料,获取用户头像的API在shell32.dll下有两个SHGetUserPicturePathEx和SHGetUserPicturePath其中SHGetUserPicturePathEx不支持Vista以下的系统,API的ID为810.
SHGetUserPicturePath不支持XP以下的系统,API的ID在Vista以上261,XP和2003为233SHGetUserPicturePathEx: function(pwszUserOrPicName: PWideChar; sguppFlags: DWORD; pwszDesiredSrcExt: PWideChar;
pwszPicPath: PWideChar; picPathLen: UINT; pwszSrcPath: PWideChar; srcLen: UINT): HRESULT; stdcall;
SHGetUserPicturePath: function(pwszPicOrUserName: LPCWSTR; sguppFlags: DWORD;pwszPicPath: PWideChar; picPathLen: UINT): HRESULT; stdcall;
经过测试后发现SHGetUserPicturePathEx在win7工作没有问题,vista下失败。
SHGetUserPicturePath在win7、win8、win vista工作没有问题,在xp下失败。(这个失败的至今未搞懂,怎么会事)
所以在XP下还需要寻找其他方法解决
关于从注册表读取:
在Xp下的当前用户头像存放位置在:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Hints\\ 不过我还没有测试,在注册表中是否可以获取到当前用户的头像,还是得到administrator的头像。所以我没有在程序中使用注册表这种方法。 关于直接从文件夹读取: 在Xp下用户图像储存位置是在C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\User Account Pictures\\ win7,vista以上是在C:\\Users\\ ps. 在这里我还专门有测试,如果调用API获取图像,即使删掉 综上: 首先,需要判断系统版本,xp以下系统直接没有用户图片这个功能。 XP和2003用直接读取当前用户名称,构造用户图片路径,读取文件夹获得图片。(最好能动态的获取C:\\Documents and Settings\\All Users\\Application Data\\文件夹路径,毕竟是系统变量用户是可以更改位置的)vista以上则调用API获得路径,读取图片。 另外还有一个非常重要的问题需要解决:关于16位bmp的读取。 由于16位bmp缺少调色盘,这个问题如果不注意,最后显示的图片颜色会不正确。 我使用的是Delphi,所以最后解决方案是用GdiPlus,加载bmp文件重绘解决。如果有更好的方法请告诉我。var draw: IGPGraphics; image, pThumbnail: IGPImage;Bmp.PixelFormat := pf24bit; file:///C:/Users/Administrator/Desktop/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/%E5%A6%82%E4%BD%95%E8%8E%B7… 1/2 2014年8月29日如何获取Windows用户头像(XP,2003,vista及以上版本系统的实现) Bmp.SetSize(65, 65); draw := TGPGraphics.Create(Bmp.Canvas.Handle);Image := TGPImage.Create(userPicPath); pThumbnail := image.GetThumbnailImage(65, 65, nil, nil); draw.DrawImage(pThumbnail, 0, 0, pThumbnail.Width, pThumbnail.Height); file:///C:/Users/Administrator/Desktop/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/%E5%A6%82%E4%BD%95%E8%8E%B7…2/2 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务