调整.NET控件WebBrowser的默认浏览器内核版本

作者:freethy 发布于:2016-9-28 22:16 Wednesday

浏览器内核检测:http://www.ip33.com/browser.html


在网上找了一些资料后,我发现可以通过下面这个办法来解决:

1、在开始菜单内输入“regedit.exe”,进入注册表编辑器

2、找到注册表项:

32位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

64位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

3、在右侧空白区域内单击鼠标右键,点击【新建】→【DWORD(32-位)值】

4、新建的项取名为<你的程序exe文件名称>,编辑值时,选择基数“十进制”,填写数值数据,这里填写 11001(IE11)

5、这个时候再进入Debug目录下生成好的exe程序,可以看到登录的内核版本变成IE11了!

 

需要注意的是,在VS内以调试的方法进入程序,打开的程序实际上是<程序exe.vshost.exe>,并不能看到效果。

评论(0) 引用(0) 浏览(830)

Delphi使用大图标编译程序

作者:freethy 发布于:2016-8-30 21:17 Tuesday

转载请注明原文地址:http://bcoder.com/delphi/compile-program-with-large-icon-in-delphi

  在Windows Vista、 Windows7以上Windows系统中可以支持大图标显示了,但是Delphi编译出来的程序却只能显示32x32的图标,这使Delphi编译的程序看起来很不专业。下面就把Delphi编译大图标程序的方法分享一下。

  要想使用大图标编译,首先要准备一个256x256的图标图片。

  使用图标编辑软件,如IconWorkshop打开你的 ico文件,新建一个256x256的真彩色图标,将你的图片文件导入到该图标中。保存图标后,将图标文件拷贝到你的工程目录下,假设为mainico.ico,然后在你的工程下面建一个mainico.rc的文件,在里面输入文本:

  MAINICON ICON mainico.ico

  打开命令行窗口,将目录切换到你的工程目录下,输入命令rc mainico.rc,按回车执行,这时在你的工程目录下会生成一个mainico.RES文件。

  在Delphi中打开你的工程,选择菜单Project->View Source,在{$R *.res}下面加上一行{$R Mainico.RES},再编译程序就可以了。

  Windows系统会对图标缓存,所以刚编译完可能看不到效果,可以将编译后的程序拷贝到其他地方,看是否变成大图标了。

  rc命令为调用的Microsoft Windows Resource Compiler

评论(0) 引用(0) 浏览(872)

sql将文件大小转为字符串表示

作者:freethy 发布于:2016-8-27 11:41 Saturday

case when (fSize/1024<1) then (convert(varchar(max),fSize) + ' B')
else (
case when (fSize/1024/1024<1) then (convert(varchar(max),convert(decimal(10,2),convert(float,fSize)/1024)) + ' KB')
else (
case when (fSize/1024/1024/1024<1) then (convert(varchar(max),convert(decimal(10,2),convert(float,fSize)/1024/1024)) + ' MB')
else (
(convert(varchar(max),convert(decimal(10,2),convert(float,fSize)/1024/1024/1024)) + ' GB')
)
end
)
end
)
end

评论(0) 引用(0) 浏览(692)

解析目前NFC具有的三种工作模式

作者:freethy 发布于:2016-7-22 14:10 Friday

  NFC技术自出现以来,凭借自身传输带宽高、安全性高、能耗低等优势而被应用到各行业中,那么所谓的NFC有什么工作模式呢?

   近场通信(Near Field Communication,NFC)即近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在10cm内)交换数据。NFC技术是RFID技术的一个子类别,RFID包括了长距离和短距离,NFC主要是短距离的通信,并向下兼容RFID。NFC技术与RFID的区别体现在通信距离和功能性上。

   因此,目前NFC具有三种工作模式:

   卡模式(Card emulation):这个模式其实就是相当于一张采用RFID技术的IC卡,可以替代大量的IC卡(包括信用卡)使用的场合,如商场刷卡、公交卡、门禁管制,车票,门票等等。此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的 RF 域来供电,即使寄主设备(如手机)没电也可以工作。

   点对点模式(P2P mode):这个模式和红外线差不多,可用于数据交换,只是传输距离较短,传输创建速度较快,传输速度也快些,功耗低(蓝牙也类似)。将两个具备NFC功能的设备无线链接,能实现数据点对点传输,如下载音乐、交换图片或者同步设备地址薄。因此通过NFC,多个设备如数位相机、PDA、计算机和手机之间都可以交换资料或者服务。

   读卡器模式(Reader/writer mode):作为非接触读卡器使用,比如从海报或者展览信息电子标签上读取相关信息。亦可实现NFC手机之间的数据交换,对于企业环境的中的文件共享,或者对于多玩家的游戏应用,都将带来诸多的便利。

 

原文出自[安防知识网] 转载请保留原文链接:http://www.asmag.com.cn/tech/201306/63068.html

评论(0) 引用(0) 浏览(791)

http协议中:GET/POST/PUT/DELETE/INPUT/TRACE/OPTIONS/HEAD方法

作者:freethy 发布于:2016-6-22 15:43 Wednesday

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:

OPTIONS 
返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 
HEAD 
向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 
GET 
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中。 
POST 
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 
PUT 
向指定资源位置上传其最新内容。 
DELETE 
请求服务器删除Request-URI所标识的资源。 
TRACE 
回显服务器收到的请求,主要用于测试或诊断。 
CONNECT 
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

评论(0) 引用(0) 浏览(1092)

url Rewrite 重写时带“?”(问号)参数的传递

作者:freethy 发布于:2016-6-14 13:01 Tuesday

一,Rewrite重写时带“?”(问号)参数的传递

很多人都会遇到需要将网站以前的旧URL转换到新版本的新URL来,但是有一些带有参数的地址由于涉及到参数名的变更,需要通过伪静态的方式实现跳转。但Apache和Ngnix的方法是不支持带参数的URL地址重写的(即:RewriteRule不会去匹配“?”后面的字符串的,需要用RewriteCond来匹配)。

例如:把 /abc?id=123 重定向到 /def.php?id=123 的写法:
方式一:
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^id=(.+)$
RewriteRule ^/abc$ /def.php?sid=%1 [L]
#注释1:RewriteCond %{QUERY_STRING} ^id=(.+)$ ,得到url中的变量,并通过“%N”的方式获取(参数名可以重写,而且参数值可以匹配)
#注释2:RewriteCond 里面需要提取的值可以用 %N 进行反向引用值,而RewriteRule里面还是需要用$N的来反向引用值

方式二:
RewriteEngine on
RewriteBase /
RewriteRule ^/abc$ /def.php [L,QSA]
#注释1:[QSA]表示保留重写url时“?”后面的参数(但参数名不可以重写,只会原样的保留)

官方文档解释(查询字符串):
Pattern不会按照查询字符串进行匹配。为了达到这个目的,你必须使用一个带有% {QUERY_STRING}变量的RewriteCond指令。当然,你也可以在替换字符串中创建包含查询字符串的URL:在替换字符串串中使用问号,以标明其后的部分应该被重新注入到QUERY_STRING中。而要删除一个已有的请求串,则可以用问号来终结替换字符串。为了联合新旧查询字符串,请使用[QSA]标志。

二、apache rewrite 终结篇:apache %{QUERY_STRING}
1.$n取得第n个参数值
RewriteRule ^sss/(.*)/(.*)$ zdz/index.php?arg1=$1&arg2=$2

2.query_string(%{QUERY_STRING}后为匹配的正则)
URL参数(Query String)是URL里面“?”后面的部分,它通常用于传输参数给CGI脚本或者其它动态页面。在Apache中,该值存储在环境变量QUERY_STRING中(在PHP中,可以通过$_SERVER['QUERY_STRING']访问到)。
在Apache中,大多对URL进行操作的指令,如、Redirect、Alias和RewriteRule,都不能直 接访问该数据;不过,mod_rewrite模块却可以对URL参数进行添加、删除和修改。其中的关键就是使用RewriteCond来匹配% {QUERY_STRING}变量,如果需要的话,还可以使用[QSA]标志来附加URL参数。

eg.1
如果 http://piaoyun.cc/rewrite/jeecn.zdz?par=helloforbworld 中的 query_string 包含字符串forb ,则禁止访问
RewriteCond %{QUERY_STRING} forb
RewriteRule ^(.*)\.(.*)$ preg.php?%{QUERY_STRING} [F]

eg.2
通过[QSA]标志保留原有URL参数的同时,在后面增加新的URL参数:param=value
RewriteRule ^/page /page?param=value [QSA]

eg3.
当URL参数包含字符串parm时
将URL:http://jeecn.com/ask?param=value 重写为: http://jeecn.com/answer?param=value
RewriteCond %{QUERY_STRING} parm
RewriteRule ^/ask /answer

eg4.%n反向引用
1)当访问 /path 时,将字符串 parm修改为 showparm
RewriteCond %{QUERY_STRING} ^(.*)parm(.*)$
RewriteRule /path /path?%1showparm%2
上面的%1和%2是反向引用,来自之前的RewriteCond中正则表达式的匹配结果

2)将http://jeecn.com/path?key=value 转换为: http://piaoyun.cc/path/key/value
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

评论(0) 引用(0) 浏览(1053)

无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法

作者:freethy 发布于:2016-6-13 9:30 Monday

无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法
 
问题描述:

在附加数据库到sql server时,附加不上,出现如下图所示的错误
 
 
解决方法:

找到xxx.mdf和xxx_log.ldf文件,
 
     点击“右键”->“属性”->"安全"-在组或用户名处添加Authenticated Users-

更改该组权限为完全权限,再次附加成功。

评论(0) 引用(0) 浏览(961)

Microsoft Visual Studio 2012 自定义插件安装

作者:freethy 发布于:2016-6-7 12:56 Tuesday

将.Addin文件配置好到放到目录:C:\Users\your username\Documents\Visual Studio 2012\Addins\


重启vs2012即可

评论(0) 引用(0) 浏览(928)

IIS启用GZip压缩的详细教程(图文)

作者:freethy 发布于:2016-5-13 13:38 Friday

IIS启用GZip压缩,是提高网站速度和减轻服务器负载的一个优化手段和方法,经测试,网站启用GZip压缩后,速度快了3倍!而配置起来也相当的简单,因此被广大网站管理员使用。本文将详细介绍如何在IIS启用GZip压缩,同时解决可能遇到的一些问题。

      IIS启用GZip压缩的步骤

      1、打开IIS,右键点击“网站”,选择“属性”

      2、在打开的窗口里,切换到“服务”标签,然后选中“HTTP压缩”下面的两个选项,临时目录可以自己新建一个目录(这个目录必须可写),也可以不用改它,使用系统默认的路径:%windir%\IIS Temporary Compressed Files。然后点击“确定”按钮。

      3、添加一个Web服务扩展

      1)、右键点击“Web 服务器扩展”,选择“添加一个新的Web服务扩展”

      2)、在弹出窗口里写上“扩展名”(名字随便无所谓),点击“添加”按钮,选择文件:c:\windows\system32\inetsrv\gzip.dll,然后把勾选“设置扩展状态为运行”,最后点击“确定”按钮。


      4、重启IIS。(简单的操作方法:开始->运行->输入命令:iisreset /restart,然后回车即可)

      好了,经过如上设置后,此IIS Web服务器就启用GZip压缩功能了,此功能是对此IIS服务器下的所有网站都有效,并不是只针对某个网站设置的。

      注意问题

      经过如上设置,GZip压缩其实只对静态内容有效,而对于动态内容,aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方,这时候只能去修改它的配置文件了。在c:\windows\system32\inetsrv\下面有个MetaBase.xml文件,可以用记事本打开,找到IIsCompressionScheme,有三个相同名字的段,分别是deflate,gzip,Parameters,第三段不用管它,前两段有基本相同的参数,在这两段的参数HcScriptFileExtensions下面都加上一行aspx,如果你有其它的动态程序要压缩,也加在这里。HcDynamicCompressionLevel改成9,(0-10,9是性价比最高的一个)。

      对于aspx等动态网页,启用网页缓存,是广大网站管理员采用的有效实用的优化方法,操作起来也相当简单,可参考此文操作:服务器性能优化策略之启用网页缓存。

      可能遇到的问题

      MetaBase.xml修改后无法保存

      在修改MetaBase.xml后,为什么无法保存?这是因为该文件正在被IIS使用所致,这时可以通过如下两个方法来解决这个问题。

      第一种方法:

      停止IIS,再编辑metabase.xml文件。

      停止IIS的简单操作方法:开始->运行->输入命令:iisreset /stop,然后回车即可。

      第二种方法:

      启用IIS中“允许直接编辑配置数据库”的功能。

      1)、打开iis管理器,右击本地计算机-选择属性


      2)、勾选“允许直接编辑配置数据库”,点击“确定”按钮。

 

评论(0) 引用(0) 浏览(914)

CSS 的优先级机制[总结]

作者:freethy 发布于:2016-5-13 10:06 Friday

样式的优先级

多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。

一般情况下,优先级如下:

(外部样式)External style sheet <(内部样式)Internal style sheet <(内联样式)Inline style

 

有个例外的情况,就是如果外部样式放在内部样式后面,则外部样式将覆盖内部样式。

示例如下:

<head>
    <style type="text/css">
      /* 内部样式 */
      h3{color:green;}
    </style>
 
    <!-- 外部样式 style.css -->
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <!-- 设置:h3{color:blue;} -->
</head>
<body>
    <h3>测试!</h3>
</body>

 

选择器的优先权

 

jc6_002

 

解释:

1.  内联样式表的权值最高 1000;

2.  ID 选择器的权值为 100

3.  Class 类选择器的权值为 10

4.  HTML 标签选择器的权值为 1

 

利用选择器的权值进行计算比较,示例如下:

<html>
  <head>
    <style type="text/css">
        #redP p {
             /* 权值 = 100+1=101 */
             color:#F00;  /* 红色 */
        }
 
        #redP .red em {
             /* 权值 = 100+10+1=111 */
             color:#00F; /* 蓝色 */
 
        }
 
        #redP p span em {
             /* 权值 = 100+1+1+1=103 */
             color:#FF0;/*黄色*/
        }
    </style>
  </head>
  <body>
     <div id="redP">
        <p class="red">red
           <span><em>em red</em></span>
        </p>
        <p>red</p>
     </div>
  </body>
</html>

结果<em标签内的数据显示为蓝色。

 

CSS 优先级法则:

A  选择器都有一个权值,权值越大越优先;

B  当权值相等时,后出现的样式表设置要优于先出现的样式表设置;

C  创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;

D  继承的CSS 样式不如后来指定的CSS 样式;

E  在同一组属性设置中标有!important”规则的优先级最大;示例如下:

<html>
  <head>
    <style type="text/css">
     #redP p{
        /*两个color属性在同一组*/
        color:#00f !important; /* 优先级最大 */
        color:#f00;
     }
    </style>
  </head>
  <body>
     <div id="redP">
       <p>color</p>
       <p>color</p>
     </div>
  </body>
</html>

结果:在Firefox 下显示为蓝色;在IE  6 下显示为红色

 

使用脚本添加样式

当在连接外部样式后,再在其后面使用JavaScript 脚本插入内部样式时(即内部样式使用脚本创建),IE 浏览器就表现出它的另类了。代码如下:

<html>
<head>
  <title> demo </title>
  <meta name="Author" content="xugang" />
 
  <!-- 添加外部CSS 样式 -->
  <link rel="stylesheet" href="styles.css" type="text/css" />
  <!-- 在外部的styles.css文件中,代码如下:
       h3 {color:blue;}
  -->
 
  <!-- 使用javascript 创建内部CSS 样式 -->
  <script type="text/javascript">
  <!--
    (function(){
        var agent = window.navigator.userAgent.toLowerCase();
        var is_op = (agent.indexOf("opera") != -1);
        var is_ie = (agent.indexOf("msie") != -1) && document.all && !is_op;
        var is_ch = (agent.indexOf("chrome") != -1);
 
        var cssStr="h3 {color:green;}";
        var s=document.createElement("style");
        var head=document.getElementsByTagName("head").item(0);
        var link=document.getElementsByTagName("link");
        link=link.item(0);
 
        if(is_ie)
        {
            if(link)
                head.insertBefore(s,link);
            else
                head.appendChild(s);
            document.styleSheets.item(document.styleSheets.length-1).cssText=cssStr;
        }
        else if(is_ch)
        {
            var t=document.createTextNode();
            t.nodeValue=cssStr;
            s.appendChild(t);
            head.insertBefore(s,link);
        }
        else
        {
            s.innerHTML=cssStr;
            head.insertBefore(s,link);
        }
    })();
  //-->
  </script>
</head>
<body>
  <h3>在IE中我是绿色,非IE浏览器下我是蓝色!</h3>
</body>
</html>

结果在Firefox / Chrome / Safari / Opera 中,文字都是蓝色的。而在IE 浏览器中,文字却是绿色的。

 

附加

在IE 中添加样式内容的JavaScript 代码:

var s=document.createElement("style");
var head=document.getElementsByTagName("head").item(0);
var link=document.getElementsByTagName("link").item(0);
 
head.insertBefore(s,link);
/* 注意:在IE 中,
   虽然代码是将<style>插入在<link>之前,
   但实际内存中,<style>却在<link>之后。
   这也是“IE中奇怪的应用CSS的BUG”之所在!
*/
 
var oStyleSheet = document.styleSheets[0];
//这实际是在<link>的外部样式中追加
oStyleSheet.addRule("h3","color:green;");
alert(oStyleSheet.rules[0].style.cssText);
alert(document.styleSheets[0].rules[0].style.cssText);
 
//方式2
var cssStr="h3 {color:green;}";
document.styleSheets.item(document.styleSheets.length-1).cssText=cssStr;

 

IE 浏览器下载或者渲染的顺序可能如下:

●   IE 下载的顺序是从上到下;

●   JavaScript 函数的执行会阻塞IE 的下载;

●   IE 渲染的顺序也是从上到下;

●   IE 的下载和渲染是同时进行的;

●   在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(但并不是说所有相关联的元素都已经下载完。)

●   在下载过程中,如果遇到某一标签是嵌入文件,并且文件是具有语义解释性的(例如:JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。并且在下载后进行解析,如果JS、CSS中如有重定义,后面定义的函数将覆盖前面定义的函数。

●   解析过程中,停止页面所有往下元素的下载。样式表文件比较特殊,在其下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行样式渲染。并以此方式一直渲染下去,直到整个页面渲染完成。

●   Firefox 处理下载和渲染的顺序大体相同,只是在细微之处有些差别,例如:iframe 的渲染。

 

推荐阅读IE 中奇怪的应用CSS 的BUG

 

作者: XuGang   网名:钢钢
出处: http://xugang.cnblogs.com
声明: 本文版权归作者和博客园共有。转载时必须保留此段声明,且在文章页面明显位置给出原文连接地址!

评论(0) 引用(0) 浏览(984)

Powered by emlog 苏ICP备11068260号-3