急啊!!!!用vc来模拟实现鼠标右键点击IE,选属性中的“Internet 选项。。。”,然后再点击确定的过程!!

zgysc 2008-03-11 11:20:30
我想用vc来模拟实现鼠标右键点击IE,选属性中的“Internet 选项。。。”,然后再点击确定的过程!!

换句话说我想知道在“Internet 选项。。。”对话框设置后,最后点击“确定”或者“应用”后究竟执行了什么代码!!!!


事情是这样的:我在注册表中设置了活动桌面后,把一个网页作为桌面背景,如:c:\aa.html,当我修改aa.html内容后,在桌面上按F5或者刷新,却无法刷新,我发现此时如果打开IE的属性设置对话框,点击“确定”或者“应用”后,桌面的网页的内容才会得到更新,我怎样用vc来实现刷新呢???求大虾们帮帮我啊,
...全文
277 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgysc 2008-03-11
  • 打赏
  • 举报
回复
试过了,还是不行,这两句也加上了,就是不刷新

SystemParametersInfo(SPI_SETWORKAREA,0,NULL,SPIF_SENDCHANGE);
::SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
折腾_苏州 2008-03-11
  • 打赏
  • 举报
回复
有必要模拟这么麻烦么?
试试InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0));
来自#include <wininet.h> 和lib: wininet.lib

或者SystemParametersInfo API
cnzdgs 2008-03-11
  • 打赏
  • 举报
回复
LZ在MSDN中输入IActiveDesktop看一下。
zgysc 2008-03-11
  • 打赏
  • 举报
回复
我试过了,都不行,而且模拟按F5也不行,下面是刷新的代码,桌面闪一下,但网页内容还是不更新

::SHChangeNotify( SHCNE_ASSOCCHANGED , SHCNF_IDLIST | SHCNF_FLUSH, 0, 0);

HWND hWndProgram = ::FindWindow( _T("Progman"), NULL);

HWND hWndDefView = ::FindWindowEx( hWndProgram, NULL, _T("SHELLDLL_DefView"), NULL);

HWND hWndListView= ::FindWindowEx( hWndDefView, NULL, _T("SysListView32"), NULL);

::PostMessage( hWndListView, WM_KEYDOWN, VK_F5, 0);

::PostMessage( hWndListView, WM_KEYUP, VK_F5, 0);
tiger波波 2008-03-11
  • 打赏
  • 举报
回复
或者Invalidate(0,NULL,0);你都试试
tiger波波 2008-03-11
  • 打赏
  • 举报
回复
InvalidateRect(0,NULL,TRUE);
tiger波波 2008-03-11
  • 打赏
  • 举报
回复
模拟实现鼠标右键点击IE
-----
这个办法不好,帮顶下,学习
zgysc 2008-03-11
  • 打赏
  • 举报
回复
终于搞定了,把实现代码贴出来供大家参考,祝大家学习进步,少绕点弯儿,实现原理就是依靠 IActiveDesktop的成员方法

HRESULT hr;
USES_CONVERSION;
IActiveDesktop *pActiveDesktop;
hr = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void**)&pActiveDesktop);
if(hr==S_OK){
COMPONENTSOPT opt;
opt.dwSize = sizeof(opt);
opt.fActiveDesktop = opt.fEnableComponents = 0;
HRESULT hr = pActiveDesktop->SetDesktopItemOptions(&opt,0);

pActiveDesktop->ApplyChanges(AD_APPLY_REFRESH);
opt.fActiveDesktop = opt.fEnableComponents = TRUE;
hr = pActiveDesktop->SetDesktopItemOptions(&opt,0);
WCHAR wszPath[MAX_PATH];
CString strPath="c:\\a.html";
LPTSTR lpStr = strPath.GetBuffer(strPath.GetLength());
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, wszPath, MAX_PATH);
strPath.ReleaseBuffer();
hr = pActiveDesktop->SetWallpaper(wszPath, 0);
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);
pActiveDesktop->ApplyChanges(AD_APPLY_REFRESH);

}
pActiveDesktop->Release();

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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