在开发中我们经常将WebBrowser控件嵌入Winform 程序来浏览网页,既然是网页那么少不了JS。下面就让我们来说说他们两之间的相互调用。 在C#封装的浏览器内核中,Chromium 内核封装有Xilium.Cefglue、Cefsharp,Webkit 内核封装 Webkit.Net 、OpenWebKitSharp等。 但是说到和JS的调用,不得不说还是IE 的WebBrowser 最为简单方便。至于IE 为啥方便而其他的不方便,以后我会写文章分析。 下面我们还是先看看WebBrowser怎么和J
WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。
HtmlDocument.InvokeScript 方法 (String, Object[])
最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上。 效果如下图所示:
B/S架构的Web程序几乎占据了应用软件的绝大多数市场,但是C/S架构的WinForm、WPF客户端程序依然具有很实用的价值,如设计类软件 AutoCAD与Autodesk Revit、WPS、IT类的集成开发环境(数据库、图形处理软件)、PC端的小工具等等,充分利用了客户端电脑的资源综合计算能力,处理性能更加优秀。如果想在C/S架构的客户端程序中集成Web应用,也只能借助Web网页,然后将网页集成到客户端程序中,这样就间接的达到了目的。下面是客户端审图系统中集成Web网页的实际应用案例
企业级信息化系统绝大部分采用BS架构实现,如门户网站、OA系统、电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无感知。但是CS架构的WinForm客户端程序仍然具有很实用的价值,如WPS、IT类的集成开发环境(数据库、图形处理软件)、PC端的小工具。本地程序处理性能更优秀,但是频繁更新带来不友好的客户端体验。还有一种非常常见且实用的业务场景, Web网页与WinForm程序互相集成应用。
在我的博客《C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案》、《C#开发BIMFACE系列50 Web网页中使用jQuery加载模型与图纸》、《C#开发BIMFACE系列51 Web网页中使用Vue.js加载模型与图纸》三篇文章中介绍了Web网页中集成BIMFace应用开发的技术方案与示例程序。在建筑领域中涉及的应用管理系统绝大部分都是BS架构Web形式,这是主流趋势。BIMFACE在网页中加载浏览模型图纸时用到了HTML5、CSS3、WebGL等新技术,无需安装任何插件,极速流畅的浏览体验,并且可以集成应用于App、小程序、公众号等移动端。
使用这些有用的 Python 代码片段提升你的编程技能,在本文中,我将分享 20 个 Python 代码片段,以帮助你应对日常编程挑战,你可能已经知道其中一些片段,但其他片段对你来说,有可能是新的。我们现在开始吧。
英文 | https://python.plainenglish.io/20-python-code-snippets-for-everyday-programming-problems-339346a6f996
最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. 发现WebBrowser控件默认使用的版本是IE7的兼容模式.而淘宝的宝贝详细页居然对IE7的支持不是很好. 成交记
何谓CBS程序 CBS程序就是Client+Browser+Service的程序 纯CS程序写界面,有各种难处,那么我就在Client端引入Browser,让Browser渲染基于HTML的UI界面 何谓WUI 就算用用HTML渲染UI界面,那么开发人员还是要掌握HTML+CSS+JS的知识,这些知识还是比较复杂的 WUI库就是把HTML+CSS+JS封装成起来,组成一个界面元素库,(类似于Extjs和easyui) 意图是让开发人员就只要掌握C#代码,就能写出漂亮的UI界面 第一步:WUI库中的主窗口
怎样才可以调用打印机进行打印并且对纸张类型进行设置呢? ---------------------JavaScript
今天终于开始学C#可视化了,C#这方面一直都是跟着进度走,自己也没去自学啥的,所以对一切还是比较陌生的,然后就跟着走了。
系统:Win10;之前安装过Cpython,现在依次使用pip install ipython与pip install jupyter安装了 Ipython 6.5.0与 jupyter 1.0.0。但是在PowerShell上使用命令jupyter notebook 运行jupyter时服务器始终卡顿,根本没法用。
C# WebBrower1控件可编辑模式保存时会提示“该文档已被修改,是否保存修改结果” 在百度查了不少方法,张筱祥发现一个比较实用而且非常简单的方法,代码如下: 在WebBrower1的Navigating 事件中加以下代码就没有提示了。 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { webBrowser1.Document.W
首先需要支持的是IE的插件。又称为BHO(Browser Helper Object 浏览器辅助对象).
首先要找到jupyter生成的配置文件 jupyter_notebook_config.py 。如果没有,在 anaconda prompt 中用如下命令生成一个:
WebBrowser控件提供了当silverlight应用运行在OOB(out of browser)模式时,在silverlight内部呈现html的功能。 WebBrowser控件只能运行在OOB模式下,若是在浏览器中查看。他就是会显示一个和WebBrowser控件大小相等的矩形区域。 <grid x:name="LayoutRoot" background="White"> <webbrowser source="http://localhost:8238/HTMLPage1.html"
> urlmon.dll!CPolicyBrowserModeFilter::_EnsureFilterIfNoDataFound C++ urlmon.dll!CBrowserModeFilter::_EnsureBrowserModeFilter C++ urlmon.dll!CBrowserModeFilter::IsIE7Mode C++ fast_mb.exe!GetBrowserEmulation C++ fast_mb.exe!WebBrowser::OnNavigateComplete2 C++ fast_mb.exe!WebBrowser::Invoke C++ ieframe.dll!EnumInvokeCallback 未知 ieframe.dll!EnumConnectionPointSinks 未知 ieframe.dll!IConnectionPoint_InvokeIndirect 未知 ieframe.dll!DoInvokeParamHelper 未知 ieframe.dll!FireEvent_NavigateComplete 未知 ieframe.dll!CBaseBrowser2::v_ActivatePendingView 未知 ieframe.dll!CWebBrowserSB::v_ActivatePendingView 未知 ieframe.dll!CBaseBrowser2::_ExecShellDocView 未知 ieframe.dll!CBaseBrowser2::Exec 未知 ieframe.dll!CWebBrowserSB::Exec 未知 ieframe.dll!CDocObjectHost::_Navigate 未知 ieframe.dll!CDocObjectHost::_OnReadyState 未知 ieframe.dll!CDocObjectHost::_OnChangedReadyState 未知 ieframe.dll!CDocObjectHost::OnChanged 未知 mshtml.dll!CBase::FirePropertyNotify 未知 mshtml.dll!CMarkup::SetReadyState 未知 mshtml.dll!CMarkup::SetInteractiveInternal 未知 mshtml.dll!CMarkup::RequestReadystateInteractive 未知 mshtml.dll!CMarkup::BlockScriptExecutionHelper 未知 mshtml.dll!CHtmPost::Exec 未知 mshtml.dll!CHtmPost::Run 未知 mshtml.dll!PostManExecute 未知 mshtml.dll!PostManResume 未知 mshtml.dll!CHtmPost::OnDwnChanCallback 未知 mshtml.dll!CDwnChan::OnMethodCall 未知 mshtml.dll!GlobalWndOnMethodCall 未知 mshtml.dll!GlobalWndProc 未知 user32.dll!_InternalCallWinProc@20 未知 user32.dll!_UserCallWinProcCheckWow@32 未知 user32.dll!_DispatchMessageWorker@8 未知 user32.dll!_DispatchMessageW@4 未知 fast_mb.exe!wWinMain3 C++ fast_mb.exe!wWinMain C++ fast_mb.exe!invoke_main C++ fast_mb.exe!__scrt_common_main_seh C++ fast_mb.exe!__scrt_common_main
上一节介绍了WebBrowser控件,这里就接着WebBrowser介绍下WebBrowserBrush控件。在silverlight 4 beta2时WebBrowserBrush被称为HtmlBrush,他在rc版本被更名为了WebBrowserBrush。 WebBrowserBrush是一种刷子,就好像VideoBrush一样。这里他能绘制出来一些WebBrowser所提供的内容。由于WebBrowser控件的关系,所以它也只能运行在OOB模式下,若是在浏览器中,它将会是一个透明的刷子。 这里注
前几天我在做一个副业,意识到我需要使用一些 JavaScript 功能。一想到要再次处理 Node.js 和 npm,我就完全放弃了,所以我决定研究一下在 .NET 应用程序中运行 JavaScript 的可能性。很疯狂吧?实际上,这出乎意料的简单。
做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web应用程序的打印有种种限制,技术人员在项目开发过程中经常会遇到用户这样或那样的需求. 做过桌面应用开发的人都会非常熟悉水晶报表、Active Report之类的报表控件,它们不仅有简单灵活的设计界面,更具有非常强大的报表功能,能满足各种报表的打印需求。而Web应用则因为其特殊的呈现方式,只能寻求其他的解决方案。现在我们来分析一下目前已经成形的Web打印方案:
本文介绍了Webview与ScrollView的滚动兼容及留白处理,分享给大家,具体如下:
添加对象<object ID='WebBrowser1' WIDTH="0" HEIGHT="0" CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>
个人对脚本语言认识不深, 尤其是动态语言... 但是问了好多人为什么逻辑用脚本写, 答案都是不用编译 这也只能怪DT的C++当初没设计好 由于WOW的成功, 让lua几乎成了游戏脚本的标准 原来的python/ruby/tcl啥的一下子就没落了, 都怪暴雪啊~ 虽然lua做为一个脚本语言来说, 非常的完美 但是我对它不是很感冒, 可能习惯了C系语言的语法了 对于C/C++/C#/Java/JS/AS类的我才看着比较顺眼 而且, 从学校开始, 好像自己就中了C#的毒一般, 虽然一直没机会大量应用, 但心中一直
当我们需要对一个网页上的某个按钮进行多次点击以求得某种“好处”的时候,例如天猫的抢红包活动,我们可能需要点击N次之后才有可能获得一个红包,但是这个N是一个未知数,有可能我们要不停地点击半个小时甚至一个小时都还无法获得,自己估计也会点鼠标点得醉了。因此,针对这种情况,我们希望自己写一个小工具来让计算机帮我们做这件事。
社会单位消防安全户籍化管理系统——半自动提交V1.0版本 首先先上代码,开发这个小程序其实是用来帮助同事完成一项每天都做的繁琐事件,以往需要花费十分钟做这件事情,现在就是傻瓜式,点几下鼠标就好了。本来想写成每天自动化定时执行任务,但使用此小程序的同事已离职,不再使用这项功能了,也就懒得再继续更新维护了。 这个小程序原理很简单,就是利用C#WebBrowser控件进行提交内容。 可能用javascript编写会更快吧,编写的时候,正好在练习使用WebBrowser控件。 编程嘛,在没有强制要求的时候,随心所欲
<input onclick="document.all.WebBrowser.ExecWB(1,1)" type="button" value="打开" name="Button1"> <input onclick="document.all.WebBrowser.ExecWB(4,1)" type="button" value="另存为" name="Button2"> <input onclick="document.all.WebBrowser.ExecWB(10,1)" type="button"
在应用程序的集成过程中,有时候需要WinForm应用程序和Javascript程序进行交互。比如说:应用程序是一个综合调度系统,在整个综合调度系统中,要实现定位,显示地图。综合调度平台的大部分功能都是使用WinForm实现的;但是定位和地图部分都不是自己开发的需要使用第三方接口,实现地图的展示,而第三方的接口使用的是Javascript实现的。这种情况有一下两种方法解决:
WebView2和CEF相比,在WPF中CEF相当于把渲染的界面生成图片再加载,而WebView2则没有这一步,性能有显著提升。
之前开源了一款名为 HackerScreenSaver 的 Windows 屏保程序。该程序具有模拟黑客炫酷界面的特点,用户可以将自定义的网页作为锁屏界面。不久前,有网友提出一个有趣的需求:能否在退出屏保时需要输入密码?虽然我不太清楚他的用意,但这个其实可以安排,不过需要变通一下。
看了个BUILD的PPT,Windows Runtime (RT)并不是一些新闻网站说的那样微软自废.NET武功,而是恰恰相反,WinRT是Win32API的现代版,其中有很深的.NET的基因,是Metro UI的.NET基础,如果考察Metadata的变化,WinRT的API定义的元数据是基于标准ECMA 335,也就是.NET的标准 ,WinRT也是一个沙箱的环境,针对AppStore环境设计的。 视频 基础知识 微软以推出Windows 8为契机,以解决Windows长期存在的问题,并带来了新的用户界
我们都知道对于桌面应用开发来说,人们常用的方式就是采用c++或者c#,java等进行开发,然而这些语言开发效率不够高,不如网页开发灵活。因此,人们思考能否采用html+css+js的方式来开发桌面客户端呢,于是人们就提出了混合开发概念,并且开发了electron框架进行桌面开发。
有需求就要改进 最近两年没有在春节回家过年了,主要是票太难买,虽然之前写了一个12306“无声购票弹窗”工具,解决了抢票问题,但是全家老小一起回去还是很累,干脆就在北京过年了。这两天突然有一个朋友问我你之前的抢票工具还能用不,我让他试试,他说可以,于是我觉得这样一个小工具居然还有人继续使用啊,既然有人用我就继续把他做好点,让大家过年抢票更“安心”! 之前的抢票工具是基于IEBrowser控件做的,不用说大家都知道这个控件在不同的Windows系统上表现各异,因为它主要依赖于IE内核,坑爹的是它有时候还没有直
前段时间由于项目上的需求,要在.Net平台下实现把HTML内容生成图片或PDF文件的功能,特意在网上研究了几种方案,这里记录一下以备日后再次使用。当时想着找一种开发部署都比较清爽并且运行稳定的方案,但实际上两者同时满足基本不可能,只能做一个自己觉得合适的取舍,下面从两个维度(清爽指数和功能指数)逐一对比。
可以减少强制转换(强制转换其实挺好的,让程序猿清楚地指定自己做了什么,不至于出错时不知所措)
至此, C#做为脚本已经完全可行了: 可嵌入, 跨平台, 高效率, 热更新, 几乎可以忽略的编译时间, 强大的IDE支持, 丰富的第三方库, 部分动态语言特性的支持, 可以接受的体积与内存占用
编译 冒似不编译没有.lib可以用 从官方上下载稳定版本的代码, 不要去GitHub直接拉 默认的工程有几个路径和宏之类的不对, 小改一下就可以 如果缺文件, 可以到GitHub的历史版本里去找 编译好了就一个lib, 一个dll, pdb看需要 环境配置 C++这边肯定要链接mono.lib, 所以dll要拷贝到exe的目录 除了mono本身外, 还需要.net的runtime assembly, 最精简的情况只需要一个mscorlib.dll, 其它的用到再加进去就可以 脚本的编译可以用mono的SDK
在编程的世界里," Hello World " 往往是开发者开始学习一种新语言时写的第一个程序。这个简单的程序会将 “Hello World“ 输出在我们的屏幕上。看似很简单的行为,实际上对于每一个新学习编程语言的人来说,它代表着新的起点。那么,如何在众多的编程语言中输出” Hello World " 呢?
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118483.html原文链接:https://javaforall.cn
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程。本产品已经成熟稳定并投入商用。
本文讲述如何用WPF写一个简易的浏览器。首先介绍WPF的特点和基础,然后展示如何利用XAML和代码创建一个简单的浏览器。最后,讲述如何实现地址栏的自动补全和更改地址栏的URL功能。
最近在做一个演示DEMO的时候,需要省界和市一级界线的数据。以前自己是有这样的SHP数据的,然而现在由于行政区划更新很快,而自己之前下的数据还是2010年版本的国家基础数据。
本来想找个“优雅”一点的方法,类似C#在调用C++方法时候的Invoke之类的。没找到,后来想想,其实也没必要,直接写就好了,算最优雅了吧。只是少了VS的Intelligence,有点不习惯罢了。
不论是JavaScript还是C#程序,我们已经习惯了采用如下所示的“链式调用”的方式进行编程,这样确实会使我们的程序变得很精练。 1: new Foo() 2: .UseXxx() 3: .UseZzz() 4: .UseZzz() 5: .Invoke(); 采用这种链式调用方式的很多方法都是扩展方法,比如上面所示的UseXxx、UseYyy和UseXxx方法就是采用如下形式定义的扩展方法。 1: public interface IF
本文介绍了一种使用Iron.js在.NET程序中运行JavaScript脚本的方法,通过动态语言运行时(DLR)实现。该方法可以方便地为动态语言添加自定义逻辑,提高开发效率。
呵呵,不得不佩服Python的强大,寥寥几句代码就能做一个简单的刷博器。 import webbrowser as web import time import os count=0 while count<10: count=count+1 #你要刷的博客 web.open_new_tab("http://www.cnblogs.com/smiler/archive/2010/04/20/1716418.html#2856973") time.sleep(1) else
本文记录对某网站A的秒杀活动编写秒杀器的经历和技术重点。 故事回顾 某日早上,朋友给我说最近A网站在开展秒杀活动,有IPad、IPhone,让大家一起去秒杀。结果我们四个人一起秒,都没有别人快,没有一个人秒到。然后下午我就开始尝试分析它网站的秒杀流程,并尝试使用自动提交数据的方案来进行秒杀。结果,在晚上的时候,成功做出了第一个版本的秒杀器,然后我们一起秒杀了几个IPad(大家都想要IPad,而对IPhone没兴趣,汗)。 当时就用网银付了帐,等待它发货。接下来我们每个人一个接一个地接
领取专属 10元无门槛券
手把手带您无忧上云