我用以上语句想让TWebBrowser弹出查找对话框,但总是弹出系统的
查找文件文件夹对话框,并出现错误提示:
试图激活未注册的拖放目标,如何解决?
5 个解决方案
#1
webbrowser1.execweb(OLECMDID_FIND,OLECMDEXECOPT_DODEFAULT)
#2
to Daiver:
老兄,你的语句跟我的一样,另外,OLECMDEXECOPT_DODEFAULT=0,
老兄,你的语句跟我的一样,另外,OLECMDEXECOPT_DODEFAULT=0,
#3
加入webbrowser组件后,uses中加入一个单元,找到这个.pas文件,上面问题就可解决了!
请查看
请查看
#4
to yousoft:
你没看清楚题吗?为什么这样说?
你没看清楚题吗?为什么这样说?
#5
我以前帮人解决过一个找到当前运行的IE,并调用IE的方法的问题。和你这个问题一样,我直接把上次的回答重贴一下:
另:关于控制IE的问题:
我做了一个小例子,也不是很好:
1,在CB中,Server面板上有封装了的IE,Word,Excel,Outlook等自动化对象,
可供我们直接使用,不过,其中的个别控件在2000上,似乎有点问题,我的解决办法:在CB中,Remove 这些包,然后我们自己引入类型库,重建一套!
类型库是:
Microsoft Internet Controls(Version 1.1)
[c:\\winnt\system32\shdocvw.dll]
引入时,在ClassNames的Memo中,在每个雷名后都加一个1,防止和原来的类名冲突:
TCppWebBrowser_V11
TCppWebBrowser1
TCppInternetExplorer1
TCppShellBrowserWindow1
TCppShellWindows1
TCppShellUIHelper1
TShellFavoritesNameSpace1
TCScriptErrorList1
TCppSearchAssistantOC1
编译时,可能出现错误,最简单的办法是把出错的语句
注释掉,我检查过,这是几个IE的事件,我们基本用不着!
如果,想用,就得改正这几个错误!就是,把参数独立出来
,改成用指针调用!
2,第二步,使用ICppShellWindow1,获得系统中所有的Internet Explorer 对象,包括文件夹和IE等!
检查是不是IE的办法是:
GetApplicationName,看看是不是Explore.exe 还是....
略去不写了!
是IE的,使用ICppInternetExplorer1对象连接到他,之后,就可以调用各种方法对这个IE进行控制了!
窗体上,放着两个空件:
.h:
TCppShellWindows1 *SW;
TCppInternetExplorer1 *IE;
cpp:
//简单的例子:
SW->Connect();
//debug:
//获取
iCount=SW->Get_Count();
if(iCount<1)
{
ShowMessage("娘西皮,一个没有!");
return ;
};
//我没做判断,直接连接到第一个实例上,
//您应该处理的
TVariantInParam index(0);
//把IE和实例连接
IE->ConnectTo(SW->Item(index));
//方法调用举例:获取URL
WideString temp(IE->Get_LocationURL());
ShowMessage(temp);
//IE->Set_FullScreen(1);
//执行OLE Command举例:运行Save As 菜单
//设置存储路径
TVariant *path=new TVariant("c:\\ttt");
//调用,
IE->ExecWB(
//OLE CMD ID
Shdocvw_tlb::OLECMDID_SAVECOPYAS,
//执行开关:不显示界面,不过似乎有点问题,
//Save aS 对话框需要用户 安 确定 按钮
Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER,
path);
delete path;
//连接文档:
//把文档连接到IE,说明参见 3
Doc->ConnectTo(IE->Get_Document());
Doc----?????
具体的使用,我没写,如果想在
这一级上处理,非常繁琐,您需要
处理每个集合,比如框架,图片,
脚本,等等!
3:如果相对IE文档进行更深层次的控制还得在引入
Microsoft Html Object Library(Version .)
[C:\\winnt\system32\mshtml.tlb]
注意:这个类型库包含了几百个接口,需要很长时间,不是死机!
使用IHTMLDocument对象ConnectTo 到IE的文档上,
就可以对其进行操纵了!这个对象接口非常之多,参见MSDN
集合更多,我也没用过!,看来只能试一试了!具体参见MSDN
文档!
我写了一个小例子,安以上步骤,能调出IE 的Save As
对话框!
注意:如果在您的机器上出现类没有注册,或根本就找不到
这两个类型库,请安装IE5
另:关于控制IE的问题:
我做了一个小例子,也不是很好:
1,在CB中,Server面板上有封装了的IE,Word,Excel,Outlook等自动化对象,
可供我们直接使用,不过,其中的个别控件在2000上,似乎有点问题,我的解决办法:在CB中,Remove 这些包,然后我们自己引入类型库,重建一套!
类型库是:
Microsoft Internet Controls(Version 1.1)
[c:\\winnt\system32\shdocvw.dll]
引入时,在ClassNames的Memo中,在每个雷名后都加一个1,防止和原来的类名冲突:
TCppWebBrowser_V11
TCppWebBrowser1
TCppInternetExplorer1
TCppShellBrowserWindow1
TCppShellWindows1
TCppShellUIHelper1
TShellFavoritesNameSpace1
TCScriptErrorList1
TCppSearchAssistantOC1
编译时,可能出现错误,最简单的办法是把出错的语句
注释掉,我检查过,这是几个IE的事件,我们基本用不着!
如果,想用,就得改正这几个错误!就是,把参数独立出来
,改成用指针调用!
2,第二步,使用ICppShellWindow1,获得系统中所有的Internet Explorer 对象,包括文件夹和IE等!
检查是不是IE的办法是:
GetApplicationName,看看是不是Explore.exe 还是....
略去不写了!
是IE的,使用ICppInternetExplorer1对象连接到他,之后,就可以调用各种方法对这个IE进行控制了!
窗体上,放着两个空件:
.h:
TCppShellWindows1 *SW;
TCppInternetExplorer1 *IE;
cpp:
//简单的例子:
SW->Connect();
//debug:
//获取
iCount=SW->Get_Count();
if(iCount<1)
{
ShowMessage("娘西皮,一个没有!");
return ;
};
//我没做判断,直接连接到第一个实例上,
//您应该处理的
TVariantInParam index(0);
//把IE和实例连接
IE->ConnectTo(SW->Item(index));
//方法调用举例:获取URL
WideString temp(IE->Get_LocationURL());
ShowMessage(temp);
//IE->Set_FullScreen(1);
//执行OLE Command举例:运行Save As 菜单
//设置存储路径
TVariant *path=new TVariant("c:\\ttt");
//调用,
IE->ExecWB(
//OLE CMD ID
Shdocvw_tlb::OLECMDID_SAVECOPYAS,
//执行开关:不显示界面,不过似乎有点问题,
//Save aS 对话框需要用户 安 确定 按钮
Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER,
path);
delete path;
//连接文档:
//把文档连接到IE,说明参见 3
Doc->ConnectTo(IE->Get_Document());
Doc----?????
具体的使用,我没写,如果想在
这一级上处理,非常繁琐,您需要
处理每个集合,比如框架,图片,
脚本,等等!
3:如果相对IE文档进行更深层次的控制还得在引入
Microsoft Html Object Library(Version .)
[C:\\winnt\system32\mshtml.tlb]
注意:这个类型库包含了几百个接口,需要很长时间,不是死机!
使用IHTMLDocument对象ConnectTo 到IE的文档上,
就可以对其进行操纵了!这个对象接口非常之多,参见MSDN
集合更多,我也没用过!,看来只能试一试了!具体参见MSDN
文档!
我写了一个小例子,安以上步骤,能调出IE 的Save As
对话框!
注意:如果在您的机器上出现类没有注册,或根本就找不到
这两个类型库,请安装IE5
#1
webbrowser1.execweb(OLECMDID_FIND,OLECMDEXECOPT_DODEFAULT)
#2
to Daiver:
老兄,你的语句跟我的一样,另外,OLECMDEXECOPT_DODEFAULT=0,
老兄,你的语句跟我的一样,另外,OLECMDEXECOPT_DODEFAULT=0,
#3
加入webbrowser组件后,uses中加入一个单元,找到这个.pas文件,上面问题就可解决了!
请查看
请查看
#4
to yousoft:
你没看清楚题吗?为什么这样说?
你没看清楚题吗?为什么这样说?
#5
我以前帮人解决过一个找到当前运行的IE,并调用IE的方法的问题。和你这个问题一样,我直接把上次的回答重贴一下:
另:关于控制IE的问题:
我做了一个小例子,也不是很好:
1,在CB中,Server面板上有封装了的IE,Word,Excel,Outlook等自动化对象,
可供我们直接使用,不过,其中的个别控件在2000上,似乎有点问题,我的解决办法:在CB中,Remove 这些包,然后我们自己引入类型库,重建一套!
类型库是:
Microsoft Internet Controls(Version 1.1)
[c:\\winnt\system32\shdocvw.dll]
引入时,在ClassNames的Memo中,在每个雷名后都加一个1,防止和原来的类名冲突:
TCppWebBrowser_V11
TCppWebBrowser1
TCppInternetExplorer1
TCppShellBrowserWindow1
TCppShellWindows1
TCppShellUIHelper1
TShellFavoritesNameSpace1
TCScriptErrorList1
TCppSearchAssistantOC1
编译时,可能出现错误,最简单的办法是把出错的语句
注释掉,我检查过,这是几个IE的事件,我们基本用不着!
如果,想用,就得改正这几个错误!就是,把参数独立出来
,改成用指针调用!
2,第二步,使用ICppShellWindow1,获得系统中所有的Internet Explorer 对象,包括文件夹和IE等!
检查是不是IE的办法是:
GetApplicationName,看看是不是Explore.exe 还是....
略去不写了!
是IE的,使用ICppInternetExplorer1对象连接到他,之后,就可以调用各种方法对这个IE进行控制了!
窗体上,放着两个空件:
.h:
TCppShellWindows1 *SW;
TCppInternetExplorer1 *IE;
cpp:
//简单的例子:
SW->Connect();
//debug:
//获取
iCount=SW->Get_Count();
if(iCount<1)
{
ShowMessage("娘西皮,一个没有!");
return ;
};
//我没做判断,直接连接到第一个实例上,
//您应该处理的
TVariantInParam index(0);
//把IE和实例连接
IE->ConnectTo(SW->Item(index));
//方法调用举例:获取URL
WideString temp(IE->Get_LocationURL());
ShowMessage(temp);
//IE->Set_FullScreen(1);
//执行OLE Command举例:运行Save As 菜单
//设置存储路径
TVariant *path=new TVariant("c:\\ttt");
//调用,
IE->ExecWB(
//OLE CMD ID
Shdocvw_tlb::OLECMDID_SAVECOPYAS,
//执行开关:不显示界面,不过似乎有点问题,
//Save aS 对话框需要用户 安 确定 按钮
Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER,
path);
delete path;
//连接文档:
//把文档连接到IE,说明参见 3
Doc->ConnectTo(IE->Get_Document());
Doc----?????
具体的使用,我没写,如果想在
这一级上处理,非常繁琐,您需要
处理每个集合,比如框架,图片,
脚本,等等!
3:如果相对IE文档进行更深层次的控制还得在引入
Microsoft Html Object Library(Version .)
[C:\\winnt\system32\mshtml.tlb]
注意:这个类型库包含了几百个接口,需要很长时间,不是死机!
使用IHTMLDocument对象ConnectTo 到IE的文档上,
就可以对其进行操纵了!这个对象接口非常之多,参见MSDN
集合更多,我也没用过!,看来只能试一试了!具体参见MSDN
文档!
我写了一个小例子,安以上步骤,能调出IE 的Save As
对话框!
注意:如果在您的机器上出现类没有注册,或根本就找不到
这两个类型库,请安装IE5
另:关于控制IE的问题:
我做了一个小例子,也不是很好:
1,在CB中,Server面板上有封装了的IE,Word,Excel,Outlook等自动化对象,
可供我们直接使用,不过,其中的个别控件在2000上,似乎有点问题,我的解决办法:在CB中,Remove 这些包,然后我们自己引入类型库,重建一套!
类型库是:
Microsoft Internet Controls(Version 1.1)
[c:\\winnt\system32\shdocvw.dll]
引入时,在ClassNames的Memo中,在每个雷名后都加一个1,防止和原来的类名冲突:
TCppWebBrowser_V11
TCppWebBrowser1
TCppInternetExplorer1
TCppShellBrowserWindow1
TCppShellWindows1
TCppShellUIHelper1
TShellFavoritesNameSpace1
TCScriptErrorList1
TCppSearchAssistantOC1
编译时,可能出现错误,最简单的办法是把出错的语句
注释掉,我检查过,这是几个IE的事件,我们基本用不着!
如果,想用,就得改正这几个错误!就是,把参数独立出来
,改成用指针调用!
2,第二步,使用ICppShellWindow1,获得系统中所有的Internet Explorer 对象,包括文件夹和IE等!
检查是不是IE的办法是:
GetApplicationName,看看是不是Explore.exe 还是....
略去不写了!
是IE的,使用ICppInternetExplorer1对象连接到他,之后,就可以调用各种方法对这个IE进行控制了!
窗体上,放着两个空件:
.h:
TCppShellWindows1 *SW;
TCppInternetExplorer1 *IE;
cpp:
//简单的例子:
SW->Connect();
//debug:
//获取
iCount=SW->Get_Count();
if(iCount<1)
{
ShowMessage("娘西皮,一个没有!");
return ;
};
//我没做判断,直接连接到第一个实例上,
//您应该处理的
TVariantInParam index(0);
//把IE和实例连接
IE->ConnectTo(SW->Item(index));
//方法调用举例:获取URL
WideString temp(IE->Get_LocationURL());
ShowMessage(temp);
//IE->Set_FullScreen(1);
//执行OLE Command举例:运行Save As 菜单
//设置存储路径
TVariant *path=new TVariant("c:\\ttt");
//调用,
IE->ExecWB(
//OLE CMD ID
Shdocvw_tlb::OLECMDID_SAVECOPYAS,
//执行开关:不显示界面,不过似乎有点问题,
//Save aS 对话框需要用户 安 确定 按钮
Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER,
path);
delete path;
//连接文档:
//把文档连接到IE,说明参见 3
Doc->ConnectTo(IE->Get_Document());
Doc----?????
具体的使用,我没写,如果想在
这一级上处理,非常繁琐,您需要
处理每个集合,比如框架,图片,
脚本,等等!
3:如果相对IE文档进行更深层次的控制还得在引入
Microsoft Html Object Library(Version .)
[C:\\winnt\system32\mshtml.tlb]
注意:这个类型库包含了几百个接口,需要很长时间,不是死机!
使用IHTMLDocument对象ConnectTo 到IE的文档上,
就可以对其进行操纵了!这个对象接口非常之多,参见MSDN
集合更多,我也没用过!,看来只能试一试了!具体参见MSDN
文档!
我写了一个小例子,安以上步骤,能调出IE 的Save As
对话框!
注意:如果在您的机器上出现类没有注册,或根本就找不到
这两个类型库,请安装IE5