Posted in 2004
How To Detect If an Application Has Stopped Responding
- 31 December 2004
简介:本文描述了如何使用C++、VB、Windows API和.Net类库判断一个进程是否停止了响应。
没有一个明确的“停止响应”的定义,例如对于Internet Explorer或者Word 2000这样的多顶层窗口应用程序,可能存在部分顶层窗口失去响应的情况,这时很难定义应用程序是否停止了响应。但是一般来说,很多应用程序只有一个标志性窗口(或者叫主窗口)。如果主窗口在一段时间内不响应用户操作的时候,对于用户来说应用程序是停止响应的(例如在Internet Explorer等待远程FTP服务器返回登录结果时)。尽管这经常属于其他应用程序应该妥善考虑的范畴,但是如果自己的应用程序依赖于这样的程序而没有源代码级控制权,那么应该提供一个机会允许用户中断对外部应用程序的等待或者干脆终止外部应用程序。
Good Bye MFC?
- 12 December 2004
原文地址在https://web.archive.org/web/20041204071945/https://channel9.msdn.com/ShowPost.aspx?PostID=31152
起源是VC开发组的一个人的言论“MFC仅仅用于支持旧的代码,新的代码不应该用MFC编写,而是应该用C#或者Managed C++”
偶的CSDN收藏夹(大部分都是古董……)
- 17 November 2004
无界面的HTML分析器·分析网页中的表格/ http://community.csdn.net/Expert/topicview.asp?id=351580
如何载入非标准大小的图标并显示/ http://community.csdn.net/Expert/topicview.asp?id=638695
98年出的VC6看来也是和Win98一样日落西山了
- 11 November 2004
段落小题引用了《大话西游》中的若干段落,在此声明。
谁说我斗鸡眼?我只是把视线集中在一点以改变我以往对事物的看法
动态屏蔽Control+Alt+Delete(Update)
- 25 July 2004
我曾经编写过一篇关于动态屏蔽Control+Alt+Delete的文章。数月之后我把文章的英文修订版发在了CodeProject(https://web.archive.org/web/20081015201511/http://www.codeproject.com/system/preventclose.asp)。但是当时我并未发现代码在调试环境下崩溃的原因。在很长时间之后,我看到Antonio Feijao在他最近发表的一篇文章之中用C重写了这个代码,并且添加了一些注释说明了编译器设置可能出现的问题。我认为这篇文章对我的文章的读者也是很有用的,所以准备在我的文章中添加他的文章的链接。
文章介绍:
如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性
- 13 July 2004
111222的CSDN文档中心文章 用 MSHTML 的一点经验(https://web.archive.org/web/20051126180205/http://dev.csdn.net/develop/article/10/10456.shtm) 说明了如何访问在HTML文档对象模型中的网页的元素、内容。但是,有时候开发者实际上需要访问的是网页中ActiveX控件的属性、方法和事件。例如,你在网页载入之后需要修改/获取MediaPlayer的媒体源,以及控制MediaPlayer的播放。
为获得ActiveX控件的接口,我们需要访问文档对象模型。获得文档接口的方法多种多样,比如CHtmlView::GetHtmlDocument,IWebBrowser2::get_Document,IHTMLWindow2::get_document等等,参见111222的文档。这里我直接用一个函数GetDHtmlDocument表示获得这个接口的函数。你可以自己实现这个函数。
VC/MFC Q&A 200407
- 13 July 2004
问:自编浏览器进入一个网页后,点一个链接后系统自动调用用IE打开网页而不是用自身浏览器打开网页。如何让窗口用我自己的浏览器打开?
答:参考控制新的窗口。默认情况下,浏览器收到创建新窗口请求时,会在IE中打开新的窗口。你可以处理NewWindow2事件来在自己指定的窗口中打开请求的页面。
别了,北京 Time To Say Goodbye
- 07 July 2004
docs/blogs/2004/enable_autocomplete_forms_webbrowser_control.rst 今天把MSN昵称改成“别了,北京 Time To Say Goodbye”之后,询问的信息纷至沓来,这肯定是我的聊天工具最忙的一天,同时有人开始组织欢送计划——当然是计划掏我的腰包……。
“该走的总是要走的,一路顺风”。
在应用程序中集成浏览器控件(Update)(Subjet to change without notice)
- 06 July 2004
浏览器控件是一个提供浏览器绝大部分功能的ActiveX控件,随Microsoft? Internet Explorer 4.0(IE)或者更高版本发行。实际上,IE可以认为是一个集成浏览器控件的程序。
怎么给用户提供丰富的内容一直是程序员们努力的目标。尽管各种各样的界面库可能使你眼花缭乱,但是这些也是美工和程序员的恶梦——要自定义界面上的每个元素的外观并不是一件容易的事情,而且有时候需要比较复杂的技术,例如自定义程序中出现的滚动条的颜色。
饮鸩止渴
- 29 June 2004
CSDN的社区是免费的,做点广告本来是无可厚非;但是做到一个帖子上面两个大Flash加左边一大堆图片广告,开了五个帖子就把我的K7 700HZ 512M RAM搞死机就有点过头了……要是不禁用Flash很少人能上CSDN的话,广告还有什么效果?不是每个人都有P4的(顺便说一下,开了五个页面之后浏览器进程在偶刚买的P4本本上CPU占用率也没下过95%……开一个帖子在偶的K7上面也一样……)
在这里抱怨一下,希望尽快把那两个广告换成GIF什么的,不然偶不得不写个CSDN浏览器出来在浏览的时候砍掉所有图片和控件……
CSDN对BLOG用户可能期待过高了
- 29 June 2004
在没有普及网络礼节的情况下期待用户都会遵守礼貌是不现实的。
尽管CSDN的BLOG目前并无规则,但是不出意外,我还是看见有人发了这样一个BLOG
在应用程序中添加宏支持的注意事项 (Update)
- 27 June 2004
用笔记本用多了,PC键盘用起来不是很习惯了。
在我的一篇文章脚本化浏览器中描述了如何在应用程序中添加宏支持。在添加支持的时候需要注意的是,宏的运行环境——VBS脚本引擎——目前只支持变体数据类型。这造成的一个结果就是当你的应用程序触发一个事件的时候,如果其参数并不都是变体数据类型,那么你编写的宏不是总会被调用。解决的方法是总是声明你的事件参数为变体数据类型。
跨进程访问共享内存的权限问题
- 24 June 2004
问:
我在服务器上用 CreateFileMapping 创建了一段共享内存。让这个exe始终在服务器上跑。同时,别的用户在客户端用IE访问服务器,将要查询的数据通过C#制作的网页提交上来,服务器得到网页参数后,建立一个COM对象访问上一个exe的共享内存,然后将在共享内存中的查询结果返回给客户。问题是现在这个COM无法用openmapping访问exe的共享内存,提示 访问拒绝 。而我在服务器上随便建议一个工程编译成exe,文件就可访问这段共享内存!!为何在网页中就不成?COM难道要有什么权限设置.两个进程之间的权限整合方法是什么?怎么用DACL?
重新启动服务
- 23 June 2004
最近常去的论坛挂了,看起来是IIS进程系统资源占用太多了;服务器管理员又度周末去了,不能重启IIS,郁闷。CSDN服务器的IIS可能重启过于频繁了,分论坛页面经常来不及更新,自己发的帖子出现在列表里面的时候已经沉了,还是郁闷。
微软知识库文章Q194916 Restarting Web Services and Scheduled Tasks with a Batch File(https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/194916)中描述了定时用命令行重新启动IIS的方法,有想偷懒的网管可以试试。平台SDK中包含工具的SC.exe可以对服务进行更加详细的配置。
对话框数据交换 (Update)
- 14 May 2004
通常,简单的对话框不使用结构来存储成员数据。但是大量的简单类型的成员交换会使得代码繁琐。这时候可以使用结构来封装简单类型的数据,声明一个赋值操作符和修改DDX调用来简化数据交换代码。
例如在文档或者视图的命令处理函数中
WinForm
- 28 April 2004
今天一口气看完了WinForm Quick Start(http://samples.gotdotnet.com/quickstart/winforms/)
发现.Net使一切变得简单,以前需要大量代码的docking现在只需要一句话
VC6 with .NET CLR & Managed C++
- 28 April 2004
如何让你的VC6也可以写出mc++的程序是一个有挑战性的工作,不过看来MS对于解决这个问题似乎是手到擒来.通过下载一个名叫Microsoft Visual C++ Toolkit 2003 的软件,就可以实现这样的愿望。
访问这个了解更多:http://msdn.microsoft.com/visualc/vctoolkit2003/
编程删除IE历史
- 01 April 2004
明天出发去西雅图参加微软全球最有价值专家年会了,暂停更新一段时间。
在你调用IUrlHistoryStg:DeleteUrl 之后, 这个URL项目仍旧会出现在IE历史纪录目录中。
Visual Studio 6.0 Service Pack 6
- 01 April 2004
FIX: “Cannot Save File” Error Message in the Visual C++ IDE
https://web.archive.org/web/20040417095303/http://support.microsoft.com/default.aspx?kbid=822856
关于BLOG客户端的想法
- 26 March 2004
鉴于内容中使用自定义标签的RSS越来越多(比如这里的方括号和博客堂的HTML代码),BLOG内容提供者似乎应该提供一个XSL用来格式化<description>成为HTML内容,以便于BLOG客户端查看。
VC编程经验总结第一版完成
- 23 March 2004
该活动由bluebohe发起,CSDN网友积极参与,sgnaw (李逍遥)整理。发布之后反响强烈,但是很多人并未全部看完帖子就留下自己的邮件索取文件……其实下载地址就在第三个回复里面。
文件可以从这里下载 https://web.archive.org/web/20040405025034/http://bluebohe.go.nease.net/vc2004.chm
在浏览器中粘贴时替换剪贴板数据
- 20 March 2004
在某些时候,可能需要覆盖剪贴板的数据,例如过滤聊天时在输入窗口粘贴非文字格式的信息。对于浏览器控件的编辑模式,浏览器提供了IDocHostUIHandler接口来支持粘贴时提供一个替代的数据源来覆盖剪贴板的数据。下面的代码描述了如何过滤除了CF_TEXT之外的剪贴板格式
结合ADO、ADOX和MFC的文档/视图/框架架构创建和打开Access数据库
- 15 March 2004
本文描述了如何在MFC的文档/视图/框架架构中使用ADO和ADOX来创建和打开数据库。
在阅读本文之前,建议先对COM,数据库和MFC的文档/视图/框架有一个基本的了解。推荐阅读下列文章
列表视图自动KillTimer的问题
- 10 March 2004
来自http://expert.csdn.net/expert/Topicview2.asp?id=2751134的讨论。
可以参考Knowledge Base article Q200054: PRB: OnTimer() Is Not Called Repeatedly for a List Control。基本上ListView的默认消息处理是会调用KillTimer的,所以在处理你自己的Timer消息的时候不要调用默认的处理程序。
Ask Mr JS
- 10 March 2004
[url=http://community.csdn.net/expert/Topicview2.asp?id=2732377]xml 支持 模糊 查询吗?[/url]
可以用XPath来进行节点的选择
自定义在RichEdit中插入对象的图标
- 04 March 2004
方法基本同Knowledge Base文章Q220844 HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control (https://jeffpar.github.io/kbarchive/kb/220/Q220844/)
只是在最后插入之前调用一下IOleCache::SetData,用一个HGLOBAL作为参数,HGLOBAL里面的数据是一个METAFILEPICT结构,包含自己提供的图片
DAO拥有ADO/ADOx/JRO所没有的东西(也许从不会有!
- 27 February 2004
转自 http://www.trigeminal.com/usenet/usenet025.asp?2052
微软很清楚地把ADO定位为DAO的替换……许多微软的代理认为DAO 就是DOA(Dead On Arrival(到达即死),在美国,这是一个术语,用来描写那些希望获救的人在救护车刚到达,要抢救他们时,他们就死了)。然而,在DAO中,许多核心函数功能时被支持的,而ADO/ADOx/JRO 却不被支持,而且甚至可能从未被支持,因为微软似乎正把用户推向其他方向。而Jet本身不会“死”,很清楚,它不再是一个策略平台,所以,在Jet中,似乎不只是要有足够的兴趣使工作做得更有效了。 对于全记录,这里是一个DAO有而ADO没有的所有能力表:
使用IE5内建的进度对话框
- 12 February 2004
本来想自己写一个的,但是发现codeproject上面已经有了(https://web.archive.org/web/20000604080517/http://www.codeproject.com/miscctrl/iprogressdialog.asp)
下面是微软知识库里面的一个示例
CDHtmlDialog&NewWindow2
- 12 February 2004
Class ID Default Interface Default Event Interface —————– —————– ———————– CLSID_WebBrowser IWebBrowser2 DWebBrowserEvents2 CLSID_WebBrowser_V1 IWebBrowser DWebBrowserEvets
CDHtmlDialog捕获了DWebBrowserEvets事件,并将其转发到虚函数,而没有捕获DWebBrowserEvents2;所以在按Ctrl+N触发DWebBrowserEvents2事件的时候,执行默认操作——打开新的IE窗口。这可能不是你预料之中的行为。
让msxml4导出的文本xml缩进和换行
- 06 February 2004
[url=http://expert.csdn.net/expert/Topicview2.asp?id=2637982]讨论链接[/url] 问起过好多次的问题了,手头正好在做XML的生成,就写了一下 其实,缩进和换行就是文本,在需要的位置创建文本节点就可以了。另外一个方法就是用SAX来写
可以这么写出来
Serialziing IPicture by Memory Stream
- 06 February 2004
尽管很久没有用Serialize了,但是接手的工程的数据接口就是CArchive,……所以不得不写了一个IPicture数据到CArchive的接口
一个下午增加了一个功能……
在浏览器控件中启用自动完成功能
- 09 January 2004
自动完成功能在浏览器控件中默认是禁用的(但是没有任何文档提到这一点……),但是可以通过实现IDocHostUIHandler,在GetHostInfo方法中在填充DOCHOSTUIINFO结构的dwFlags成员时设置DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE标识位来启用。
关于如何实现IDocHostUIHandler,可以参考 https://web.archive.org/web/20030218020128/http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp ,示例工程在https://github.com/jiangsheng/Samples/tree/master/IEAutomation
分析MFC中的映射
- 05 January 2004
MFC中大量使用了BEGIN_XXX_MAP这样的宏,以及映射进行查找优化,例如消息映射,OLE命令映射,以及接口等等。每个映射包含一个指向基类的映射的指针。这样,当一个类需要根据一定的条件查找一个对象时,它会查找本类对象,如果没有找到,那么会查找基类,直到根基类。这类查找包含Windows消息,命令,事件和OLE命令的分发,和对象实现的接口的查询等等。
下面是函数BOOL CWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)的部分代码,演示了如何根据消息的ID查找处理函数。