求助SHGetPropertyStoreForWindow

gguueesstt 2018-04-27 03:10:41
SHGetPropertyStoreForWindow function,其中有一个功能可以来获取和修改win7等系统的任务栏分组相关的appusermodelid

C++如下:
HRESULT SHGetPropertyStoreForWindow(
_In_ HWND hwnd,
_In_ REFIID riid,
_Out_ void **ppv
);
在VB中如何使用。好像涉及到类接口及指针,请达人指点一下

https://deletethis.net/dave/dev/setappusermodelid/
有一段程序是这样的,我不懂是C,还是C++
IPropertyStore *store = NULL;
HRESULT hr = SHGetPropertyStoreForWindow(hwnd, IID_PPV_ARGS(&store));
PROPVARIANT propVariant;
hr = store->GetValue(key, &propVariant);
hr = PropVariantToString(propVariant, value, valueSize);
...全文
2249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-05-03
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,再将b.txt改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 可以将临时文件放在RamDisk上提高效率减少磨损磁盘。 数据的结构很复杂的话,文本文件的格式问题可参考json或xml 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
gguueesstt 2018-05-02
  • 打赏
  • 举报
回复
进展情况 Private Type IPropertyStore ' IUnknown QueryInterface As Long AddRef As Long Release As Long ' IPropertyStore Commit As Long GetAt As Long GetCount As Long GetValue As Long SetValue As Long end type dim iid_IPropertyStore as guid dim inter_IPropertyStore as IPropertyStore hRes = IIDFromString(StrPtr("{886D8EEB-8CF2-4446-8D02-CDBA1DBDCF99}"), iid_IPropertyStore) Debug.Print SHGetPropertyStoreForWindow(Me.hwnd, iid_IPropertyStore, obj) RtlMoveMemory inter_IPropertyStore_ptr, ByVal obj, 4 RtlMoveMemory inter_IPropertyStore, ByVal inter_IPropertyStore_ptr, Len(inter_IPropertyStore) '下面需要进行呼叫 inter_IPropertyStore.getvalue,需要用汇编。还需要知道getvalue的一个常量参数,我没有 Propsys.h头文件。 再摸索吧
赵4老师 2018-04-28
  • 打赏
  • 举报
回复
仅供参考:
Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧