- 浏览: 926978 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
masuweng:
不错!!!!!
自定义表单的设计与实现 -
xhackertxl:
注意将jstock cvs下来后去掉原先的J2SE 1.6li ...
开源项目推荐 — 股票分析软件JStock -
luoyexiaozhu:
最近在学表单这一块,没有思路,能发给我一份学习一下吗86239 ...
WEB项目中自定义表单的设计与实现 -
volunteer521:
楼主,以下的引用类没有对应的jar包,麻烦共享以下,谢谢!im ...
通用数据抽取系统 -
baichixiaozi:
体验下,谢谢分享
原创简化Web开发的框架 - JSPTagEx
应用程序通过内嵌浏览器的方式,利用js的window.external可以达到控制窗体行为的效果,如控制窗体宽高大小,透明度,网页截屏,网页读写文件,网页控制桌面行为等,最近利用DELPHI就实现了这一点,一般软件可以是很小巧,2,3百K的样子,如果大家有谁需要的,我将无偿提供这方面的源代码,因为这方面的应用目前还不是很广(QQ Zone用的这样的技术),所以我就不在这里给出代码了。我扩展的window.external函数如下:
Pascal核心代码片段:
unit CusExternal; {$WARN SYMBOL_PLATFORM OFF} interface uses Windows,ComObj, ActiveX, tlink_TLB, StdVcl,CoolTrayIcon,forms,SysUtils,Dialogs; type TTBrowserToDelphi = class(TAutoObject, ITBrowserToDelphi) protected procedure setWndTitle(title: OleVariant); safecall; procedure modifyWndSize(w, h: OleVariant); safecall; procedure flashIcon; safecall; procedure popHint(str, title: OleVariant); safecall; procedure closeWnd; safecall; procedure setIconTitle(title: OleVariant); safecall; procedure setSb(i: Integer; title: OleVariant); safecall; procedure setSbWidth(i, w: Integer); safecall; procedure popHintAdv(str, title: OleVariant; style, secs: Integer); safecall; procedure formTitleControl(flag: Integer); safecall; function showMessage(flag: Integer; hit: OleVariant; iconflag: Integer): OleVariant; safecall; procedure minTotray; safecall; procedure moveBtnPos(sleft, stop, swidth, sheight, isVisible: Integer); safecall; function getMinStatus: OleVariant; safecall; function cameraScreen(flag: Integer): OleVariant; safecall; procedure speak(str: OleVariant); safecall; function uploadToFtp(remoteAddr, localPath: OleVariant): OleVariant; safecall; end; implementation uses ComServ,login; var iflag:boolean=true; procedure TTBrowserToDelphi.setWndTitle(title: OleVariant); begin mainForm.Caption:=title; end; procedure TTBrowserToDelphi.modifyWndSize(w, h: OleVariant); begin mainForm.Width:=w; mainForm.Height:=h; mainForm.Position:=poScreenCenter; mainForm.Update; end; procedure TTBrowserToDelphi.flashIcon; begin mainForm.CoolTrayIcon1.IconList := mainForm.ImageList1; mainForm.CoolTrayIcon1.CycleInterval := 400; mainForm.CoolTrayIcon1.CycleIcons := True; end; procedure TTBrowserToDelphi.popHint(str, title: OleVariant); begin mainForm.CoolTrayIcon1.ShowBalloonHint(title, str, bitInfo, 10); end; procedure TTBrowserToDelphi.closeWnd; begin //mainForm.Close; Application.Terminate; end; procedure TTBrowserToDelphi.setIconTitle(title: OleVariant); begin mainForm.CoolTrayIcon1.Hint:=title; end; procedure TTBrowserToDelphi.setSb(i: Integer; title: OleVariant); begin if(i>1) then i:=1; mainForm.sb.Panels[i].Text:=title; end; procedure TTBrowserToDelphi.setSbWidth(i, w: Integer); begin if(i>1) then i:=1; mainForm.sb.Panels[i].Width:=w; end; procedure TTBrowserToDelphi.popHintAdv(str, title: OleVariant; style, secs: Integer); begin if secs<1 then secs:=1 else if secs>100 then secs:=100 else ; mainForm.Timer1.Interval:= secs*1000; mainForm.Timer1.Enabled:=true; if style = 1 then mainForm.CoolTrayIcon1.ShowBalloonHint(title, str, bitError, secs) else if style = 2 then mainForm.CoolTrayIcon1.ShowBalloonHint(title, str, bitWarning, secs) else if style=3 then mainForm.CoolTrayIcon1.ShowBalloonHint(title, str, bitNone, secs) else mainForm.CoolTrayIcon1.ShowBalloonHint(title, str, bitInfo, secs); //mainForm.CoolTrayIcon1.HideBalloonHint; end; procedure TTBrowserToDelphi.formTitleControl(flag: Integer); begin if(flag=0) then begin with mainform do begin SetWindowLong(Handle, // 当前窗体句柄 GWL_STYLE, // 表示当前是要设置新的窗体(普通)样式 // 得到指定窗体信息 GetWindowLong(Handle, GWL_STYLE) and (not WS_CAPTION)); // 去掉样式(s)中的“标题”样式 Height := ClientHeight; Width := ClientWidth; end; end else if(flag=2) then mainForm.BorderStyle:=bsDialog else if(flag=3) then mainForm.BorderStyle:=bsSingle else if(flag=4) then //窗口获得焦点 begin if(not mainForm.IsMinimized) then begin SetForegroundWindow(mainForm.Handle); end else begin with mainForm do begin FloatRectangles(False, True); CoolTrayIcon1.ShowMainForm; IsMinimized := False; end; end; end else if(flag=5) then //停止闪烁 begin mainForm.CoolTrayIcon1.Icon:=Application.Icon; mainForm.CoolTrayIcon1.CycleIcons:=false end else if(flag=6) then //任务栏闪烁 mainForm.FlashMe else ; end; function TTBrowserToDelphi.showMessage(flag: Integer; hit: OleVariant; iconflag: Integer): OleVariant; begin if(not iflag) then exit; iflag:=false;//锁定函数 if(flag=0) then //无返回值提醒 begin if iconflag=1 then messagedlg(hit,mterror,[mbok],0) else if iconflag=2 then messagedlg(hit,mtwarning,[mbok],0) else messagedlg(hit,mtinformation,[mbok],0); result:=0; end else begin if(iconflag=1) then //yes+no+cancel result:=messagedlg(hit,mtConfirmation,[mbyes,mbno,mbcancel],0) else if(iconflag=2) then //ok+cancel result:=messagedlg(hit,mtConfirmation,[mbok,mbcancel],0) else if(iconflag=3) then //ignore+retry+cancel result:=messagedlg(hit,mtConfirmation,[mbIgnore,mbRetry,mbcancel],0) else result:=messagedlg(hit,mtConfirmation,[mbyes,mbno],0); end; iflag:=true;//释放锁定 //result:=1; end; procedure TTBrowserToDelphi.minTotray; begin with mainform do begin FloatRectangles(True, True); CoolTrayIcon1.HideMainForm; IsMinimized:=true; end; end; procedure TTBrowserToDelphi.moveBtnPos(sleft, stop, swidth, sheight, isVisible: Integer); begin with mainform do begin bitbtn1.Width:=swidth; bitbtn1.Height:=sheight; bitbtn1.Left:=sleft; bitbtn1.Top:=stop; if(isVisible=1) then bitbtn1.Visible:=true else bitbtn1.visible:=false; end; end; function TTBrowserToDelphi.getMinStatus: OleVariant; begin result:=mainform.IsMinimized; end; function TTBrowserToDelphi.cameraScreen(flag: Integer): OleVariant; begin result:=mainform.jp(flag); end; procedure TTBrowserToDelphi.speak(str: OleVariant); begin mainForm.Speak(str); end; function TTBrowserToDelphi.uploadToFtp(remoteAddr, localPath: OleVariant): OleVariant; var str1,str2:string; begin str1:= remoteAddr; str2:= localPath; result:=mainForm.uploadToFtp2(pchar(str1),pchar(str2)); end; initialization TAutoObjectFactory.Create(ComServer, TTBrowserToDelphi, Class_TBrowserToDelphi, ciMultiInstance, tmApartment); end.
HTML接口代码:
<HTML> <HEAD> <TITLE> New Document </TITLE> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content="Neil Chen(木野狐)"> <meta name="keywords" content=""> <meta name="description" content=""> <script> function pop(arg) { //返回值说明:6:点击yes 7:点击no 2:点击cancel 1:点击ok 4:点击retry 5:点击ignore var ret=window.external.showMessage(1,'询问1',arg); alert(ret); var str="pop('"+arg+"')"; setTimeout(str,3000); } function isMin() { var ismin=window.external.getMinStatus(); alert(ismin); setTimeout("isMin()",3000); } function winFocus() { setTimeout("aa()",3000); } function aa() { window.external.formTitleControl(4); } function jp(flag) { var ii=window.external.cameraScreen(flag); var str; if(ii!="") { str=window.external.uploadToFtp('/uploadfiles/jt/',ii); alert(str); //window.open('sendpic.html'); } else alert("用户取消操作"); } </script> </HEAD> <BODY> <BUTTON ONCLICK="window.external.modifyWndSize(800,600)">调整大小600*400</BUTTON> <BUTTON ONCLICK="window.external.modifyWndSize(300,200)">调整大小300*200</BUTTON> <BUTTON ONCLICK="window.external.setWndTitle('我是标题')">标题</BUTTON> <BUTTON ONCLICK="window.external.flashIcon()">图标闪烁</BUTTON> <BUTTON ONCLICK="window.external.popHint('我是内容','我是标题')">POP提示</BUTTON> <BUTTON ONCLICK="window.external.popHintAdv('我是内容','我是标题',0,3)">信息图标POP提示3秒</BUTTON> <BUTTON ONCLICK="window.external.popHintAdv('我是内容','我是标题',1,4)">错误图标POP提示4秒</BUTTON> <BUTTON ONCLICK="window.external.popHintAdv('我是内容','我是标题',2,6)">警告图标POP提示6秒</BUTTON> <BUTTON ONCLICK="window.external.popHintAdv('我是内容','我是标题',3,20)">无图标POP提示20秒</BUTTON> <BUTTON ONCLICK="window.external.closeWnd()">关闭程序</BUTTON> <BUTTON ONCLICK="window.external.setIconTitle('我是图标标题哦')">图标标题</BUTTON> <BUTTON ONCLICK="window.external.setSb(0,'提示信息')">状态栏文字信息1</BUTTON> <BUTTON ONCLICK="window.external.setSb(1,'设置第一个状态栏文字2222')">状态栏文字信息2</BUTTON> <BUTTON ONCLICK="window.external.setSbWidth(0,200)">设置状态栏宽度</BUTTON> <BUTTON ONCLICK="window.external.formTitleControl(0)">窗口无标题栏型</BUTTON> <BUTTON ONCLICK="window.external.formTitleControl(3)">窗口普通型</BUTTON> <BUTTON ONCLICK="window.external.formTitleControl(2)">窗口对话框型</BUTTON> <BUTTON ONCLICK="window.external.showMessage(0,'提示1',2)">无返回值提示对话框警告图标</BUTTON> <BUTTON ONCLICK="window.external.showMessage(0,'提示2',1)">无返回值提示对话框错误图标</BUTTON> <BUTTON ONCLICK="window.external.showMessage(0,'提示3',0)">无返回值提示对话框信息图标</BUTTON> <BUTTON ONCLICK="pop(0)">yes+no询问对话框</BUTTON> <BUTTON ONCLICK="pop(1)">yes+no+cancel询问对话框</BUTTON> <BUTTON ONCLICK="pop(2)">ok+cancel询问对话框</BUTTON> <BUTTON ONCLICK="pop(3)">ignore+retry+cancel询问对话框</BUTTON> <BUTTON ONCLICK="window.external.minTotray()">窗口最小化到托盘</BUTTON> <BUTTON ONCLICK="isMin()">获取最小化状态</BUTTON> <BUTTON ONCLICK="winFocus()">窗口获取焦点</BUTTON> <BUTTON ONCLICK="window.external.formTitleControl(5)">托盘图标停止闪烁</BUTTON> <BUTTON ONCLICK="window.external.formTitleControl(6)">任务栏闪烁</BUTTON> <BUTTON ONCLICK="jp(0)">普通截屏</BUTTON> <BUTTON ONCLICK="jp(1)">屏幕截屏</BUTTON> <BUTTON ONCLICK="jp(2)">软件截屏</BUTTON> <BUTTON ONCLICK="window.external.speak('Welcome to you!')">我要说话(英文提示语)</BUTTON> <BUTTON ONCLICK="window.external.speak('欢迎您使用!')">我要说话(中文提示语)</BUTTON> <BUTTON ONCLICK="window.external.speak('欢迎您使用!')">我要说话(中文提示语)</BUTTON> </BODY> </HTML>
评论
9 楼
goodluck.2005
2012-01-19
大哥给一份吧。找的好辛苦啊。谢谢
goodluck.2005@163.com
goodluck.2005@163.com
8 楼
liutao_2006
2008-11-01
偶是从事java开发的,发来研究下.
谢谢!
liutao_2006@126.com
谢谢!
liutao_2006@126.com
7 楼
peacock
2008-10-10
还以为是javascript,原来是应用程序的开发与扩充
6 楼
folie2006
2008-10-10
不知能否也发份给我呢..我也想研究一下...因为最近做个监控之类的. 我邮箱是"
huangyuan@vip.qq.com
huangyuan@vip.qq.com
5 楼
myy
2008-09-19
这个其实就是实现自己的IDocHostUIHandler并用SetUIHandler挂接到内嵌浏览器上。
不过好像不能在ActiveX中实现(必须是“Exe文件嵌浏览器”,不能是反过来的“浏览器中载入ActiveX”),不知楼主有没有研究过?
不过好像不能在ActiveX中实现(必须是“Exe文件嵌浏览器”,不能是反过来的“浏览器中载入ActiveX”),不知楼主有没有研究过?
4 楼
绿茵汗将
2008-09-18
楼主发个代码吧,VB6好像做不到
我正郁闷着。。。
我正郁闷着。。。
3 楼
hax
2008-09-18
这一招.NET也可以用。但是要注意性能和单线程问题。
2 楼
kongshanxuelin
2008-09-18
是的,就是一个Exe文件嵌了一个浏览器,然后扩展window.external的js函数供网页调用
1 楼
duronshi
2008-09-18
偶也是从事delphi/java开发的,发来研究下.
你那应该是exe文件吧?
smallshi@163.com
你那应该是exe文件吧?
smallshi@163.com
发表评论
-
新个税改革,看看您每月到手钱少了还是多了计算器
2018-08-29 10:04 553背景:国家重拳整治 ... -
新个税计算器,看看每月到手钱多了还是少了
2018-08-29 10:01 0背景:国家重拳整治社保,将社保缴费交给税务局监管,预期会大 ... -
计算机视觉识别汽车花草人脸颜值
2018-05-29 09:09 1409目前人工智能技术已 ... -
计算机视觉识别汽车花草人脸颜值
2018-05-29 09:03 3目前人工智能技术已 ... -
基于Vue2的在线出试卷小系统,开源已发布
2017-11-15 20:17 1761需要出一份在线面试的小系统,找了一圈,好像没有开源实现,基 ... -
小团队管理微信小程序开源啦~
2017-08-16 13:18 1655项目概述:方便打理 ... -
自定义表单的设计与实现
2017-06-13 17:46 8264制作调查表或企业内部系统的时候,经常被一系列表单弄得焦头烂 ... -
微信小程序开发我遇到的一些坑和建议
2017-04-13 20:08 109小程序最近火了,所 ... -
微信小程序开发我碰到的坑
2017-04-13 20:02 4小程序最近火了,所以 ... -
利用JSPTagEx开发单页面Web程序(附源码)
2015-09-15 15:22 2632何为SPA:Web开发单页面,利用pushState技术实现 ... -
利用JSPTagEx开发单页面Web程序(附源码)
2015-09-15 14:59 1何为SPA:Web开发单页面,利用pushState技术实 ... -
简化移动端开发(NodeJs+Thrift+SocketIO+混编)
2015-08-05 17:16 145本文搭建一套基于Nodejs+SocketIO+Thrif ... -
利用原创框架封装后台管理组件
2015-06-19 18:02 200通过前几天编写的后台管理框架jsptagex我们已经能很快 ... -
原创简化Web开发的框架 - JSPTagEx
2015-06-12 12:53 4674在博客蛰伏了一年多,该写点东西了:) JSPTag ... -
原创Web框架 - JSPTagEx
2015-06-12 12:44 1在博客蛰伏了一年多,该写点东西了:) JSPTag ... -
桌面开发服务端混搭Java
2014-09-26 16:10 0本篇博客在原有GQT桌面项目的基础上,加入了服务端代码(C ... -
关于openfire负载均衡和扩展性的思考
2014-06-04 17:15 0解决并发用户过多 如果你的应用场景无需考虑每个注册用户都必 ... -
异构语言高可用性服务端的设计与实现
2014-05-30 16:01 3004本文的客户端基于我 ... -
也谈基于Web的含工作流项目的一般开发流程
2014-03-19 17:20 5774该项目包含的通用模块代码等我有时间一并剥离贡献出来(基于W ... -
高性能高可用的服务端研究之Req-Rep模式(附源码)
2014-03-04 10:01 5556最近在思考高可用的 ...
相关推荐
一个在HTML中使用Javascript的window.external调用C#内函数的示例程序。该方法可应用于网页程序开发中的网页-程序沟通,例如用C#的IHTMLWindow2.execScript替换HTML默认Javascript方法使其直接与C#传参、通讯。
尝试通过判断`window.external`是否存在来给出提示,但即使`window.external`为`undefined`,条件判断仍然不成立,表明360浏览器的`window.external`并非标准的`undefined`。 接着,开发人员进行了多种类型的检查,...
例如,在下面的 JavaScript 代码中,我们使用 window.external 对象来调用名为 ExecuteExitSrc 的 .NET 方法: window.external.ExecuteExitSrc(); 这个方法将在 .NET 侧执行,实现网页退出屏保的逻辑。 三、创建...
对于现代的Edge浏览器,可以使用WebView2 API,通过window.chrome.webview.hostObjects.你的COM对象来访问。 5. **调试**:在开发过程中,调试C++ COM组件通常需要使用Visual Studio,而JavaScript部分则可以用...
if(window.external && typeof window.external.AddFavorite == 'function') { window.external.AddFavorite(location.href, document.title); } ``` 这段代码首先检查`window.external`对象是否存在并且`...
我们需要创建一个公共类和方法,并设置为`ObjectForScripting`,这样JavaScript就可以通过`window.external`对象访问这些方法: ```csharp [ComVisible(true)] public class ScriptingObject { public void ...
* window.external.AddFavorite(location.href, document.title):加入收藏夹 * window.external.ShowBrowserUI('OrganizeFavorites', null):整理收藏夹 这些操作都是通过调用 window 对象的方法或属性来实现的。 ...
在JavaScript中,`window.open` 是一个非常重要的方法,它用于在浏览器窗口中打开新的、现有的或已命名的窗口。这个方法在网页交互和动态内容加载时尤其常见,比如创建弹窗、打开新链接等。`window.open` 方法的基本...
3. `window.external.msSiteModeSetIconOverlay(bstrIconUrl, [bstrDescription])`:添加一个覆盖图标,用于在任务栏图标上显示额外的状态信息。 4. `window.external.msSiteModeClearIconOverlay()`:清除覆盖图标...
使用React External Window,您可以在应用程序中的外部子窗口中渲染React组件。 与Redux连接的组件一起使用! 安装 需要React v16,并假设您将npm软件包管理器与Webpack或Browserify之类的模块捆绑器一起使用,以...
这个按钮允许用户导入他们的浏览器收藏夹,调用`window.external.ImportExportFavorites(true)`,第一个参数为true表示导入。 8. **导出收藏**: 反之,这个按钮导出收藏夹,`window.external....
AddChannel版本:DHTML Object Model 返回值:无 语法: window . external . AddChanne ( sURL ) 参数: sURL : 必选项。...window.external.AddChannel("http://www.dhtmlet.com/rdl_dom.cdf");
- `window.external.AddFavorite()`:在某些浏览器中,允许将当前页面添加到收藏夹,参数分别为URL和标题。 7. **window.navigator对象**: - `window.navigator.appCodeName`:浏览器的内部代码名。 - `window....
在IT领域,CEFSharp是一个非常重要的库,它允许开发者在.NET环境中嵌入Chromium浏览器引擎。这个库使得在Windows Forms或WPF应用中创建自定义的浏览器控件成为可能,同时支持JavaScript与C#之间的交互。本文将深入...
- `window.external.ImportExportFavorites()` 进行收藏夹的导入和导出操作。 4. **浏览历史(History)**: - `history.go()` 和 `history.forward()` 用于导航到历史记录中的前一个或下一个页面。 - `history....
1. **JavaScript与Browser Object Model (BOM)**:加入收藏功能主要依赖于JavaScript语言,特别是利用BOM中的`window.external`对象。这个对象提供了一些方法,可以用来调用浏览器的特定功能。 - **`window....
首先,我们要知道,浏览器默认的“加入收藏夹”行为通常是通过触发window.external.AddToFavoritesBar(url, title)方法来实现的,其中url是网页的地址,title是收藏夹中显示的标题。如果想要阻止这个功能,我们需要...
在网页开发中,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互。本教程将详细讲解如何利用jQuery实现“设为首页”和“加入收藏”这两个常见功能,以提升用户体验。 首先,我们需要...
} else if (window.external) { window.external.AddFavorite(window.location.href, document.title); } else { alert('请手动将此页面加入收藏夹!'); }">加入收藏夹 ``` 这段代码创建了一个链接,当用户点击时...