精华内容
下载资源
问答
  • 利用ShellExecute独立打开一网页窗口打开我们指定的网页   执行ShellExecute(NULL,_T("open"),"http://www.csdn.net",NULL,NULL,SW_SHOW); 如果以前没有IE窗口,则打开一个 但是,如果...

    利用ShellExecute独立打开一个网页窗口打开我们指定的网页

     

    执行ShellExecute(NULL,_T("open"),"http://www.csdn.net",NULL,NULL,SW_SHOW);
    如果以前没有IE窗口,则打开一个
    但是,如果以前已经有一个,则在原窗口显示
    请问如何一定生成新的窗口显示?不管以前有没有打开的窗口

     

     

     

    ShellExecute是我们常用的一个API,可以运行程序,打开网页。

    ShellExecute(NULL, "open", "http://www.csdn.net", NULL,NULL,SW_SHOWMAXIMIZED);

    这样可以打开一个网页,但不是在新IE中打开,改成下面方式时就可以在一个新的IE中打开网页了

    ShellExecute(NULL, "open", "IEXPLORE", "http://www.csdn.net", NULL,SW_SHOWMAXIMIZED);  //VC6.0版本
    VS2008中使用下面的版本:

    ShellExecute(NULL, L"open", L"IEXPLORE", L"http://www.csdn.net", NULL,SW_SHOWMAXIMIZED); 

     

    结合SysLink控件使用效果更佳!直接在SysLink控件的点击响应函数中加入一句:

    ShellExecute(NULL, L"open", L"IEXPLORE", L"http://www.csdn.net", NULL,SW_SHOWMAXIMIZED); 

    就一切OK了!

    展开全文
  • 网页打开的全过程

    万次阅读 多人点赞 2017-12-28 20:41:25
    1、概要  从用户在浏览器输入域名开始,到web页面加载完毕,这是个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程... 众所周知,打开一网页的过程中,浏览器会因页面上的css/js/image等静态资源会多次

    1、概要

      从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程。下面我将依靠自己的经验,总结一下整个过程。如有错漏,欢迎指正。

      阅读本文需要读者已有一定的计算机知识,了解TCP、DNS等。

    2、分析

      众所周知,打开一个网页的过程中,浏览器会因页面上的css/js/image等静态资源会多次发起连接请求,所以我们暂且把这个网页加载过程分成两部分:

    1. html(jsp/php/aspx) 页面加载(假设存在简单的Nginx负载均衡)
    2. css/js/image等 网页静态资源加载(假设使用CDN)

         2.1 页面加载

      先上一张图,直观明了地让大家了解下基本流程,然后我们再逐一分析。

      2.1.1 DNS解析

      什么是DNS解析?当用户输入一个网址并按下回车键的时候,浏览器得到了一个域名。而在实际通信过程中,我们需要的是一个IP地址。因此我们需要先把域名转换成相应的IP地址,这个过程称作DNS解析。

          1) 浏览器首先搜索浏览器自身缓存的DNS记录。

      或许很多人不知道,浏览器自身也带有一层DNS缓存。Chrome 缓存1000条DNS解析结果,缓存时间大概在一分钟左右。

      (Chrome浏览器通过输入:chrome://net-internals/#dns 打开DNS缓存页面)

      2) 如果浏览器缓存中没有找到需要的记录或记录已经过期,则搜索hosts文件和操作系统缓存。

      在Windows操作系统中,可以通过 ipconfig /displaydns 命令查看本机当前的缓存。

      通过hosts文件,你可以手动指定一个域名和其对应的IP解析结果,并且该结果一旦被使用,同样会被缓存到操作系统缓存中。

      Windows系统的hosts文件在%systemroot%\system32\drivers\etc下,linux系统的hosts文件在/etc/hosts下。

      3) 如果在hosts文件和操作系统缓存中没有找到需要的记录或记录已经过期,则向域名解析服务器发送解析请求。

      其实第一台被访问的域名解析服务器就是我们平时在设置中填写的DNS服务器一项,当操作系统缓存中也没有命中的时候,系统会向DNS服务器正式发出解析请求。这里是真正意义上开始解析一个未知的域名。

      一般一台域名解析服务器会被地理位置临近的大量用户使用(特别是ISP的DNS),一般常见的网站域名解析都能在这里命中。

      4) 如果域名解析服务器也没有该域名的记录,则开始递归+迭代解析。

      这里我们举个例子,如果我们要解析的是mail.google.com。

      首先我们的域名解析服务器会向根域服务器(全球只有13台)发出请求。显然,仅凭13台服务器不可能把全球所有IP都记录下来。所以根域服务器记录的是com域服务器的IP、cn域服务器的IP、org域服务器的IP……。如果我们要查找.com结尾的域名,那么我们可以到com域服务器去进一步解析。所以其实这部分的域名解析过程是一个树形的搜索过程。

           

           根域服务器告诉我们com域服务器的IP。

      接着我们的域名解析服务器会向com域服务器发出请求。根域服务器并没有mail.google.com的IP,但是却有google.com域服务器的IP。

      接着我们的域名解析服务器会向google.com域服务器发出请求。...

      如此重复,直到获得mail.google.com的IP地址。

     

      为什么是递归:问题由一开始的本机要解析mail.google.com变成域名解析服务器要解析mail.google.com,这是递归。

      为什么是迭代:问题由向根域服务器发出请求变成向com域服务器发出请求再变成向google.com域发出请求,这是迭代。

      5) 获取域名对应的IP后,一步步向上返回,直到返回给浏览器。

      2.1.2 发起TCP请求

      浏览器会选择一个大于1024的本机端口向目标IP地址的80端口发起TCP连接请求。经过标准的TCP握手流程,建立TCP连接。

      关于TCP协议的细节,这里就不再阐述。这里只是简单地用一张图说明一下TCP的握手过程。如果不了解TCP,可以选择跳过此段,不影响本文其他部分的浏览。

            

     

      2.1.3 发起HTTP请求

      其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。

      2.1.4 负载均衡

      什么是负载均衡?当一台服务器无法支持大量的用户访问时,将用户分摊到两个或多个服务器上的方法叫负载均衡。

      什么是Nginx?Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。

      负载均衡的方法很多,Nginx负载均衡、LVS-NAT、LVS-DR等。这里,我们以简单的Nginx负载均衡为例。关于负载均衡的多种方法详情大家可以Google一下。

      Nginx有4种类型的模块:core、handlers、filters、load-balancers。

      我们这里讨论其中的2种,分别是负责负载均衡的模块load-balancers和负责执行一系列过滤操作的filters模块。

      1) 一般,如果我们的平台配备了负载均衡的话,前一步DNS解析获得的IP地址应该是我们Nginx负载均衡服务器的IP地址。所以,我们的浏览器将我们的网页请求发送到了Nginx负载均衡服务器上。

      2) Nginx根据我们设定的分配算法和规则,选择一台后端的真实Web服务器,与之建立TCP连接、并转发我们浏览器发出去的网页请求。

        Nginx默认支持 RR轮转法 和 ip_hash法 这2种分配算法。

        前者会从头到尾一个个轮询所有Web服务器,而后者则对源IP使用hash函数确定应该转发到哪个Web服务器上,也能保证同一个IP的请求能发送到同一个Web服务器上实现会话粘连。

        也有其他扩展分配算法,如:

        fair:这种算法会选择相应时间最短的Web服务器

        url_hash:这种算法会使得相同的url发送到同一个Web服务器

      3) Web服务器收到请求,产生响应,并将网页发送给Nginx负载均衡服务器。

      4) Nginx负载均衡服务器将网页传递给filters链处理,之后发回给我们的浏览器。

     

      而Filter的功能可以理解成先把前一步生成的结果处理一遍,再返回给浏览器。比如可以将前面没有压缩的网页用gzip压缩后再返回给浏览器。

      2.1.5 浏览器渲染

      1) 浏览器根据页面内容,生成DOM Tree。根据CSS内容,生成CSS Rule Tree(规则树)。调用JS执行引擎执行JS代码。

      2) 根据DOM Tree和CSS Rule Tree生成Render Tree(呈现树)

      3) 根据Render Tree渲染网页

        但是在浏览器解析页面内容的时候,会发现页面引用了其他未加载的image、css文件、js文件等静态内容,因此开始了第二部分。

      2.2 网页静态资源加载

      以阿里巴巴的淘宝网首页的logo为例,其url地址为 img.alicdn.com/tps/i2/TB1bNE7LFXXXXaOXFXXwFSA1XXX-292-116.png_145x145.jpg

      我们清楚地看到了url中有cdn字样。

      什么是CDN?如果我在广州访问杭州的淘宝网,跨省的通信必然造成延迟。如果淘宝网能在广东建立一个服务器,静态资源我可以直接从就近的广东服务器获取,必然能提高整个网站的打开速度,这就是CDN。CDN叫内容分发网络,是依靠部署在各地的边缘服务器,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度。

      接下来的流程就是浏览器根据url加载该url下的图片内容。本质上是浏览器重新开始第一部分的流程,所以这里不再重复阐述。区别只是负责均衡服务器后端的服务器不再是应用服务器,而是提供静态资源的服务器。

    展开全文
  • Python-定时打开一网页

    千次阅读 2017-05-18 13:39:56
    import webbrowser import timeprint("start" + time.ctime()) count = 0; while (count ): time.sleep(5) webbrowser.open("http://play.baidu.com/?__m=mboxCtrl.playSong&__a=270860469&__o=/search||s
    import webbrowser
    import time
    
    print("start" + time.ctime())
    count = 0;
    while (count < 3):
        time.sleep(5)
        webbrowser.open("http://play.baidu.com/?__m=mboxCtrl.playSong&__a=270860469&__o=/search||songListIcon&fr=altg_new3||-1&__s=apologize#")
        count = count + 1
    展开全文
  • 网页打开exe

    万次阅读 2016-06-29 20:03:24
    网页打开本地的exe文件,可以吗?西蒙说:可以的。方法如下: 1、定义个私有协议,指向本地的那个...在浏览器中输入这个东东,浏览器就能明白是打开一网页。那么,这个私有协议,就是用来打开我们那个该死的exe

    网页上打开本地的exe文件,可以吗?

    西蒙说:可以的。

    方法如下:

    1、定义一个私有协议,指向本地的那个exe
    2、在网页上将此私有协议作为URL,点击之即可打开那个exe
    3、URL中还可以包含参数,传递给那个exe

    1、定义一个私有协议
    协议,http就是一个众所周知的例子。在浏览器中输入这个东东,浏览器就能明白是打开一个网页。那么,这个私有协议,就是用来打开我们那个该死的exe的。

    私有协议怎么定义?很简单,修改注册表。写一段脚本,正确命名文件后缀,双击,windows能识别并运行,修改注册表。

    示例,记事本打开,输入脚本如下:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\HYZT]
    @="URL:HYZT Protocol Handler"
    "URL Protocol"=""
    
    [HKEY_CLASSES_ROOT\HYZT\shell]
    
    [HKEY_CLASSES_ROOT\HYZT\shell\open]
    
    [HKEY_CLASSES_ROOT\HYZT\shell\open\command]
    @="E:\\hyzt\\bin\\Debug\\hyzt.exe %1"

    文件另存为:hyzt.reg。然后双击此文件,注册表即修改矣。文件可以多次修改,多次运行。新修改覆盖原来。

    如此,我们就定义了一个私有协议:hyzt。

    2、URL中包含此协议
    现在,在本机浏览器地址栏中输入hyzt://,回车,即可打开那个该死的exe了。IE是可以的,chrome的话,浏览器中直接输入有时不行,可以定义一个书签(类似IE收藏夹中的收藏),点击就可以了。

    学习http协议的时候,我们会接触两个名词:URI 和 URL。二者有啥区别?

    URI,统一资源定位符;URL,统一资源位置符。简单来讲, URL = 协议 + URI。

    比方说,www.baidu.com是一个URI,而http://www.baidu.com是一个URL。

    也就是说,URL不仅仅标明资源的位置,而且标明访问资源的方法(协议)。http是一种协议,我们那个hyzt,也是一种协议。

    3、URL中传递参数给exe
    我们用 hyzt:// 就可以打开exe。如果想传参数该咋办?可以类似酱紫:

    hyzt://1000,chenqu

    注意,exe接收到的参数,并不是 1000,chenqu,而是完整的 hyzt://1000,chenqu

    附exe接收参数并处理:

    namespace TackColor
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] paras)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1(paras));
            }
        }
    }
    namespace TackColor
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            string _UserId = "0";
            string _UserName = "";
            public Form1(string[] paras) : this()
            {
                pickupParam(paras);
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                MessageBox.Show(String.Format("用户ID:{0},用户名:{1}",this._UserId,this._UserName));
            }
    
            void pickupParam(string[] paras)
            {
                if(paras == null && paras.Length == 0)
                {
                    return;
                }
    
                string p = paras[0];
                Regex rx = new Regex(@"hyzt\://(?<p>[^/]+)/?", RegexOptions.Compiled | RegexOptions.IgnoreCase);
                Match m = rx.Match(p);
                if(m.Success)
                {
                    string[] ps = m.Result("${p}").Split(',');
                    if(ps.Length > 0)
                    {
                        this._UserId = ps[0];
                    }
                    if (ps.Length > 1)
                    {
                        this._UserName = ps[1];
                    }
                }
            }
        }
    }

    这里写图片描述

    4、私有协议与程序安装包结合
    私有协议里面,明确指明了相应的可执行文件的路径:

    [HKEY_CLASSES_ROOT\HYZT\shell\open\command]
    @="C:\\hyzt\\bin\\Debug\\hyzt.exe %1"

    问题是,每台客户机实际情况千差万别,比如本例子中,有些机器根本没有C盘,可执行文件可能装在D盘。那么这个注册表文件在运行前,都要手动改一下吗?
    一个思路是,这个注册表修改工作放在程序的安装包里。用户安装的时候,就将私有协议写进去。

    展开全文
  • 如何批量打开一网页

    千次阅读 2019-01-29 16:55:01
    有时批量打开一网页,研究出三种方法 1.使用在线的网页工具打开,如:http://www.a-site.cn/tool/kai/ 2.使用标签,新建个标签文件夹,把要打开网页放到这个文件夹下,在文件夹下右击选择“打开所有标签...
  • 个PHP文件里面没有html代码,为什么用浏览器打开会显示网页
  • android通过快捷方式打开一网页

    千次阅读 2015-03-24 00:20:44
    有时候我们需要app在桌面生成个快捷方式,通过这个快捷方式可以打开一网页,方法如下: public void addShortcut(Parcelable icon, String name, Uri uri) { Intent intentAddShortcut = new Intent(...
  • 如何查看网页打开速度

    千次阅读 2013-07-04 09:46:49
    经常主观感觉个网页打开速度快或者慢,实际上可以通过浏览器提供...在Chrome打开网页后,在页面内点右键,选inspect element,下栏菜单中选resources,enable resources tracking,接着页面会重新载入,在下面的gr
  • 浏览网页,打开网页上网,网络协议
  • 在子框网页的标签中加 这样你网页内所有链接都在新窗口打开   若是在同一页面打开则是在子框网页的标签中加
  • 在子框网页的标签中加 这样你网页内所有链接都在新窗口打开   若是在同一页面打开则是在子框网页的标签中加
  • android:text="打开一个网址" android:layout_width="match_parent" android:layout_height="wrap_content" /> activity_main: xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools=...
  • 如何在网页打开一个本地桌面程序转载 2015年11月26日 20:30:141473通过网页链接打开本地本地程序,想到最多的方法就是通过activex控件,但这里介绍个通过注册新协议来打开本地程序的方法。参考网上的对QQ的分析...
  • 1.网页结构(了解) 网页构成三要素:HTML...(这是我本地写的个网站,所以没有链接,所以肯定是不能用来爬虫的) 2.python爬虫用的库 python用于爬虫的库为urllib urllib.request 用于打开和读取URL, ...
  • 调用WindowsAPI 打开一网页

    千次阅读 2014-10-18 14:20:22
    用于指定要打开的文件名、执行的程序文件名或浏览的文件夹名。 lpParameters: 若lpFile参数是个可执行程序,则此参数指定命令行参数,否则此参数应为NULL. 最后的那个参数,为窗口指定可视性方面的...
  • 问题描述:谷歌浏览器怎么拖动链接打开个新的标签网页啊,能不能像其他的浏览器比如360浏览器一样,轻轻地拖一下链接,然后自动打开个新的标签网页啊!...3、谷歌默认就是在新标签打开网页的。 4、按住CTRL+
  • unity打开网页

    千次阅读 2018-12-12 11:56:39
    分为两类,是PC端打开网页,二是android端打开网页。 网页插件或方案 Unity之PC版,window。如果网页只是单独二维码图片,则采用www请求得到www.texture; Unity之PC版,window。如果网页不是单独一张二维码...
  • Android Html交互<> 网页链接打开本地App@(Android系统源码解析)[Android, html]声明:转载请注明出处,知识有限,如有错误,请多多交流指正!Android Html交互 网页链接打开本地App效果图 网页Html端代码 Android...
  • 让我设计的网页一打开就是全屏显示,求高手指点指点!,不让人看到地址栏!标题栏。。。。。。。。。。。。。。。
  • Android中 WebView打开一网页实例

    千次阅读 2016-11-15 10:00:25
    //返回true, 立即跳转,返回false,打开网页有延时 } }); } } 不要忘记在manifest中申明这个Activity和加上网络权限 网络权限如下: < uses-permission android:name = "android....
  • android中使用webview打开网页开始网页可以打开,可是网页中的链接点击就显示找不到网页 rt,谢谢 newsshow.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading...
  • 网页打开app

    千次阅读 2018-04-13 10:55:09
    对于产品而言很多都希望能够将wap页上的用户引向native app上这就要求前端工程师们为网页提供各种入口去打开app,今天我们就聊聊app的打开方式(有错误的地方还请高手指正)。常规打开对于app打开而言最常规的打开...
  • 我用button的onlick事件打开一个新的网页,怎么做??     ? Label   在此处可以指明调用的页面 您的姓名: 您的电子邮件: ...
  • 当我们打开一网页,浏览器是如何将堆代码渲染成我们看到的页面的呢?这篇小博客简单的介绍了一下浏览器在网页渲染过程中做的一些事情,关于这方面的内容,《webkit技术内幕》中有比较全面的讲解,内容比较偏...
  • 输入下列内容(调用ie浏览器打开百度主页) IE浏览器: @echo off start iexplore.exe "www.baidu.com" 保存,双击这个小东西,会先弹出黑框闪一下,然后使用ie浏览器打开了百度; 360极速浏览器: @echo off...
  • 调用Android自带浏览器打开网页

    万次阅读 2017-09-11 04:44:08
    在Android中可以调用自带的浏览器,或者指定个浏览器来打开一个链接。只需要传入个uri,可以是链接地址。启动android默认浏览器在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身...
  • 现如今微信对第三方推广链接的审核是越来越严格了,域名在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,不然就是换个域名再推,周而复始。无论是哪种情况都会面临个...
  • 网页打开只有行引入js的代码?

    万次阅读 2019-09-20 10:27:49
    今天莫名其妙进不了公司内网的系统,前几分钟还用了,现在一打开就是一片空白只有一行疑似引入js的代码。同事觉得怪事了,过来一点就进去了,oh?黑人疑问脸,坑爹呢!你再试试,果然后面怎么点都不行,页面就一行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 588,007
精华内容 235,202
关键字:

一打开就是想要的网页