Winform启动隐藏,WebBrowser交互JS
一、启动隐藏
Winform比较奇怪,Load的时候设置Visiable=false,无效。webBrowser_DocumentCompleted之后调用hide隐藏了窗体,但是在notifyIcon调用show也不能打开窗体。各种奇葩问题。最后stackOverFlow上找到答案。设置透明度,和取消显示在任务栏。
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.ObjectForScripting = this;
WindowState = FormWindowState.Minimized;
Opacity = ;
ShowInTaskbar = false;
}
在notifyIcon点击的时候触发:
private void SCADAnotifyIcon_Click(object sender, EventArgs e)
{
if (WindowState != FormWindowState.Normal||Visible==false)
{
WindowState = FormWindowState.Normal;
Visible = true;
Opacity =;
ShowInTaskbar = true;
}
else
{
Visible = false;
}
}
达到想要的效果,启动后隐藏,只出现在托盘中。托盘再打开。
二、JS与C# 交互
1.C#调用webbrowser中的JS
javascript方法:
function localversion(version) {
$("#loadedversion").html(version);
}
function setName(name) {
$("#pname").html(name);
}
传递参数必须是objects数组。
/// <summary>
/// 调用JS的方法设置一些信息
/// </summary>
/// <param name="o">The o.</param>
/// <param name="f">The f.</param>
private void InvokeJs(object o, string f)
{
_objects[] = o;
if (webBrowser1.Document != null)
webBrowser1.Document.InvokeScript(f, _objects);
}
private readonly object[] _objects = new object[];
调用的时候:
private void CheckLocal()
{
InvokeJs(ConstFile.ROOLBACKFILE, "setName");
InvokeJs(_autoUpdater.GetLoadedVersion(), "localversion");
}
2.js调用C#。
需要在方法或者类上面标记:
[System.Runtime.InteropServices.ComVisible(true)]
在html页面中直接对应过来即可。
<button id="checkUpdate" onclick="window.external.CheckUpdate()" class="btn btn-success btn-small">检查更新</button>
<button id="installer" class="btn btn-info btn-small" onclick="window.external.RunInstaller()" >安装</button>
这两个按钮会分别触发Form中的方法:
/// <summary>
/// 安装
/// </summary>
public void RunInstaller()
{
_autoUpdater.RunInstaller();
}
public void CheckUpdate()
{
//........
}
Winform启动隐藏,WebBrowser交互JS的更多相关文章
- Winform控件WebBrowser与JS脚本交互
1)在c#中调用js函数 如果要传值,则可以定义object[]数组. 具体方法如下例子: 首先在js中定义被c#调用的方法: function Messageaa(message) { ...
- Winform 通过 WebBrowser 与 JS 交互
Winform 通过 WebBrowser 与 JS 交互 魏刘宏 2019.08.17 之前在使用 Cef (可在 Winform 或 WPF 程序中嵌入 Chrome 内核的网页浏览器的组件)时, ...
- WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互
方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址 http://www.microsoft.com/downloads/details ...
- C# winForm启动最小化到任务栏右侧通知栏并交互操作
原文链接:http://blog.sina.com.cn/s/blog_45eaa01a01013u36.html C# winForm启动最小化到任务栏右侧通知栏并交互操作 一.主要功能:(1).程 ...
- C#在WinForm中使用WebKit传递js对象实现与网页交互的方法
这篇文章主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了C#在W ...
- WinForm中嵌入WebBrowser,并且支持C#和JS方法的相互调用
纯粹WinForm界面不够友好,实现数据复杂度高的处理有些力不从心,所以看了看api以后决定用html来做. 我的wlw的代码插件不是很好用,大家凑合看吧 类前说明引用和权限 1: [Permissi ...
- webbrowser和js交互小结
一.实现WebBrowser内部跳转,阻止默认打开IE 1.引用封装好的WebBrowserLinkSelf.dll实现 public partial class MainWindow : Windo ...
- C# WinForm 和 javascript进行交互 使用HTML做界面
01 using System; 02 using System.Collections.Generic; 03 using System.Text; 04 using System.Reflecti ...
- C# WinForm开发系列 - WebBrowser
原文:C# WinForm开发系列 - WebBrowser 介绍Vs 2005中带的WebBrowser控件使用以及一些疑难问题的解决方法, 如如何正确显示中文, 屏蔽右键菜单, 设置代理等; 收集 ...
随机推荐
- Daily Scrum 12.13
今日完成任务: 已经解决用户管理异常:解决主页TAG显示不正确;解决下载量不正确,完成下载量的计数. 明日任务: 黎柱金 解决文档打开时全部是同一个PDF的BUG 冯飘飘 优化右侧显示最佳资源的算法 ...
- mac iterm2配置
iterm2的配置分为如下几个部分: 1. 字体大小的配置: iTerm->Preferences->Profiles->Text->Regular Font: 我在这里设置成 ...
- ZOJ3774_Power of Fibonacci
求fibonacci数列前N个数的K次方和. 通项公式:F[n]=((1+sqrt(5))/sqrt(5)-(1-sqrt(5))/sqrt(5))/sqrt(5). 有点乱,不过由于可以保证最后的结 ...
- 关于angular的一些新手容易忽略的小知识点
1.解决页面刚加载时使用{{name}}这种方式绑定数据会有一瞬间的表达式显示的问题 方法一: 使用ng-bind来绑定数据, 方法二: 添加ng-cloak指令:如 <div ng-app ...
- Js之AJAX
var xmlHttp; function createHttp() { try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = n ...
- Android观察者模式的简单实现demo
观察者模式就是:当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新. 下面介绍一种简单的使用方法,(下面有demo链接)先看一下project的目录构成: ObserverList ...
- 数据契约(DataContract)
原文地址:http://www.cnblogs.com/Gavinzhao/archive/2010/06/01/1748736.html 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务 ...
- spark单机环境下运行一些解决问题
ERROR1.hadoop依赖 [ERROR] - Failed to locate the winutils binary in the hadoop binary path java.io.I ...
- setenv.bat
@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...
- CentOS详解top命令各个数据的含义
最近在docker(宿主机是centos虚拟机)里安装gitlab,发现随着时间的运行,虚拟机的内存持续走高,运行几个小时之后内存已经爆掉了,putty远程处理于假死状态. 这个时候就需要查看内存进程 ...