如何用IE4以上版本附带的IE控件访问桌面、打印机及控制面板?(200分)

  • 主题发起人 主题发起人 9253
  • 开始时间 开始时间
9

9253

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用IE4以上版本附带的IE控件访问桌面、打印机及控制面板,请高手指
点?
 
看来是想当一个黑客。
呵呵!
 
用webbrowser.navigate('桌面的路径‘;打印机的路径;控制面板的路
径’。。。);
路径可通过SHGetSpecialFolderPath(windows api)获得,
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderPath(
HWND hwndOwner,
LPTSTR lpszPath,
int nFolder,
BOOL fCreate
);
nfolder可以为常数
CSIDL_BITBUCKET 回收站
CSIDL_CONTROLS 控制面板
CSIDL_DESKTOP 桌面
CSIDL_DRIVES 我的电脑
CSIDL_FAVORITES 收藏夹
CSIDL_FONTS 字体
CSIDL_HISTORY 历史记录
CSIDL_INTERNET internet
CSIDL_NETHOOD 网上邻居
CSIDL_PERSONAL 我的文档
CSIDL_PRINTERS 打印机
CSIDL_PROGRAMS 程序组
。。。。。。。等等。。。。
 
IE自己能访问桌面、打印机及控制面板吗?
我不懂。
 
hubdog的方法没问题.
 
pxlei: 当然可以啦! 不信你在IE地址栏键入:"网上邻居","控制面板"等看看... :-)
 
事实上,win98下"资源管理器"就是IE,你忘了盖子先生说"win98和IE密不可分"吗?
 
按照hubdog提的方法,实验不完全成功。访问控制面板和打印机,提示‘该页无法显示’,访问桌面时,无‘我的电脑’图标,我的程序哪儿不对呢,请进一步指点?
var
path1:String;
Flag, frame, pData, Header: OLEVariant;
begin
Setlength(Path1,100);
SHGetSpecialFolderPath(Handle,PChar(Path1),CSIDL_CONTROLS, False);
Flag := 0; frame := 0;
pData:= 0; Header:= 0;
WebBrowser1.Navigate(Path1, flag, frame, pData, Header);
end;
 
//我发现csidl_controls是没有相应路径的,只有itemidlist,看了一下帮助
//应该用webbrowser.navigate2的方法来处理itemidlist,
//但delphi的olevariant怎么实现pitemidlist和olevariant的相互转换
//VC的COlevariant支持,我不知道怎么解决,若谁解决了告我一声。
if SUCCEEDED(SHGetSpecialFolderLocation(handle,CSIDL_controls, Pidl))
then begin
tvardata(v).vtype:=varByRef;
tvardata(v).VPointer:=@pidl;
url:=v;//到这出错,
webbrowser1.navigate2(url);
end;
 
能否找到桌面、控制面板相对应的URL字符串?
我找到几个URL字符串
我的电脑 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
拨号网络 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/::{992CFFA0-F557-101A-88EC-00DD010CCC48}
计划任务 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}
但没有找到桌面、控制面板及打印机的,谁找到了,请告我一声。
 
纠正一下,这是GUID,不是URL.

另外,每台机器的上述值是否相同?
 
caKK:理论上应该是的
 

hcs1999:

You can pay Cash? Then I'try.
 
这次,问题就讨论到这儿吧。下次我再出分继续讨论。
 
多人接受答案了。
 
后退
顶部