自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

原创 [Web 开发] 获取页面元素的坐标及大小

获取页面元素的位置坐标以及大小尺寸是Web开发中的常见问题。 这篇MSDN 文章 《Measuring Element Dimension and Location》 是非常好的资料,推荐读一下。 我把文中的示意图转帖在这里,便于参考:           

2009-05-05 08:29:00 4320 1

原创 [Web开发] 微软的 PHP+IIS+WinServer 开发培训资料/示例代码

下载网址:  http://go.microsoft.com/?linkid=9656081  内容: PHP & SQL Server Demos  Integrating SQL Server Geo-Spatial with PHP SQL Server Reporting Services and PHP PHP & SQL Server

2009-05-02 02:28:00 2337

原创 [Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较

C++中防止头文件被多次include 的常见方式有:1) 用#ifndef ...  #define ... #endif  宏 #ifndef __MYHEADER_H__#define __MYHEADER_H__ // Here is my class ... #endif  2) 用 #pragma once#pragma once// Here is

2009-05-02 02:03:00 2808 1

原创 [Windows编程] Windows 7 对多核的支持

Windows 7 和 Windows Server 2008 R2 一个重要更新是增强了对多核的支持。 现已可以支持超过64个逻辑处理器(也就是所谓的“核”),并且引入了NUMA 技术, 大幅度提高多核运算的性能。  传统的多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器与一个集中的存储器和I/O总线相连。所有处理器只能访问同一个物理存储器,

2009-04-29 02:58:00 4855 4

原创 [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口

从IE7 开始, IE 支持多页面(Tab)浏览。 而IE 的WebBrowser 控件也相应的多页面浏览开发接口。 出于向下兼容考虑,该接口在缺省情况下是被屏蔽的。 假设你用WebBrowser 控件开发一个浏览器 MyTabBrowser, 你会发现右键菜单的"在新标签页中打开" (Open in New Tab)项是灰色的(如下图)。   打开这个功能,你需要在注册表里面

2009-04-23 07:41:00 6359 5

原创 [IE编程] 多页面基于IE内核浏览器的代码示例

有不少人发信问这个问题,我把答案贴在这里: 建议参考 WTL (Windows Template Library) 的代码示例工程 TabBrowser  (在WTL目录/Samples/TabBrowser 下面)。该工程演示了如何用WTL + IE WebBrowser接口开发一个多Tab的IE内核浏览器, 并演示如何用ATL的IDispEventSimpleImpl监听DWebBrowser

2009-04-22 14:29:00 8542

原创 [Windows编程] 获取系统CPU 个数

随着多核CPU的普及, 程序中有必要考虑利用多核的优势来提高性能。 比如当创建线程池或者进程池的时候,可以根据系统CPU的个数来设定线程池/进程池的大小。  以下代码示例如何获取CPU的个数。  typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);DWORD GetNumberOfProcessors(){ SYSTEM_INF

2009-04-19 15:36:00 2940 1

原创 [IE编程] 如何获得IE版本号

程序中使用IE的WebBrowser 控件(MSHTML)或者开发BHO插件的时候,通常需要获得IE的版本号以便做不同处理。这里介绍2中获得IE版本号的方法: 1) 通过注册表IE的版本号信息放在注册表的: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/Version   注:64位机器的32位IE在 H

2009-04-18 08:50:00 4324 1

原创 [IE技巧] 使IE8以单进程的模式运行

IE8的一个重要特性就是每个Tab(选项卡)在独立的进程中运行,我们称之为LCIE (Loosely-Coupled IE)。 所以大家在升级到IE8之后会发现资源管理器里面有两个或者多个iexplore.exe进程。 LCIE 的好处在:1)某个Tab 崩溃(crash)之后不会影响其他Tab 和IE主窗口2)Tab 进程在Vista 和Windows 7 下面以 Low Int

2009-04-16 05:41:00 8734 7

原创 [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别

CRT (C Runtime) 的字符串函数就是我们常见的 strcmp, strchr, strstr 等等Windows 系统DLL shlwapi.dll  也提供了类似的字符串处理函数,只是大小写有所不同: StrCmp, StrChr, StrStr 等。 两者的区别在于:1) CRT  的字符串函数不支持 Unicode 字符串 (wchar_t)2) CRT  的

2009-04-15 04:43:00 3590 4

原创 [Windows编程] 使用API函数GetProcAddress的注意事项

Windows API 函数 GetProcAddress 被广泛用于取得函数指针地址。 例如: typedef BOOL (WINAPI *pfnGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD); pGPI = (pfnGetProductInfo) GetProcAddress(GetModuleHandleW(L"kern

2009-04-15 01:45:00 5273 4

原创 [Windows编程] 监视DLL装载/卸载

Windows 驱动开发库里面提供了函数 LdrRegisterDllNotification , LdrUnregisterDllNotification , 可以让你监视进程装载/卸载DLL 的事件。 当你想在某个DLL被加载的时候Hook它的函数; 或者当你想在某个DLL推出之前做一些保存清理工作; 或者当你想阻止某个DLL 被加载(比如外挂) .... 这个机制正可以派上用场 。 

2009-04-02 06:42:00 4942 2

原创 [IE编程] IE8的SDK 下载

IE8刚刚发布不久,目前的Windows SDK 或者 Visual Studio 2008 还没有包含IE8最新的头文件,IDL 和lib 文件等等, 需要去微软的网站下载 。 微软官方下载:Headers and Libraries for Windows Internet Explorer 8 ( http://www.microsoft.com/downloads/details.

2009-03-31 06:35:00 3420

原创 [Web开发] IE8的User-Agent 字符串

User-Agent字符串是服务器判断Web客户端的重要依据。 MSDN上有篇文章《Understanding User-Agent Strings》 很好,建议读一下。  以下列出IE8在不同Windows版本以及不同渲染模式下的User-Agent 字符串,便于参考。 IE8 on Windows Vista (兼容视图)Mozilla/4.0 (compatible;

2009-03-31 02:41:00 3168

原创 [IE编程] 了解Urlmon.dll和Wininet.dll

Windows 网络编程常用的API库有Winsock,Wininet 和 Urlmon。Winsock 实现了基本的套接字(socket)功能, 而 wininet 和 urlmon在winsock 的基础上封装了HTTP, FTP, WWW 的协议。 这篇文章 《Under the Hood: WinINet》(http://blogs.technet.com/askperf/archive/

2009-03-29 14:57:00 7095 1

转载 [Web开发] PSD 转换成HTML/CSS 的工具网站

很实用的网页设计工具: http://designmovesme.com/40-beautiful-slicing-websites/    

2009-03-29 14:55:00 4768

原创 [编程技巧] 巧用CPU缓存优化代码:数组 vs. 链表

 一个常见的编程问题: 遍历同样大小的数组和链表, 哪个比较快? 如果按照大学教科书上的算法分析方法,你会得出结论,这2者一样快, 因为时间复杂度都是 O(n)。 但是在实践中, 这2者却有极大的差异。   通过下面的分析你会发现, 其实数组比链表要快很多。 首先介绍一个概念:memory hierarchy (存储层次结构),电脑中存在多种不同的存储器,如下表CPU 寄存器 –

2009-03-28 07:33:00 3493 2

原创 [Windows编程] 如何判断操作系统是64位还是32位

64位Wnidows 里面有个叫Wow64 的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。 代码示例: SYSTEM_INFO si;GetNativeSystemInf

2009-03-27 03:11:00 7768 4

原创 WinDBG 技巧:设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)

WinDBG 提供了多种设断点的命令:bp, bu, bm, ba  bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)

2009-03-26 05:38:00 31787 2

原创 WinDBG 技巧:分析程序漏洞是否可以被利用 (!exploitable 命令)

微软在最近的CanSec West 发布了一个开源的WinDBG 插件 MSEC.dll , 该插件可以智能分析程序的漏洞是否可以被黑客利用。 可以去MSEC 开源项目的主页: http://msecdbg.codeplex.com/ 下载该插件。 解压之后,把  MSEC.dll 放到 WinDBG 安装目录的的 winext 子目录下。 启动WinDBG的之后, 使用 !load MS

2009-03-25 12:02:00 5339

原创 [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式

IE8 在渲染引擎做了很大的改动,新增加一个标准模式 (Standard Mode)。 不少软件都内嵌了IE的WebBrowser控件(也就是MSHTML.dll)来显示网页, 当用户机器升级到IE8, WebBrowser控件也会随之升级到IE8的渲染引擎。  为了保证这些使用WebBrowser控件的应用软件能够工作起来和原来一样,IE8的WebBrowser控件在默认情况下使用了IE

2009-03-25 07:58:00 9521 4

原创 [IE编程] 如何在IE8 下调试BHO控件/工具栏(调试Tab进程)

IE8 是每个Tab 一个独立进程, 而BHO/工具栏控件都是在Tab 进程里面被加载, 所以当你用debugger调试器调试IE主窗口是没有任何效果的。 请参考下面的IE8的进程模型结构图 (来自IEBlog) 。显然,我们调试 BHO控件/工具栏的时候,应该调试Tab 进程。    为了调试Tab进程,需要配置系统自动调试设置: 当IE的Tab进程被创建的时候, 系统自动把

2009-03-23 07:36:00 10663 4

原创 IE8 正式版(RTM) 的版本号: 8.0.6001.18702

如果之前安装过IE8  beta版本或者RC版本,可以对照一下版本号,看看是不是已经升级到正式版。 

2009-03-21 15:08:00 6049

原创 [IE技巧] 如何关闭Windows Server版IE的安全限制

Windows Server 上的IE 有严格的安全限制。 原因是服务器最重要的是稳定安全,一般情况下不应该用服务器来上网冲浪。 Server版IE 的安全限制叫做 IE ESC (Enhanced Security Configuration) ,微软的KB 文章有详细介绍: http://support.microsoft.com/kb/815141 或者下载微软官方的IE ESC文档。 

2009-03-21 07:24:00 6058 2

原创 [Web开发] Web开发者必读:《IE8 开发技术概述》

下载:《IE8 开发技术概述》(目前只有英文版本, 英文标题是《Internet Explorer 8 Technology Overview for Developers》) 这个文档简明扼要得介绍了IE8里面的新功能(Accelorator、Web Slices、Search)以及在渲染引擎(HTML,CSS, DOM, Javascript ... )、开发工具栏(Develop

2009-03-20 07:36:00 2158

原创 [Web开发] 快速修复网页在IE8 下的显示兼容问题

IE8在默认情况下是使用全新的标准模式(Standard Mode)显示引擎来显示网页。 如果网页代码还没有标准化, 在IE8下可能会显示不正常。 重写网页代码使之标准化的工作量很大,需要长时间慢慢修复。 一个简单快捷的方法就是让IE8继续IE7的显示引擎来显示你的网站,我们称这个旧的显示引擎为兼容视图(Compatibility View) 。  在网页里面加入这行代码就可以使IE8使用

2009-03-20 04:26:00 4864

原创 IE8 视频

了解IE8的新功能,可以观看IE8的官方视频( 需要安装Silverlight )http://www.microsoft.com/windows/internet-explorer/videos.aspx   今天在IE8发布会会上播放的“互联网历史”短片: http://www.microsoft.com/windows/internet-explorer/nethis

2009-03-20 02:16:00 1887

原创 IE8 正式版官方下载链接

 IE8 今天正式发布! 以下是IE8 简体中文版的官方下载连接 Windows XP  (http://download.microsoft.com/download/1/6/1/16174D37-73C1-4F76-A305-902E9D32BAC9/IE8-WindowsXP-x86-CHS.exe)Windows XP 64位 (http://download.micros

2009-03-20 01:41:00 7287 1

原创 [Windows 编程] 如何截获 Alt+Tab 事件

Windows 中 Alt + Tab 组合键被用来在各个程序之间切换。 因此,该键盘消息 (WM_KEYDOWN/UP) 是直接发给系统内核, 在应用程序中的消息循环中截获不到。  一个常见问题是,可是有的应用程序想在被Alt+TAB 切换到后台之间做点事情, 这时候该怎么办? 方案之一就是用底层的键盘钩子,截获整个系统的键盘输入。但这样做会导致一些效率以及稳定性问题。 另外一个

2009-03-19 09:01:00 3411

原创 [创业] 读书推荐:创业者必读的《Founders at work: Stories of Startups' Early Days》

该书是一本对 Apple、Adobe、Flickr、Gmail、Yahoo!、Hotmail、Lotus、PayPal、Lycos、37signal、…… 等著名IT公司创始人的访谈录集合, 重点放在这些公司刚刚起步阶段的故事——早期阶段正是创业公司最艰难也是最关键的阶段, 所以对想创业的,或者刚刚创业的人非常有指导意义。   该书访谈的创始人 : David Heinemei

2009-03-18 12:41:00 3531

原创 [IE技巧] 让IE 以全屏模式启动

IE 的命令行参数有几个很不错的功能,之前提到《使IE8以隐私保护模式启动》以及《如何让IE 启动的时候不加载任何插件》 都是命令行参数应用。 这里再介绍一个命令行参数 -k ,使用该参数可以使直接以全屏模式启动浏览。 示例:C:/Program Files/Internet Explorer/iexplore.exe -k  "http://blog.csdn.net/WinGeek

2009-03-14 14:12:00 5077 1

原创 [Windows编程] C++中 bool,BOOL ,VARIANT_BOOL 的区别

接上篇,继续讨论BOOL变量。 Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。 小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 false 也都是C++ 标准定义的关键字。  大写的BOOL 是Windows 里面定义的

2009-03-14 13:29:00 5509 1

原创 [编程技巧] C++中优化BOOL 变量的声明

通常我们会这样声明BOOL 变量: class CMyClass {...BOOL m_bVar1;BOOL m_bVar2;BOOL m_bVar3;BOOL m_bVar4;BOOL m_bVar5;BOOL m_bVar6;BOOL m_bVar7;BOOL m_bVar8;...};考虑到BOOL 变量在Win32 下其实是一个int ,占4个字节,那么上面8个BOOL变量就会占去

2009-03-14 08:05:00 2826 5

原创 [Web开发] 在线 Javascript 代码格式美化工具

尽管很多代码编辑器(比如visual studio)可以有格式美化代码的功能,但不如在线的小工具方便。 发现 http://jsbeautifier.org/ 很不错,简单快速。     

2009-03-10 02:09:00 1890

原创 WinDBG 技巧:显示进程/线程环境参数(!peb 和 !teb 命令)

首先介绍PEB和TEB概念: PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。 TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。调试的

2009-03-06 13:00:00 5724

原创 [IE技巧] IE8中HTTP连接数目的变化

国际标准RFC 2616(http://www.w3.org/Protocols/rfc2616/rfc2616.html)规定,客户端向服务器发起的并发HTTP连接数目应该有个上限。 如果是HTTP1.1连接, 最多不应该超过2个并发连接。 “Clients that use persistent connections SHOULD limit the number of simult

2009-03-06 06:40:00 2592 1

原创 [Web开发] 检测IE版本号的方法总结

检测浏览器(比如IE)的版本号码是Web 开发最常遇到的问题之一, 以下总结几种检测IE版本号码的方法: 通过Javascript解释浏览器的 User-Agent 字符串:function getInternetExplorerVersion()// Returns the version of Internet Explorer or a -1// (indicatin

2009-03-05 07:21:00 7354 3

原创 [IE编程] IE 是如何决定Accept-Language 属性的

Accept-Language 是HTTP 请求里面的一个属性,用于告诉服务器浏览器可以支持什么语言。 如果网站支持多语种的话,可以使用这个信息来决定返回什么语言的网页 。  示例: Accept-Language: zh-CN,fr-FR;q=0.5这里zh-CN 是表示中文,fr-FR 是表示法语。 这是RFC1766(http://www.ietf.org/rfc/rfc

2009-03-03 06:34:00 6663

原创 [Web开发] IE8中如何防御网站被Clickjacking攻击

Clickjacking (点击劫持)是近期新发现的一种浏览器攻击手段,危害极大。 黑客可以通过该方法控制用户的浏览器点击行为:用户点击链接、按钮或者网上任意的东西都可能被引导至其他地址。黑客可以利用"clickjacking"控制摄像头和麦克风,窥探用户隐私,在用户机器上植入病毒木马。  IE8 针对Clickjacking 增加对Clickjacking攻击的防御功能。 只要你的服务器

2009-03-03 03:42:00 2338 1

原创 Windows 7 的一些使用技巧

http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx  Windows 7 增加了不少快捷键, 试试看吧 :)  Win+Left Arrow and Win+Right Arrow Win+Up Arrow and Win+Down Arrow Win

2009-03-03 03:00:00 1397

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除