flyingleaf's blog

象外行一样思考,象专家一样实践。

Google搜索技巧大全

coolbean | 25 九月, 2007 11:17

  自使用了GOOGLE之后,它便成为了我的最爱了。用到了现在也积累了一些经验。因为一般的使用大家肯定都会了,所以我也不再重复,我在这里就介绍介绍大家不知道的功能!

  要用GOOGLE搜索,当然首先要进GOOGLE网站;值得一提的是163.com和cn.yahoo.com使用的实际上也是GOOGLE搜索引擎,只是对搜索结果进行了编排,所以无法提供一些特色功能,如图片搜索等。第一次进入GOOGLE,它会根据你的操作系统,确定语言界面。需要提醒的是,GOOGLE是通过cookie来存储页面设定的,所以,如果你的系统禁用cookie,就无法对GOOGLE界面进行个人设定了。GOOGLE的首页很清爽,LOGO下面,排列了四大功能模块:网站、图像、新闻组和目录服务。默认是网站搜索。

 

 

 

 

 

 

 

  一、对搜索的网站进行限制

  “site”表示搜索结果局限于某个具体网站或者网站频道,如“sina.com.cn”、“edu.sina.com.cn”,或者是某个域名,如“com.cn”、“com”等等。如果是要排除某网站或者域名范围内的页面,只需用“-网站/域名”。

  注意:site后的冒号为英文字符,而且,冒号后不能有空格,否则,“site:”将被作为一个搜索的关键字。此外,网站域名不能有“http”以及“www”前缀,也不能有任何“/”的目录后缀;网站频道则只局限于“频道名.域名”方式,而不能是“域名/频道名”方式。诸如“金庸site:edu.sina.com.cn/1/”的语法是错误的。

  示例:搜索新浪文教频道中关于鲁迅的信息。
  搜索:“鲁迅 site:edu.sina.com.cn”
  结果:已在edu.sina.com.cn搜索有关 鲁迅的中文(简体)网页。共约有672项查询结果,这是第1-10项。搜索用时0.24秒。  (查看全文)

Google搜索技巧

coolbean | 25 九月, 2007 11:16

  这里有一些Google搜索引擎的基本搜索技巧以及高级技巧,你可能对其中大部分已经了解,但是如果你知道了另外的那一部分,它可能会给你将来的搜索过程带来很大的便利。

  1. 双引号可以用减号代替,比如搜索["like this"]与搜索[like-this]是一个效果

  2. Google不会处理一些特殊的字符,比如[#](几年前还不行,现在可以了,比如搜索[c#]已经可以搜到相应的结果),但是还有一些字符它不认识,比如搜索[t.]、[t-]与[t^]的结果是一样的

  3. Google允许一次搜索最多32个关键词

  4. 在单词前加~符号可以搜索同义词,比如你想搜索[house],同时也想找[home],你就可以搜索[~house]

  5. 如果想得到Google索引页面的总数,可以搜索[* *]

  6. Google可以指定数字范围搜索。搜索[2001..2005]相当于搜索含有2001、2002直到2005的任意一个数的网页

  7. 搜索[define:css]相当于搜索css的定义,这招对想学习知识的人很有效;也可以用[what is css]搜索;对中文来说,也可以用[什么是css]之类的

  8. Google有一定的人工智能,可以识别一些简单的短语如[when was Einstein born?]或[einstein birthday]

  9. 通过[link:]语法,可以寻找含有某个链接的网页,比如[link:blog.outer-court.com]将找到包括指向 blog.outer-court.com超级链接的网页(最新的Google Blog Search也支持这个语法),但是Google并不会给出所有的包含此链接的网页,因为它要保证pagerank算法不被反向工程(呵呵,可以参见那两个Google创始人关于pagerank的论文,可下载)

  10. 如果在搜索的关键词的最后输入[why?],就会在结果中出现链接到Google Answers的链接http://answers.google.com ,在里面可以进行有偿提问

  11. 现在出现了一种兴趣活动,叫做Google Hacking,其内容是使用Google搜索一些特定的关键词,以便找到有漏洞的、易被黑客攻击的站点。这个网站列出了这些关键词:Google Hacking Database( http://johnny.ihackstuff.com/index....ule=prodreviews )

  12. 在Google 中输入一组关键词时,默认是“与”搜索,就是搜索包含有所有关键词的网页。如果要“或”搜索,可以使用大写的[OR]或 [|],使用时要与关键词之间留有空格。比如搜索关键词[Hamlet (pizza | coke)],是让Google搜索页面中或页面链接描述中含有Hamlet,并含有pizza与coke两个关键词中任意一个的网页。

  13. 并非所有的Google服务都支持相同的语法,比如在Google Group中支持 [insubject:test]之类的主题搜索。可以通过高级搜索来摸索这些关键词的用法:进入高级搜索之后设置搜索选项,然后观察关键字输入窗口中的关键字的变化

  14. 有时候Google懂得一些自然语言,比如搜索关键词[goog], [weather new york, ny], [new york ny]或[war of the worlds],此时Google会在搜索结果前显示出一个被业内称为“onebox”的结果,试试看吧!

  15. 并非所有的Google都是相同的,它因国家版本(或是说语言版本)而异。在US版下,搜索[site:stormfront.org]会有成千上万的结果,而在德语版下,搜索[site:stormfront.org]的结果,嗯,自己看吧。Google的确与各国政府有内容审查协议,比如德国版,法国版(网页搜索),中国版Google新闻

  16. 有时候Google会提示你搜索结果很烂,比如你搜索关键词[jew]试试,Google会告诉你它给出的搜索结果很烂,然后给你一个解释:http://www.google.com/explanation.html

  17. 以前,搜索某些关键词如[work at Google] 时会看到Google给自己打的广告。可以去http://www.google.com/jobs/了解Google的工作

  18. 对于一些“Googlebombed”(大概意思是指Google搜索的结果出问题了)的关键词,会有一个广告链接到:http: //googleblog.blogspot.com/2005/09/googlebombing-failure.html (中国大陆需要代理才能访问)。比如搜索[failure],第一条是美国布什总统介绍

  19. 虽然现在Google还没有支持自然语言,但这里有一段录像显示了支持自然语言的搜索引擎的使用效果:http://blog.outer-court.com/videos/googlebrain.wmv

  20. 有人说在Google中搜索[president of the internet],其结第一条表明了president of the internet是谁,我也是这么认为的,而且你还可以使用这个logo支持本文作者:http://blog.outer- court.com/files/president.gif

  21. Google现在不再有“stop words”(被强制忽略的关键词),比如搜索 [to be or not to be], Google返回的结果中间还列有相关的完整短语搜索结果

  22. 在Google 计算器(http://www.google.com/help/features.html#calculator )中有个彩蛋:输入[what is the answer to life, the universe and everything?]时,会返回42。(关键词翻译过来的意思是指“生命、宇宙和一切的答案”,这是一个著名科幻小说中的情节,详情参见http: //en.wikipedia.org/wiki/The_Answer_to_Life,_the_Universe, _and_Everything)。试试吧,哈哈

  23. 你可以在搜索时使用通配符[*],这在搜索诗词时特别有效。比如你可以搜一下["love you twice as much * oh love * *"] 试试

  24. 同样,你的关键词可以全部都是通配符,比如搜索["* * * * * * *"]

  25. www.googl.com是在输错网址后的结果,也是个搜索网站,但搜索结果与Google完全不同。而且此网站也赚Google的钱,因为它使用Google AdSense

  26. 如果你想把搜索结果限制在大学的网站之中,可以使用[site:.edu]关键词,比如[c-tutorial site:.edu],这样可以只搜索以edu结尾的网站。你也可以使用Google Scholar来达到这个目的。也可以使用[site:.de]或[site:.it]来搜索某个特定国家的网站。

linux sed 批量替换多个文件中的字符串

coolbean | 24 九月, 2007 15:03

一、linux sed 批量替换多个文件中的字符串

sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cn

sed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grep www.bcak.com.cn -rl /home`

 

 

二、下面这条命令:
perl -pi -e 's|ABCD|Linux|g' `find ./ -type f`
将调用perl执行一条替换命令,把find命令找到的所有文件内容中的ABCD替换为Linux

find ./ -type f
此命令是显示当前目录下所有的文件

上面的“s|ABCD|Linux| g”是perl要执行的脚本,即把所有ABCD替换为Linux
如果不写最后的那个g,“s|ABCD|Linux| ”将只替换每一行开头的ABCD

FreeBSD/Linux下各种查找替换字符串的办法

coolbean | 24 九月, 2007 14:54

在Freebsd下我们常常要进行字符串的查找替换,有在vim编辑器里面进行的,也有在shell下进行的,这样的事情常遇到,但是每次都会感到有些概念模糊,尤其对类似awk、sed、grep、find等命令的具体参数使用问题上老是糊涂,下面收集几个常用的方法,实在不能理解就死记算了!

1、在vi中使用的查找替换方法
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

2、在shell中使用find结合grep进行文件的替换
# find ./ -exec grep str1 ‘{}’ ; -exec sed -i.bak s/str1/str2/g ‘{}’ ;
上面命令可以在当前目录下(包括子目录)查找包含str1的文件,自动替换成str2,并且生成源文件的bak文件。

十大已亡或正在灭亡的电脑技术,C入选

coolbean | 23 九月, 2007 07:25

来自Computerworld  很难说这些技术真的灭亡了,因为他们至今还存在于某些领域。实际上,说一种技术灭亡的过程也正是寻找它生命力依旧的过程。在经过仔细的权衡后,我们列出下面这个名单,注意只是相对的而不是绝对的。

1.Cobol:Y2k(千年虫)好像给了Cobol一次新机遇,然而仅仅六个月到一年的时间,这门衰退的语言便再无救世主,与此同时,也极少有学校再开这门课。

2.Nonrelational DBMS:20世纪80年代,主要有两大数据库管理系统方式:一是多级递阶系统(hierarchical systems)如IBM的IMS,另一种就是network DBMS,像当初的OracleDBMS。然而今天二者都已被关系型数据库管理系统所取代,像DB2, Oracle and Microsoft SQL Server。

3.Non-IP networks:TCP/IP已经基本统治了网络世界,由此同时,人们对IBM SNA (Systems Network Architecture)的需求也越来越少。尽管现在仍有许多银行、保险公司在SNA网络方面投资,然而在整个网络投资方面的比例已经很小很小。

4.cc:Mail:这一基于LAN存储转发的e-mail系统始于80年代初,曾达到两千万的使用人数。然而当更复杂的邮件系统如Lotus Notes 和Microsoft Exchange出现的时候,它便迅速末落了。

5.ColdFusion:曾经流行的网页设计语言,由Allaire公司在上世纪90年代中期推出。曾经关于ColdFusion是否灭亡的争论也已平息,因为现在已经是.Net,Java,Ruby on Rails,Python,PHP的天下。

6.C语言:随着Web时代的来临,C 语言跟这个时代越来越没关系。“C++和C#仍然矫健着,但如果你想找一个纯C语言的程序员,要么他失业,要么他正在学习一门新语言。”

7.PowerBuilder:美国Powersoft公司于90年代初推出的基于客户/服务器体系结构的面向对象的数据库开发工具,后被Sybase收购,还记得它当初有多热吗? 被视为Oracle的竞争对手。然而现在PowerBuilder程序员处于需求的最底层。不过预计今年推出的PowerBuilder 11已经可以生成.NET代码。

8.Certified NetWare Engineers:90年代成为一位Certified NetWare Engineer是很时髦的事,一度让Novell在PC服务业占据90%的市场份额。然而两年的时间人们便转向了NT。“就像一夜之间发生的一样。”

9.PC network administrators:越来越多的人转到Windows servers,network administrators(网络管理员)的需求越来越少。

10.OS/2:最初由微软和IBM联合在1987年隆重推出,然而不久合作破裂,IBM在经过一段时间为OS/2的消亡辟谣之后,还是在2005年终止了销售。现在OS/2还是有一个专门的社区,这款开放的操作系统仍被一家叫Serenity Systems International 的公司以eComStation的名字销售。

黑客侵入网上银行个人账户盗走16万

coolbean | 23 九月, 2007 07:19

  6个月前,31岁的黑客白永春坐在昆明家中,敲击键盘,攻入上海蔡先生网上银行个人账户,盗走16万元。前天,卢湾区法院首次审判了一起网上盗窃案。

  放弃自我辩护

  你见过黑客吗?你想象中的黑客是什么模样?白永春就是一名黑客,云南大学本科毕业,曾在昆明一家科技公司工作。

  被告席上,白永春看起来有点木讷。回答审判长提问的时候,他的右手不停地摩挲左手臂,云南玉溪口音浓重,不少音节略过,让他的话时而清晰时而含糊。不过,法庭上,他很配合,承认了所有指控;审判长问他是否需要自我辩护,他说不要。

  但就是他,不到一个月就攻破了六七家网站,随时窥视十五六台电脑的操作者的一举一动。“这让我很有成就感,在我们黑客看来,侵入网站、操控多个服务器才算有成就。”在笔录里,白永春这样说。

  下载黑客软件

  白永春说,母亲生病,女朋友也生病,自己月薪虽有2000多元,但还不够给她们治病,于是想上网偷盗来钱会比较快。

  “如果自己编写一套木马程序,差不多要1年多,从网上下载就方便多了。”白永春说,今年初,他上了一个黑客网站,正有人在发帖推荐木马程序的网址,他赶紧跟帖,没过多久就下载了“灰鸽子2006vip破解版”等黑客软件。然后,他用这些软件攻击了六七家网站。被害人蔡先生浏览了被攻击的网页后,电脑就自动植入了“灰鸽子”等黑客程序。

  “十五六台电脑都中了木马
病毒,那些人在电脑上做些什么,我随时能看到。有一天,我看见被害人蔡先生的个人账户里竟有19万元,就打算偷了。”此后,白永春远程控制了蔡先生网上银行的账号、密码,以及电子认证证书。

  冒名转账取钱

  白永春在人才市场捡到一份“郭荣华”的个人简历资料,靠街头黑广告牵线搭桥,制作了一张假身份证,到银行为“郭荣华”开设账户。然后,他又回到网络世界,用被害人蔡先生的网上银行信息登录后,转账十多次,一共偷盗了16万元,再用“郭荣华”的身份去银行取钱。

  前天的庭审很简短,审判长宣布择日宣判。时常行走在现实与虚拟之间的黑客白永春,驾御一套木马程序,跨过了守法的底线,面临着一段牢狱生涯。

RAID磁盘阵列技术及数据恢复原理

coolbean | 19 九月, 2007 18:09

目前人们逐渐认识了磁盘阵列技术。磁盘阵列技术可以详细地划分为若干个级别0-5 RAID技术,并且又发展了所谓的 RAID Level 10, 30, 50的新的级别。RAID是廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称。用RAID的好处简单的说就是:安全性高,速度快,数据容量超大。
某些级别的RAID技术可以把速度提高到单个硬盘驱动器的400%。磁盘阵列把多个硬盘驱动器连接在一起协同工作,大大提高了速度,同时把硬盘系统的可靠性提高到接近无错的境界。这些“容错”系统速度极快,同时可靠性极高。

 (查看全文)

网络三维应用技术VGS引擎,世界领先的中国技术

coolbean | 18 九月, 2007 17:11

网络三维开发软件免费发放中.... 注:正式版本即刻发放,压缩比更高、互动性更强、画面质量更好,永久免费 http://www.web3dmax.com 随着互联网技术的发展,平面网站的制作,利润越来越底,面对如此的市场趋势,难道您不想在自己最善于、最了解、最有资源的行业焕发“第二春”?三维网络技术的出现,让你打开行业赢利瓶颈,让您在面对泱泱的同类公司中,增加项目数量,提高制作费用, 抢先挖掘一块巨大的市场蛋糕!上海创图三维网络开发软件无功能限制,免费发放正在进行…… 软件介绍:WEBMAX,国内第一个款完全自主知识产权的三维网页开发软件,弥补了国内三维网页技术这一空白领域。使用它可以轻轻松松地制作虚拟现实作品,快速地往互联网上传作品。凭借本土化,人性化的技术设计,刚一发布就在业内引起了成千上万的专业设计师的追捧,激起了强烈的行业追踪热度。基于以VGS技术为核心的三维演示技术,WebMax开发的三维网页无需下载,只需输入网址,家用配置电脑即可直接在互联网上轻松浏览三维互动内容,高效的运行速度、强大的压缩比让网络环境要求能达到甚至低于FLASH。 部分案例欣赏 轻轻一点,身临其境用户只要在浏览器(如IE)中输入网址,就可以在网上浏览三维动画及互动了。第一次浏览二维互动页面Flash需要下载Flash player;同样,第一次浏览三维互动页面Vgs需要下载Vgs player。
网上三维看车网通:http://www.suntoward.bj.cn/VGSShow/Product/Car/Car.htm
电信:http://www.suntoward.com/VGSShow/Product/Car/Car.htm
牺尊三维展示 http://www.suntoward.com/VGSShow/Museum/SHMuseum/X IZUN/XIZUN.htm
更多作品尽在 WWW.WEB3DMAX.COM WWW.SUNTOWARD.COM WWW.WEB3DONLINE.COM
公司介绍:上海创图网络科技发展有限公司是世界领先的三维网页系统技术开发商,其研发的三维网页系统技术,经国家科技部和中科院论证,给予了“国际领先、国内唯一”的高度评价。 上海创图经过三年多来的潜力研发和努力,不管付出多大的代价,立志成为整个三维网络行业“技术开发服务提供商”,让自己的技术成为Web3D(三维网络)全球技术标准招商对象:区域独家代理:有志于Web3D(三维网络)行业发展的实力公司加盟,一起开创互联网发展的新篇章、新纪元。达成代理合作后,由上海创图科技发展有限公司授权代理商进行当地的市场开拓推广及营销等。同时,我们将在以下方面提供支持: 1.专业的项目小组保障技术维护和技术更新。 2.统一使用VGS技术和创图品牌,销售创图产品。 3.协助当地代理商的市场推广和技术培训。 4.定期组织各地的代理运营商聚集会议,进行商业动作信息的互换沟通交流。招商条件:1、工商局正式注册的企业,有一定的资金实力。 2、在当地拥有一支良好的运营团队及丰富的社会资源。 3、确保创图技术在当地商业运营的开展及推广。 联系方式:地址:中国上海长宁区金钟路658号东华大学科技园16号楼2层 邮编:200335 招商部:021-61506003 转848 刘明:一三六36478728 FAX:021-33600045 E-mail:liuming # suntoward.com ( # 换成 @ ) QQ: 178092788 MSN: liuming # suntoward.com ( # 换成 @ ) http://www. suntoward.com 下载WEBMAX代理商申请登记表

索尼机器狗的开源接班人

coolbean | 18 九月, 2007 17:07

索尼公司的AIBO机器狗已经停产,德国Technische理工大学开发的四脚机器宠物则很有希望成为AIBO的接替者。机器人可使用Linux和Windows CE操作系统,头部装有彩色摄像头,配有AMD-Geode-LX800 500 MHz 32位处理器,256 MB(可扩展到1G)DDR-SODIMM主存储器,PC104电路板。开发者并没有公开表示开源,但称其为“开放性,模块化,可配置性的硬件和软件”。他们希望在2007年底开始销售,售价4800美元左右。开发者把这种机器人的命名为"New Four-Legged Robot"或简写"New4LR"。更多图片和视频可浏览官方网站。"

2007微型软件公司调查

coolbean | 18 九月, 2007 17:05

在著名的软件开发论坛Joel on Software上经常有一些诸如“销售情况怎么样?”,“你写哪些应用程序?”,“总共有多少次下载?”这样的问题。恐怕每个软件公司都会面临这样的事情。在国内,软件开发公司的情况比较困难,商业软件有盗版,开源软件不赚钱,最后还是回归到广告上了。看看国外的调查结果,有一定的参考意义。

支持将“中国教师节”定于孔子诞辰日(9月28日)!

coolbean | 17 九月, 2007 13:13

日前,有部分全国政协委员曾经提议:鉴于联合国教科文组织的世界教师节、美国、中国台湾和香港的教师节,都是统一在孔子诞辰日(9月28日),建议国家教育部也应该把这一天与台湾、香港统一定为“中国教师节”。其理由:从文化、教育的角度来分析,以往所定的中国教师节(9月10日)尚未确定与我国的历史文化有任何渊源关系?我认为这一提议非常好,值得投赞成票!

教育部新出台规定:教师即将加薪10%

coolbean | 17 九月, 2007 12:18

题引:在广大教师基本工资基础上,包括岗位工资和薪级工资,中小学教师都提高了10%,每个人都会享受这10%的待遇。另外还规定了新的大学毕业生到农村任教、当老师的可以高定一到两个薪级,这对到农村去的老师而言是一种激励和引导。

在教育部新出台的规定中,终于又听到了给教师加薪的规定。这对于成千上万的普通教室,无疑是好的消息,而在第23个教师节公布这一规定,无疑又是送给广大教师们最好的节日礼物,为教师加薪,一方面体现了社会对教师们的关注,另一方面也是我国对教育事业更加重视的一大体现。

在过去的时间里,经常能听到教师们普遍抱怨待遇偏低的问题,更有许多老师,因此而走上弃教从商的道路。此外,随着诸多私立学校的出现,因为教师待遇的不同,也出现了很多教师“跳槽”的事件,这在一定程度上,对我国教育事业的发展,会起到负面的影响。

记得看到过这样一则报道,有一家双教师的家庭,因为孩子上大学,负担过重,以至于两人不得每天晚上都要去摆地摊,增加一些额外收入。在沉重的经济负担面前,教师这一行业,竟然成了我国最不稳定的行业之一。

随着对教育事业的不断加大投入,和对教师们待遇的不断提高,广大的教育工作者才开始真正的喜欢自己的行业。毕竟,在市场经济的大潮下,作为一项看似很普通的职业,对中国的未来却有这直观重要的作用。增加教师们对本行业的兴趣和投入,无疑是提高教育水平的最佳方式。

加薪,虽然只有相对的10%,但对于广大的教师们,这10%意味着很多难题都将被化解,这10%意味着又将有很多优秀的教育工作者涌现出来。所以,不得不说,加薪,才是教师节送给教师们的最好礼物。

使用Visual Basic 6实现真正的多线程处理(Multi Threads)

coolbean | 13 九月, 2007 17:40

使用Visual Basic 6实现真正实用的多线程处理
事实上使用Visual Basic的ActiveX exe技术可以轻松的实现多线程处理.

原理先不说了,先举个示例,有兴趣的话大家可以一起讨论

1.新建一个工程,类型选择ActiveX Exe,工程重命名为TestExe
在工程中添加一个Form,放上一个Timer控件.
将Class1改名为clsTest,注意其Instancing要设置为5-MultiUse, 以下是其代码:

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private WithEvents oTimer As Timer
Private frmTmp As Form1
Private lTotalLoop As Long
Private bDoStop As Boolean
Private lInterval As Long

Public Event Progress(ByVal lProgress As Long)


Public Sub StartSub(ByVal lTotal As Long)
    lTotalLoop = lTotal
    oTimer.Enabled = True
End Sub

Public Sub StopSub()
    bDoStop = True
End Sub

Private Sub Class_Initialize()
    Set frmTmp = New Form1
    Load frmTmp
    Set oTimer = frmTmp.Timer1
    oTimer.Enabled = False
    bDoStop = False
    lInterval = 1
End Sub

Private Sub DoLoop()
    Dim i As Long
    For i = 0 To lTotalLoop
        Sleep (lInterval)
        RaiseEvent Progress(i)
        
        If bDoStop = True Then
            Exit Sub
        End If
        
    Next
End Sub

Private Sub Class_Terminate()
    Unload frmTmp
    Set frmTmp = Nothing
    Set oTimer = Nothing
End Sub

Private Sub oTimer_Timer()
    oTimer.Enabled = False
    DoLoop
End Sub

Public Property Get lMillisecs() As Long
    lMillisecs = lInterval
End Property

Public Property Let lMillisecs(ByVal vNewValue As Long)
    lInterval = vNewValue
End Property


在TestExe Property(工程属性)的Threading Model中,设置Thread per Object,或者选择Thread pool中设置大于1的数值.如把Thread pool设置为2, 则调用此ActiveX Exe最多能同时有两个线程, 更多的请求将放置于队列中.
编译TestExe


下面来测试我们的多线程程序:

 (查看全文)

Show and Hide a Form's Titlebar at run-time

coolbean | 10 九月, 2007 02:16

This tip shows you how to show and hide the title bar of a window at run-time. To make a window's title bar disappear, you have to remove the control box, the maximise box and the minimise box as well as set the caption of the form to blank. Unfortunately, VB's ControlBox, MinButton and MaxButton properties of a form are read-only so you can normally only do this at design time. However, by manipulating the style of the window using API calls, you can get the same thing to happen at run-time.

Start a new project in VB. Add the following code to the project's form:

Private Declare Function SetWindowLong Lib "user32" _
   Alias "SetWindowLongA" _
   (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
Private Declare Function GetWindowLong Lib "user32" _
   Alias "GetWindowLongA" _
   (ByVal hwnd As Long, ByVal nIndex As Long) As Long 
Private Const GWL_STYLE = (-16) 
Private Const WS_CAPTION = &HC00000 ' WS_BORDER Or WS_DLGFRAME 
Private Const WS_MAXIMIZEBOX = &H10000 
Private Const WS_MINIMIZEBOX = &H20000 
Private Const WS_SYSMENU = &H80000 

Private Declare Function SetWindowPos Lib "user32" _
      (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
      ByVal x As Long, ByVal y As Long, _
      ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 
Private Enum ESetWindowPosStyles 
    SWP_SHOWWINDOW = &H40 
    SWP_HIDEWINDOW = &H80 
    SWP_FRAMECHANGED = &H20 ' The frame changed: send WM_NCCALCSIZE 
    SWP_NOACTIVATE = &H10 
    SWP_NOCOPYBITS = &H100 
    SWP_NOMOVE = &H2 
    SWP_NOOWNERZORDER = &H200 ' Don't do owner Z ordering 
    SWP_NOREDRAW = &H8 
    SWP_NOREPOSITION = SWP_NOOWNERZORDER 
    SWP_NOSIZE = &H1 
    SWP_NOZORDER = &H4 
    SWP_DRAWFRAME = SWP_FRAMECHANGED 
    HWND_NOTOPMOST = -2 
End Enum 

Private Declare Function GetWindowRect Lib "user32" ( _
      ByVal hwnd As Long, lpRect As RECT) As Long 
Private Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 

Private Function ShowTitleBar(ByVal bState As Boolean) 
Dim lStyle As Long 
Dim tR As RECT 

   ' Get the window's position: 
   GetWindowRect Me.hwnd, tR 

   ' Modify whether title bar will be visible: 
   lStyle = GetWindowLong(Me.hwnd, GWL_STYLE) 
   If (bState) Then 
      Me.Caption = Me.Tag 
      If Me.ControlBox Then 
         lStyle = lStyle Or WS_SYSMENU 
      End If 
      If Me.MaxButton Then 
         lStyle = lStyle Or WS_MAXIMIZEBOX 
      End If 
      If Me.MinButton Then 
         lStyle = lStyle Or WS_MINIMIZEBOX 
      End If 
      If Me.Caption <> "" Then 
         lStyle = lStyle Or WS_CAPTION 
      End If 
   Else 
      Me.Tag = Me.Caption 
      Me.Caption = "" 
      lStyle = lStyle And Not WS_SYSMENU 
      lStyle = lStyle And Not WS_MAXIMIZEBOX 
      lStyle = lStyle And Not WS_MINIMIZEBOX 
      lStyle = lStyle And Not WS_CAPTION 
   End If 
   SetWindowLong Me.hwnd, GWL_STYLE, lStyle 

   ' Ensure the style takes and make the window the 
   ' same size, regardless that the title bar etc 
   ' is now a different size: 
   SetWindowPos Me.hwnd, _
       0, tR.Left, tR.Top, _
       tR.Right - tR.Left, tR.Bottom - tR.Top, _
       SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED 

   Me.Refresh 

   ' Ensure that your resize code is fired, as the client area 
   ' has changed: 
   Form_Resize 

End Function 

To try out the hiding and showing the title bar, add a CheckBox to the project's form. Set the check box's Value property to 1 (Checked). Then put the following code under the Check box's click event:

Private Sub Check1_Click() 
    If (Check1.Value = Checked) Then 
        ShowTitleBar True 
    Else 
        ShowTitleBar False 
    End If 
End Sub 

When you click on the check box, the form's titlebar will be alternately hidden and shown.

System Internet Connection - Determining How and If Connected

coolbean | 10 九月, 2007 02:11

If you are designing a project which can use an Internet connection, it can be useful to know whether the system is connected or not. There are various methods of doing this, however the most informative and reliable method is to use the WinInet.DLL InternetGetConnectedStateEx API call. The only problem with this call is it is only implemented for the WinInet.DLL version shipped with Internet Explorer version 4.0 or higher.

To test out this function, start a new project and add the following code:

Public Declare Function InternetGetConnectedStateEx Lib "wininet.dll" _
   Alias "InternetGetConnectedStateExA" _
   (ByRef lpdwFlags As Long, _
   ByVal lpszConnectionName As String, _
   ByVal dwNameLen As Long, _
   ByVal dwReserved As Long _
   ) As Long

Public Enum EIGCInternetConnectionState
   INTERNET_CONNECTION_MODEM = &H1&
   INTERNET_CONNECTION_LAN = &H2&
   INTERNET_CONNECTION_PROXY = &H4&
   INTERNET_RAS_INSTALLED = &H10&
   INTERNET_CONNECTION_OFFLINE = &H20&
   INTERNET_CONNECTION_CONFIGURED = &H40&
End Enum

Public Property Get InternetConnected( _
     Optional ByRef eConnectionInfo As EIGCInternetConnectionState, _
     Optional ByRef sConnectionName As String _
   ) As Boolean
Dim dwFlags As Long
Dim sNameBuf As String
Dim lR As Long
Dim iPos As Long
   sNameBuf = String$(513, 0)
   lR = InternetGetConnectedStateEx(dwFlags, sNameBuf, 512, 0&)
   eConnectionInfo = dwFlags
   iPos = InStr(sNameBuf, vbNullChar)
   If iPos > 0 Then
     sConnectionName = Left$(sNameBuf, iPos - 1)
   ElseIf Not sNameBuf = String$(513, 0) Then
     sConnectionName = sNameBuf
   End If
     InternetConnected = (lR = 1)
End Property

To try out the code, add a CommandButton and a Multi-Line TextBox to your test project's main form. Then add the following code to try the function:

Private Sub Command1_Click()
Dim eR As EIGCInternetConnectionState
Dim sMsg As String
Dim sName As String
Dim bConnected As Boolean

   ' Determine whether we have a connection:
   bConnected = InternetConnected(eR, sName)

   ' The connection state info parameter provides details
   ' about how we connect:
   If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
     sMsg = sMsg & "Connection uses a modem." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
     sMsg = sMsg & "Connection uses LAN." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
     sMsg = sMsg & "Connection is via Proxy." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
     sMsg = sMsg & "Connection is Off-line." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
     sMsg = sMsg & "Connection is Configured." & vbCrLf
   Else
     sMsg = sMsg & "Connection is Not Configured." & vbCrLf
   End If
   If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
     sMsg = sMsg & "System has RAS installed." & vbCrLf
   End If
   
   ' Display the connection name and info:
   If bConnected Then
     Text1.Text = "Connected: " & sName & vbCrLf & vbCrLf & sMsg
   Else
     Text1.Text = "Not Connected: " & sName & vbCrLf & vbCrLf & sMsg
   End If

End Sub

Run the project. When you click the command button, the text box will be updated with the status of the current connection, the name of RAS dial-up connection used (if applicable) and also various information about how the connection is being achieved (i.e. by modem or LAN, via a proxy and whether the connection is configured or not).

 
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by LifeType - Design by BalearWeb