<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[理想与现实]]></title>
<link>http://www.10w8.com/blog/</link>
<description><![CDATA[人生能有几回搏]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[MKDuse@email.com(MKD)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>理想与现实</title> 
	<url>http://www.10w8.com/blog/images/logos.gif</url> 
	<link>http://www.10w8.com/blog/</link> 
	<description>理想与现实</description> 
</image>

			<item>
			<link>http://www.10w8.com/blog/default.asp?id=84</link>
			<title><![CDATA[WinExec, ShellExecute, Cr&#101;ateProcess]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Wed,07 Jan 2009 14:29:16 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=84</guid>	
		<description><![CDATA[ WinExec, ShellExecute, Cr&#101;ateProcess<br/>使用WinExec命令<br/><br/>　　⑴　函数原型：<br/><br/>UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);<br/><br/>　　⑵　参数：<br/><br/>　　lpCmdLine：指向一个空结束的字符串，串中包含将要执行的应用程序的命令行（文件名加上可选参数）。<br/><br/>　　uCmdShow：定义Windows应用程序的窗口如何显示，并为Cr&#101;ateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。<br/><br/>　　⑶　返回值：<br/><br/>　　若函数调用成功，则返回值大于31。若函数调用失败，则返回值为下列之一：<br/><br/>　　①　0：系统内存或资源已耗尽。<br/><br/>　　②　ERROR_BAD_FORMAT：EXE文件无效（非Win32.EXE或.EXE影像错误）。<br/><br/>　　③　ERROR_FILE_NOT_FOUND：指定的文件未找到。<br/><br/>　　④　ERROR_PATH_NOT_FOUND：指定的路径未找到。<br/><br/>　　虽然Microsoft认为WinExec已过时，但是在许多时候，简单的WinExec函数仍是运行新程序的最好方式。简单地传送作为第一个参数的命令行，还需要决定如何显示程序（该程序也许会忽视它）的第二个参数。通常，将其设置为SW_SHOW，也可尝试SW_MINIMIZED或 SW_MAXIMIZED。WinExec不允许用Cr&#101;ateProcess获得的所有选项，而它的确简单。<br/><br/>　　使用ShellExecute命令<br/><br/>　　⑴　函数原型：<br/><br/>HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);&nbsp;&nbsp;<br/><br/>　　⑵　参数：<br/><br/>　　hwnd：指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。<br/><br/>　　lpOperation：一个空结束的字符串地址，此字符串指定要执行的操作。下面的操作字符串是有效的： <br/><br/>&#34;open&#34; 此函数打开由参数lpFile指定的文件，此文件可以是一个可执行文件或文档文件，也可是一个文件夹。 <br/>&#34;print&#34; 此函数打印由参数lpFile指定的文件，此文件应是一个文档文件，假如此文件是一个可执行文件，则打开此文件。 <br/>&#34;explore&#34; 此函数搜索由参数lpFile指定的文件夹，此文件应是一个文档文件， <br/><br/>　　　此参数可以为空。这种情况下，函数用于打开由参数lpFile指定的文件。<br/><br/>　　lpFile：一个空结束的字符串地址，此字符串指定要打开或打印的文件或者是要打开或搜索的文件夹。<br/><br/>　　lpParameters：假如参数lpFile指定一个可执行文件，lpParameters则是一个空结束的字符串地址，此字符串指定要传递给应用程序的参数。假如lpFile指定一个文档文件，lpParameters应为空。<br/><br/>　　lpDirectory：一个空结束的字符串地址，此字符串指定默认目录。<br/><br/>　　nShowCmd：假如lpFile指定一个可执行文件，nShowCmd表明应用程序打开时如何显示。假如lpFile指定一个文档文件，nShowCmd应为空。<br/><br/>　　⑶　返回值：<br/><br/>　　若函数调用成功，则返回值大于32，否则为一个小于等于32的错误值。<br/><br/>　　说明：可以用此函数打开或搜索一个外壳文件夹。打开文件夹可用下面任何一种形式：<br/><br/>ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL); <br/>　　<br/>　　或<br/><br/>ShellExecute(handle, &#34;open&#34;, path_to_folder, NULL, NULL, SW_SHOWNORMAL); <br/><br/>　　搜索文件夹，可用如下形式<br/><br/>ShellExecute(handle, &#34;explore&#34;, path_to_folder, NULL, NULL, SW_SHOWNORMAL); <br/><br/>　　ShellExecute命令虽已过时但易于得到。该命令向命令解释程序提出打开、浏览或打印文档或文件夹的请求，虽然可以用 ShellExecute运行程序，但通常只发送文档名，而命令解释程序则决定要运行那个程序。另外在打开目录文件夹时，ShellExecute命令非常有用。<br/><br/>　　⑷　程序示例<br/><br/>　　下面通过一个例子来说名WinExec和ShellExecute的使用。下面程序有控制台程序示例，其使用两种不同的方法，打开文本文件。下面程序使用WinExec，并明确指定使用记事本程序。然后，使用ShellExecute,打开文本文件。<br/><br/>　　程序清单<br/><br/>#include&nbsp;&nbsp;&lt;windows.h &gt;<br/>#include&nbsp;&nbsp;&lt;iostream.h &gt;<br/><br/>void main(int argc,char *argv[])<br/>{<br/>　cout &lt; &lt;”Opening with WinExec\n”;<br/>　if (WinExec(“notepad readme.txt”,SH_SHOW) &lt;32)<br/>　　MessagBox(NULL,”Can’t WinExec”,NULL,MB_OK);<br/>　　cout &lt; &lt;”Press Enter\n”;<br/>　　MessagBox(NULL,”Press OK to continue”,”Progrm Launched”,MB_OK);<br/>　　cout &lt; &lt;”Opening with ShellExecute\n”;<br/>　if (ShellExecute (NULL,”open”,”readme.txt”,NULL,NULL,SW_SHOW) &lt;(HANDLE) 32)<br/>　　MessagBox(NULL,”Can’t ShellExecute\n”,NULL,MB_OK);<br/>} <br/><br/>使用Cr&#101;ateProcess命令<br/><br/>　　⑴　函数原型：<br/><br/>BOOL Cr&#101;ateProcess(<br/>　LPCTSTR lpApplicationName,<br/>　LPTSTR lpCommandLine,<br/>　LPSECURITY_ATTRIBUTES lpProcessAttributes, <br/>　LPSECURITY_ATTRIBUTES lpThreadAttributes, <br/>　BOOL bInheritHandles, <br/>　DWORD dwCreationFlags,<br/>　LPVOID lpEnvironment, <br/>　LPCTSTR lpCurrentDirectory, <br/>　LPSTARTUPINFO lpStartupInfo, <br/>　LPPROCESS_INFORMATION lpProcessInformation <br/>); <br/><br/>　　⑵　参数：<br/><br/>　　lpApplicationName：指向一个以空结尾的串，他指定了要执行的模块<br/><br/>　　lpCommandLine：指向一个以空结尾的串，该串定义了要执行的命令行。<br/><br/>　　lpProcessAttributes：指向一个SECURITY_ATTRIBUTES结构，该结构决定了返回的句柄是否可被子进程继承。<br/><br/>　　lpThreadAttributes：指向一个SECURITY_ATTRIBUTES结构，该结构决定了返回的句柄是否可被子进程继承。 <br/><br/>　　bInheritHandles,：表明新进程是否从调用进程继承句柄。<br/><br/>　　dwCreationFlags：定义控制优先类和进程创建的附加标志。<br/><br/>　　lpEnvironment：指向一个新进程的环境块。<br/><br/>　　lpCurrentDirectory：指向一个以空结尾的串，该串定义了子进程的当前驱动器和当前目录。<br/><br/>　　lpStartupInfo：指向一个STARTUPINFO结构，该结构定义了新进程的主窗口将如何显示。<br/><br/>　　lpProcessInformation：指向PROCESS_INFORMATION结构，该结构接受关于新进程的表示信息。<br/><br/>　　⑶　返回值：<br/><br/>　　若函数调用成功，则返回值不为0；若函数调用失败，返回值为0。<br/><br/>　　ShellExecute和WinExec命令用于简单的作业。如果要完全控制一个新进程，就必须调用Cr&#101;ateProcess。<br/><br/>　　在上述参数中，参数lpStartupInfo是STARTUPINFO结构。可以用来设置控台的标题，新窗口的的初始大小和位置，及重定向标准输入和输出。新程序通常可以忽略多数这些数据项，如果选择那样做的话。可以规定该结构体中的标志，已表明要设置的数据段。有时，不想设置任何信息，也必须传递一个有效的指针给空结构（确定设置大小到cb，及设置dwFlags成员为0）。参数lpProcessInformation返回进程和线程句柄，还包括进程和线程ID。这些句柄拥有在参数lpProcessAttributes和lpThreadAttributes中规定的访问。<br/><br/>　　要注意，针对Cr&#101;ateProcess的一些参数对控制台应用程序是特定的，而其它参数则对各种应用程序有用。大多数情况下，并不一定要填入 STARTUPINFO结构，但无论如何必须提供它。其返回值是布尔型的，而真正感兴趣的返回值发生于作为参数传送的结构中（PROCESS_INFORMATION）。Cr&#101;ateProcess返回该结构中的进程ID及其句柄，以及初始线程ID及其句柄。可以将ID发送到其它进程，或使用句柄来控制新进程。 ]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=83</link>
			<title><![CDATA[Delphi调用外部程序]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Wed,07 Jan 2009 10:41:01 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=83</guid>	
		<description><![CDATA[Delphi调用外部程序<br/><br/>WinExec主要运行EXE文件。如：WinExec(’Notepad.exe Readme.txt’, SW_SHOW);<br/><br/>WinExec(<br/>&nbsp;&nbsp;lpCmdLine: LPCSTR; {文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量}<br/>&nbsp;&nbsp;uCmdShow: UINT&nbsp;&nbsp;&nbsp;&nbsp; {启动选项}<br/>): UINT;<br/><br/>//返回值:<br/>大于 31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{调用成功}<br/>等于 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {内存不足}<br/>ERROR_FILE_NOT_FOUND = 2;&nbsp;&nbsp;{文件名错误}<br/>ERROR_PATH_NOT_FOUND = 3;&nbsp;&nbsp;{路径名错误}<br/>ERROR_BAD_FORMAT&nbsp;&nbsp;&nbsp;&nbsp; = 11; {EXE 文件无效}<br/><br/>//uCmdShow 参数可选值:<br/>SW_HIDE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0; {隐藏, 并且任务栏也没有最小化图标}<br/>SW_SHOWNORMAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1; {用最近的大小和位置显示, 激活}<br/>SW_NORMAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1; {同 SW_SHOWNORMAL}<br/>SW_SHOWMINIMIZED&nbsp;&nbsp; = 2; {最小化, 激活}<br/>SW_SHOWMAXIMIZED&nbsp;&nbsp; = 3; {最大化, 激活}<br/>SW_MAXIMIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 3; {同 SW_SHOWMAXIMIZED}<br/>SW_SHOWNOACTIVATE&nbsp;&nbsp;= 4; {用最近的大小和位置显示, 不激活}<br/>SW_SHOW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 5; {同 SW_SHOWNORMAL}<br/>SW_MINIMIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 6; {最小化, 不激活}<br/>SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}<br/>SW_SHOWNA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 8; {同 SW_SHOWNOACTIVATE}<br/>SW_RESTORE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 9; {同 SW_SHOWNORMAL}<br/>SW_SHOWDEFAULT&nbsp;&nbsp;&nbsp;&nbsp; = 10; {同 SW_SHOWNORMAL}<br/>SW_MAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 10; {同 SW_SHOWNORMAL}<br/><br/> <br/>ShellExecute不仅可以运行EXE文件，也可以运行已经关联的文件。<br/>首先必须引用shellapi.pas单元：uses ShellAPI; <br/><br/>1.标准用法 <br/>　　ShellExecute函数原型及参数含义如下： <br/>　　function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; <br/>　　●hWnd：用于指定父窗口句柄。当函数调用过程出现错误时，它将作为Windows消息窗口的父窗口。例如，可以将其设置为应用程序主窗口句柄，即 Application.Handle，也可以将其设置为桌面窗口句柄（用GetDesktopWindow函数获得）。 <br/>　　●Operation：用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序，或打开由FileName参数指定的文件或文件夹；“print”操作表示打印由FileName参数指定的文件；“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时，表示执行默认操作“open”。 <br/>　　●FileName：用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。 <br/>　　●Parameters：若FileName参数是一个可执行程序，则此参数指定命令行参数，否则此参数应为nil或PChar(0)。 <br/>　　●Directory：用于指定默认目录。 <br/>　　●ShowCmd：若FileName参数是一个可执行程序，则此参数指定程序窗口的初始显示方式，否则此参数应设置为0。 <br/>　　若ShellExecute函数调用成功，则返回值为被执行程序的实例句柄。若返回值小于32，则表示出现错误。 <br/>　　上述仅仅是ShellExecute函数的标准用法，下面将介绍它的特殊用法。 <br/><br/>2.特殊用法 <br/>　　如果将FileName参数设置为“http:”协议格式，那么该函数将打开默认浏览器并链接到指定的URL地址。若用户机器中安装了多个浏览器，则该函数将根据Windows 9x/NT注册表中http协议处理程序（Protocols Handler）的设置确定启动哪个浏览器。 <br/>　　格式一：<a href="http://" target="_blank">http://</a>网站域名。 <br/>　 如：ShellExecute(handle, ‘open’, <a href="http://" target="_blank">http://</a> ;&nbsp;&nbsp;<a href="http://www.neu.edu.cn" target="_blank">http://www.neu.edu.cn</a>’/, nil, nil, SW_SHOWNORMAL); <br/>　　格式二：<a href="http://" target="_blank">http://</a>网站域名/网页文件名。 <br/>　　如：ShellExecute(handle, ‘open’, <a href="http://" target="_blank">http://</a> ;&nbsp;&nbsp;www.neu.edu.cn/default.htm’,nil,nil,&nbsp;&nbsp;SW_SHOWNORMAL); <br/>　　如果将FileName参数设置为“mailto:”协议格式，那么该函数将启动默认邮件客户程序，如Microsoft Outlook（也包括Microsoft Outlook Express）或Netscape Messanger。若用户机器中安装了多个邮件客户程序，则该函数将根据Windows 9x/NT注册表中mailto协议处理程序的设置确定启动哪个邮件客户程序。 <br/>　　格式一：mailto: <br/>　　如：ShellExecute(handle,‘open’, ‘mailto:’, nil, nil, SW_SHOWNORMAL);打开新邮件窗口。 <br/>　　格式二：mailto:用户账号@邮件服务器地址 <br/>　　如：ShellExecute(handle, ‘open’,‘ mailto:who@mail.neu.edu.cn’, nil, nil, SW_SHOWNORMAL);打开新邮件窗口，并自动填入收件人地址。若指定多个收件人地址，则收件人地址之间必须用分号或逗号分隔开（下同）。 <br/>　　格式三：mailto:用户账号@邮件服务器地址?subject=邮件主题＆body=邮件正文 <br/>　　如：ShellExecute(handle, ‘open’, ‘ mailto:who@mail.neu.edu.cn？subject=Hello＆Body=This is a test’, nil, nil, SW_SHOWNORMAL);打开新邮件窗口，并自动填入收件人地址、邮件主题和邮件正文。若邮件正文包括多行文本，则必须在每行文本之间加入换行转义字符％0a。 <br/>例子(delphi): <br/>在一个应用程序调用c:Project1.exe; <br/>ShellExecute(handle, ’open’,’c:Project1.exe’,’字串内容’,nil, SW_SHOWNORMAL); <br/>在Project1.exe里可以调用: <br/>procedure TForm1.FormCr&#101;ate(Sender: TObject); <br/>var i:integer; <br/>begin <br/>for i:=1 to paramcount do <br/>if ParamStr(i)〈〉’’ then showmessage(ParamStr(i)); <br/>end;<br/><br/>最后的那个参数，为窗口指定可视性方面的一个命令。 <br/>请用下述任何一个常数 <br/>SW_HIDE 隐藏窗口，活动状态给令一个窗口 <br/>SW_MINIMIZE 最小化窗口，活动状态给令一个窗口 <br/>SW_RESTORE 用原来的大小和位置显示一个窗口，同时令其进入活动状态 <br/>SW_SHOW 用当前的大小和位置显示一个窗口，同时令其进入活动状态 <br/>SW_SHOWMAXIMIZED 最大化窗口，并将其激活 <br/>SW_SHOWMINIMIZED 最小化窗口，并将其激活 <br/>SW_SHOWMINNOACTIVE 最小化一个窗口，同时不改变活动窗口 <br/>SW_SHOWNA 用当前的大小和位置显示一个窗口，不改变活动窗口 <br/>SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口，同时不改变活动窗口 <br/>SW_SHOWNORMAL 与SW_RESTORE相同 <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=82</link>
			<title><![CDATA[showwindow函数]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Wed,07 Jan 2009 10:32:59 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=82</guid>	
		<description><![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);<br/><br/>函数功能：该函数设置指定窗口的显示状态。<br/>&nbsp;&nbsp;&nbsp;&nbsp;参数：<br/>&nbsp;&nbsp;&nbsp;&nbsp;hWnd：窗口句柄。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;nCmdShow：指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构，则应用程序第一次调用ShowWindow时该参数被忽略。否则，在第一次调用ShowWindow函数时，该值应为在函数WinMain中nCmdShow参数。在随后的调用中，该参数可以为下列值之一：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_FORCEMINIMIZE：在WindowNT5.0中最小化窗口，即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_MIOE：隐藏窗口并激活其他窗口。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_MAXIMIZE：最大化指定的窗口。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_MINIMIZE：最小化指定的窗口并且激活在Z序中的下一个顶层窗口。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_RESTORE：激活并显示窗口。如果窗口最小化或最大化，则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时，应用程序应该指定这个标志。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOW：在窗口原来的位置以原来的尺寸激活和显示窗口。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWDEFAULT：依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态，STARTUPINFO 结构是由启动应用程序的程序传递给Cr&#101;ateProcess函数的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWMAXIMIZED：激活窗口并将其最大化。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWMINIMIZED：激活窗口并将其最小化。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWMINNOACTIVATE：窗口最小化，激活窗口仍然维持激活状态。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWNA：以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWNOACTIVATE：以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;SW_SHOWNOMAL：激活并显示一个窗口。如果窗口被最小化或最大化，系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;返回值：如果窗口以前可见，则返回值为非零。如果窗口以前被隐藏，则返回值为零。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;备注：应用程序第一次调用ShowWindow时，应该使用WinMain函数的nCmdshow参数作为它的nCmdShow参数。在随后调用ShowWindow函数时，必须使用列表中的一个给定值，而不是由WinMain函数的nCmdSHow参数指定的值。<br/><br/>Public Const SW_HIDE = 0<br/>Public Const SW_SHOWNORMAL = 1<br/> <br/>Public Const SW_SHOWMINIMIZED = 2<br/>Public Const SW_SHOWMAXIMIZED = 3<br/>Public Const SW_MAXIMIZE = 3<br/>Public Const SW_SHOWNOACTIVATE = 4<br/>Public Const SW_SHOW = 5<br/>Public Const SW_MINIMIZE = 6<br/>Public Const SW_SHOWMINNOACTIVE = 7<br/>Public Const SW_SHOWNA = 8<br/>Public Const SW_RESTORE = 9]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=81</link>
			<title><![CDATA[Messagebox函数]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Wed,07 Jan 2009 10:07:25 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=81</guid>	
		<description><![CDATA[MessageBox对话框 输入控件的&nbsp;&nbsp; ImeName属性把输入法去掉就默认为英文输入了<br/><br/>　MessageBox对话框是比较常用的一个信息对话框，其不仅能够定义显示的信息内容、信息提示图标，而且可以定义按钮组合及对话框的标题，是一个功能齐全的信息对话框信息提示图标，而且可以定义按钮组合及对话框的标题，是一个功能齐全的信息对框。<br/>　1、函数原型及参数<br/>　function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;<br/>　hWnd：对话框父窗口句柄，对话框显示在Delphi窗体内，可使用窗体的Handle属性，否则可用0，使其直接作为桌面窗口的子窗口。<br/>　Text：欲显示的信息字符串。<br/>　Caption：对话框标题字符串。<br/>　Type：对话框类型常量。<br/>　该函数的返回值为整数，用于对话框按钮的识别。<br/>　2、类型常量<br/>　对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。<br/>　（1）按钮组合常量<br/>　MB_OK = $00000000;　　　　　　　　　//一个确定按钮<br/>　MB_OKCANCEL = $00000001;　　　　　　//一个确定按钮，一个取消按钮<br/>　MB_ABORTRETRYIGNORE = $00000002;　　//一个异常终止按钮，一个重试按钮，一个忽略按钮<br/>　MB_YESNOCANCEL = $00000003;　　　　 //一个是按钮，一个否按钮，一个取消按钮<br/>　MB_YESNO = $00000004;　　　　　　　 //一个是按钮，一个否按钮<br/>　MB_RETRYCANCEL = $00000005;　　　　 //一个重试按钮，一个取消按钮<br/>　（2）缺省按钮常量<br/>　MB_DEFBUTTON1 = $00000000;　　　　　//第一个按钮为缺省按钮<br/>　MB_DEFBUTTON2 = $00000100;　　　　　//第二个按钮为缺省按钮<br/>　MB_DEFBUTTON3 = $00000200;　　　　　//第三个按钮为缺省按钮<br/>　MB_DEFBUTTON4 = $00000300;　　　　　//第四个按钮为缺省按钮<br/>　（3）图标常量<br/>　MB_ICONHAND = $00000010;　　　　　　　 //“×”号图标<br/>　MB_ICONQUESTION = $00000020;　　　　　 //“？”号图标<br/>　MB_ICONEXCLAMATION = $00000030;　　　　//“！”号图标<br/>　MB_ICONASTERISK = $00000040;　　　　　 //“i”图标<br/>　MB_USERICON = $00000080;　　　　　　　 //用户图标<br/>　MB_ICONWARNING = MB_ICONEXCLAMATION;　 //“！”号图标<br/>　MB_IConERROR = MB_ICONHAND;　　　　　　//“×”号图标<br/>　MB_ICONINFORMATION = MB_ICONASTERISK;　//“i”图标<br/>　MB_ICONSTOP = MB_ICONHAND;　　　　　　 //“×”号图标<br/>　（4）运行模式常量<br/>　MB_APPLMODAL = $00000000;　　　　//应用程序模式，在未结束对话框前也能切换到另一应用程序<br/>　MB_SYSTEMMODAL = $00001000;　　　//系统模式，必须结束对话框后，才能做其他操作<br/>　MB_TASKMODAL = $00002000;　　　　//任务模式，在未结束对话框前也能切换到另一应用程序<br/>　MB_HELP = $00004000;　　　　　　 //Help Button<br/>　3、函数返回值<br/>　0　　　　　　　　　　　 //对话框建立失败<br/>　idOk = 1　　　　　　　　//按确定按钮<br/>　idCancel = 2　　　　　　//按取消按钮<br/>　idAbout = 3　　　　　　 //按异常终止按钮<br/>　idRetry = 4　　　　　　 //按重试按钮<br/>　idIgnore = 5　　　　　　//按忽略按钮<br/>　idYes = 6　　　　　　　 //按是按钮<br/>　idNo = 7　　　　　　　　//按否按钮]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=80</link>
			<title><![CDATA[OFFICE组件窗体的类名]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Sat,03 Jan 2009 13:19:57 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=80</guid>	
		<description><![CDATA[Microsoft Office Window Class Names<br/><br/>一些常用的Class Names：<br/>Application&nbsp;&nbsp;Class Name<br/>Access 97&nbsp;&nbsp;Omain&nbsp;&nbsp;<br/>Access 2000&nbsp;&nbsp;Omain&nbsp;&nbsp;<br/>Access XP&nbsp;&nbsp;Omain&nbsp;&nbsp;<br/>Excel 97&nbsp;&nbsp;XLMAIN&nbsp;&nbsp;<br/>Excel 2000&nbsp;&nbsp;XLMAIN&nbsp;&nbsp;<br/>Excel XP&nbsp;&nbsp;XLMAIN<br/>Excel 2003&nbsp;&nbsp;XLMAIN&nbsp;&nbsp;<br/>FrontPage 2000&nbsp;&nbsp;FrontPageExplorerWindow40<br/>FrontPage XP&nbsp;&nbsp;FrontPageExplorerWindow40&nbsp;&nbsp;<br/>Outlook 97&nbsp;&nbsp;rctrl_renwnd32&nbsp;&nbsp;<br/>Outlook 98&nbsp;&nbsp;rctrl_renwnd32&nbsp;&nbsp;<br/>Outlook 2000&nbsp;&nbsp;rctrl_renwnd32&nbsp;&nbsp;<br/>Outlook XP&nbsp;&nbsp;rctrl_renwnd32&nbsp;&nbsp;<br/>PowerPoint 95&nbsp;&nbsp;PP7FrameClass&nbsp;&nbsp;<br/>PowerPoint 97&nbsp;&nbsp;PP97FrameClass&nbsp;&nbsp;<br/>PowerPoint 2000&nbsp;&nbsp;PP9FrameClass&nbsp;&nbsp;<br/>PowerPoint XP&nbsp;&nbsp;PP10FrameClass&nbsp;&nbsp;<br/>Project 98&nbsp;&nbsp;Jwinproj-WhimperMainClass&nbsp;&nbsp;<br/>Project 2000&nbsp;&nbsp;Jwinproj-WhimperMainClass&nbsp;&nbsp;<br/>Visual Basic Editor&nbsp;&nbsp;wndclass_desked_gsk&nbsp;&nbsp;<br/>Word 97&nbsp;&nbsp;OpusApp&nbsp;&nbsp;<br/>Word 2000&nbsp;&nbsp;OpusApp&nbsp;&nbsp;<br/>Word XP&nbsp;&nbsp;OpusApp<br/>Word 2003&nbsp;&nbsp;OpusApp <br/>Userform 97&nbsp;&nbsp;ThunderXFrame&nbsp;&nbsp;<br/>Userform 2000+&nbsp;&nbsp;ThunderDFrame<br/><br/>用winexec,ShellExecute等调用外部程序时用到]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=79</link>
			<title><![CDATA[fastreport4 for delphi 7 的安装]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Tue,28 Oct 2008 13:18:03 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=79</guid>	
		<description><![CDATA[<br/>系统环境:<br/>&nbsp;&nbsp;Windows XP pro sp3<br/>&nbsp;&nbsp;Delphi7 <br/>&nbsp;&nbsp;控件有:<br/>&nbsp;&nbsp;FastReport 4.3<br/><br/><br/>安装前请册除原有的FR控件。<br/><br/>1. &#34;Tools|Environmet options...&#34;中的&#34;Library&#34;标签面下&#34;Library path&#34;添加FastReport路径。<br/>&nbsp;&nbsp; FastReport 4.3\FastQB&nbsp;&nbsp;<br/>&nbsp;&nbsp; FastReport 4.3\FastScript<br/>&nbsp;&nbsp; FastReport 4.3\Source<br/>&nbsp;&nbsp; FastReport 4.3\Source\BDE<br/>&nbsp;&nbsp; FastReport 4.3\Source\ADO<br/>&nbsp;&nbsp; FastReport 4.3\Source\IBX<br/>&nbsp;&nbsp; FastReport 4.3\Source\DBX<br/>&nbsp;&nbsp; FastReport 4.3\Source\ExportPack<br/><br/>2. 生成汉化文件<br/>&nbsp;&nbsp; 运行&#34;recompile.exe&#34;文件，设置相应选项，我的设置如下：<br/>&nbsp;&nbsp; 1.Sel&#101;ct the compiler 设置为 Delphi7<br/>&nbsp;&nbsp; 2.Sel&#101;ct the FastReport Version 设置为 Enterprise<br/>&nbsp;&nbsp; 3.Sel&#101;ct the TeeChart version 设置为 TeeChartStd <br/>&nbsp;&nbsp; 4.What you want to do 下的 Change language To: 设置为 Chinese (这个还用说)<br/>&nbsp;&nbsp; <br/> 3. 编译运行包(其它版本的Delphi选择相对应的文件编译)<br/>&nbsp;&nbsp; - FastReport 4.3\FastQB\fqb70.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\fs7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\fsDB7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\fsBDE7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\fsADO7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\fsIBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\frx7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\frxDB7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\ADO\frxADO7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\BDE\frxBDE7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\IBX\frxIBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\DBX\frxDBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\ExportPack\frxe7.dpk<br/><br/>4. 复制以下文至Windows\System32目录下<br/>&nbsp;&nbsp; - fs7.bpl<br/>&nbsp;&nbsp; - fsDB7.bpl<br/>&nbsp;&nbsp; - fsBDE7.bpl<br/>&nbsp;&nbsp; - fsADO7.bpl<br/>&nbsp;&nbsp; - fsIBX7.bpl<br/>&nbsp;&nbsp; - frx7.bpl<br/>&nbsp;&nbsp; - frxDB7.bpl<br/>&nbsp;&nbsp; - frxADO7.bpl<br/>&nbsp;&nbsp; - frxBDE7.bpl<br/>&nbsp;&nbsp; - frxIBX7.bpl<br/>&nbsp;&nbsp; - frxDBX7.bpl<br/>&nbsp;&nbsp; - frxe7.bpl&nbsp;&nbsp;<br/>&nbsp;&nbsp; 如果你的Delphi7没有修改环境变量那么这些文件默认是在\Borland\Delphi7\Projects\Bpl目录中。<br/>&nbsp;&nbsp; 这一步我没有做，因为个人感觉复制不复制效果都是一样的。只要程序能找到这些文件就行了！<br/><br/>5. 编译并安装以下文件<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\dclfs7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\dclfsDB7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\dclfsBDE7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\dclfsADO7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\FastScript\dclfsIBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\dclfrx7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\dclfrxDB7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\ADO\dclfrxADO7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\BDE\dclfrxBDE7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\IBX\dclfrxIBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\DBX\dclfrxDBX7.dpk<br/>&nbsp;&nbsp; - FastReport 4.3\Source\ExportPack\dclfrxe7.dpk<br/><br/>经过上面的操作你的FastReport4就完成了。<br/>以上是网上摘来的，我照着做，但没把IBX，BDE相关的数据库控件编译进去；<br/>最后还有一个中文显示的问题<br/><br/>运行了文件夹下res/chinese/mk.bat<br/>再重新编译了source文件夹下frx*.dpk,在ExportPack文件夹下 frxe*.dpk packages<br/><br/>最后终于解决中文显示问题；<br/>以上适合fastreport4以上版本<br/>我的是盒子上下载的FastReport4.68版本<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=78</link>
			<title><![CDATA[Delphi7安装Ehlib4]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Sat,04 Oct 2008 12:48:15 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=78</guid>	
		<description><![CDATA[按说明文档安装方式是<br/><br/>By default Delphi (5, 6 and 7) places compiled files to the<br/>&lt;Delphi path&gt;\Projects\Bpl directory and this directory already present<br/>in the search PATH. But if you overwrite default BPL directory then you need<br/>put compiled EhLibXX.BPL file into directory that is accessible<br/>through the search PATH (i.e. DOS &#34;PATH&#34; environment variable; for example,<br/>in the Windows\System directory).<br/><br/>Add, (if needed) &#39;EhLib directory&#39; in Tools-&gt;Environment Options-&gt;Library-&gt;<br/>Library Path (For Delphi 9 in Tools-&gt;Options-&gt;Environment Options-&gt;<br/>Delphi Options-&gt;Library - Win32-&gt;Library Path).<br/><br/>Use &#34;File\Open...&#34; menu item of Delphi IDE to open the runtime package -<br/>EhLibXX.Dpk.<br/>In &#34;Package...&#34; window click &#34;Compile&#34; button to compile the package.<br/><br/>After that open and compile EhLibDataDriversXX.Dpk.<br/><br/>After compiling run-time packages install design-time<br/>packages DclEhLibXX.BPL and DclEhLibDataDriversXX.BPL into the IDE.<br/><br/>For that use &#34;File\Open...&#34; menu item to open design-time package<br/>DclEhLibXX.Dpk.<br/>In &#34;Package...&#34; window click &#34;Compile&#34; button to compile the package<br/>and then click &#34;Install&#34; button to register EhLib components on<br/>the component palette.<br/><br/>但安装会出现 EhLib70.dpk(59): File not found: &#39;DBSumLst.dcu&#39;的错误，<br/><br/><strong>解决办法:</strong>可以把下载的控件包中Delphi7文件目录中的文件全部拷到Common文件夹中，然后打开Delphi-》Tools-》 Environment Options-》Library，再选择Library path路径找到你下载控件包Common目录所在。然后添加。Ok。<br/><br/>再选择Delphi中File -》Open 打开Common中的DPK文件，注意这里有四个DPK文件，先选择EhLib70.dpk 之后Compile（不要Install） 再打开EhLibDataDrivers70.dpk再Compile（不要Install）。编译这两个文件之后再打开DclEhLib70.dpk文件，点Compile，再安装（此时点Install），再打开DclEhLibDataDrivers70.dpk 点编译，再安装（此时点Install）到此OK，退出Delphi编译器，重新启动OK]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=77</link>
			<title><![CDATA[delphi控件安装方法及说明]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[软件开发]]></category>
			<pubDate>Sat,13 Sep 2008 10:44:52 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=77</guid>	
		<description><![CDATA[由于组件提供的方式不同，所以安装的方法也是不一样的，下面就目前常见的各种形式的组件的安装方法介绍一下。<br/><strong>1、只有一个dcu文件的组件。</strong> dcu文件是编译好的单元文件，这样的组件是作者不想把源码公布。一般来说，作者必须说明此组件适合delphi的哪种版本，如果版本不对，在安装时就会出现错误。也正是因为没有源码，给使用者带来了不便，那就是一旦delphi版本升级，此组件就不能再使用了，当然有的作者给出了几种版本的dcu文件，用户根据需要选择使用。这样的组件的安装方法是：在component菜单中，选择install component，在对话框中的&#34;into existing package&#34;页中，单击“unit file name”后的“browse”按钮，在打开的文件对话框中，将“文件类型”设定为*.dcu，找到要安装的dcu文件，按ok按钮返回&#34;into existing package&#34;页后再按ok按钮就可以安装了。注意，此时delphi会提示dclusr40.dpk将被重建，是否继续，ok就可以了。这里是将组件安装到dclusr40.dpk包中，此包从文件名上可以看出是用户自定义组件包，先安装到这个包中吧，下面再讲有关注意事项。安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等，到<br/>组件面板上看看，一般会出现一个新的组件页，其中有刚安装的组件。<br/><strong>2、只有pas文件或既有pas又有dcu文件的组件。</strong>这种组件因为有pas文件，也就是说作者提供了源码，这就好办多了。安装的方法和上面是一样的，在文件类型中可以设定为dcu也可以设定为pas，建议设定为pas，这样可用你的delphi重新编译一下，看是否会出现问题。delphi升级后只能选择pas文件安装，这样才能重新编译，使得组件能适应新delphi版本。这样的组件是很值得使用的，根据心铃的经验，没有源码的组件最好不要使用，一是存在 delphi版本升级后无法使用的问题，再者当程序出现问题后用户无法调试组件来判断是否是组件中存在bug。<br/><strong>3、有dpk文件的组件包。</strong>带有dpk文件的组件包一般是有多个组件构成的，也就是说安装后会有多个组件供使用，如果只有一个组件作者一般不会制成dpk文件，使用上面的方式发布就可以了。对于这样的组件包，一般来说会有详细的安装说明文件，如上面提到的rxlib，由于组件复杂且安装时有先后顺序，作者不提供安装说明用户根本无法正确安装。如果没有安装说明文件，那么用下面的方法安装：在file菜单下，选择”open…”打开dpk文件(文件类型列表框中选*.dpk)，在出现的 package窗口中，工具栏上有install按钮，按此按钮即可进行安装。如果install按钮处于无效状态，那么先按compile按钮编译，一般来说编译之后install按钮就会处于有效状态，此时再按install按钮就可以了。<br/><strong>4、带有bpl文件的组件包。</strong>一般来说这也是由多种组件构成的组件包，它其实是一个动态连接库文件（dll）。对于这种组件包的安装方法是：在component菜单下选择“install packages”，然后单击add按钮，在打开的文件对话框中找到相应的bpl文件打开返回后，再单击ok按钮就可以了。<br/><strong>5、activex控件的安装。</strong>要安装这类控件，需要先用regsvr32.exe注册，然后选择<br/>component 菜单中import activex control项。在import activex control打开的窗口中，只有已经注册的activex控件才出现在列表中，选中一个然后按install按钮就可以安装了。如果事先没有用 regsvr32.exe注册也可以按add按钮找到ocx文件即时注册，注册后再进行安装。<br/>几点说明：<br/>1 在拿到组件后先看是否有说明文件，一般来说在说明文件中有如何安装的指导，有些还会有组件的属性、事件、方法的使用说明，这些在使用时是非常重要的。<br/>2 在上面的组件（包）安装操作之前，最好将 *.bpl拷贝到你的system目录中，将<br/>*.pas、*.dcu、*.dcr、*.dp@拷贝到delphi的lib目录中再进行。3 前面我们提到安<br/>装 dcu组件时，选用的是已经存在的dclusr40.dpk，当然也可以选择安装到一个新的包中，如果选择新包，需要先取一个名字比如demo，事实上安装完毕后用户可以找到的是demo.bpl，而找不到demo.dpk。假如你已经将一个组件安装到dclusr40.dpk中了，还想再安装一个组件，如果再安装到dclusr40.dpk中，安装后你得到提示，原来安装的那个组件已经被取消注册，你将无法使用了。这样不就成了只能安装一个组件了吗？除非你再安装到一个新的包中才可以两个组件同时使用。当然每安装一个组件生成一个新的bpl文件也未偿不可，但bpl文件就增加许多。能否在 dclusr40.dpk中多安装几个组件呢？当然是可以的。方法如下：用file菜单下的open打开dclusr40.dpk文件，单击add按钮，在打开的对话框中选择add unit页面，按unit file name后的“browse”按钮打开组件单元文件，ok即可，用此种方法这样可添加多个组件的单元文件，添加完毕，按一下编译按钮，然后<br/>再按 install按钮即可，如果单元文件是编译好的（dcu）可以直接按安装按钮。4 组件的删除。光会安装可不行，还要会删除呀。很简单，在component菜单下，选择install packages，在列表中找到安装所在的bpl，按remove按钮，ok！再把bpl文件删掉就彻底了，如果不删除bpl文件，下次可以按安装bpl 组件的方法再安装使用。]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=76</link>
			<title><![CDATA[IE浏览器出现&#34;_gat&#34;未定义]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[网页编程]]></category>
			<pubDate>Sun,27 Jul 2008 15:00:06 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=76</guid>	
		<description><![CDATA[调试程序时，其他浏览器看网页，都没问题，只有IE下，浏览网页出现怪问题<br/>症状是IE下网页全裸，外部css无法加载 <img src="http://www.10w8.com/blog/images/smilies/Face_10.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/>，并提示脚本出错，&#34;_gat&#34;未定义<br/><br/>怒了，总算想起，昨天升级了安天防线；然后在IE工具栏下，点击管理加载项，禁用安天防挂马IE安全插件；<br/>再点刷新，终于解决<br/><br/>由此知道一些防病毒的软件，特别是在IE加载项中的，对浏览器有一定的影响]]></description>
		</item>
		
			<item>
			<link>http://www.10w8.com/blog/default.asp?id=75</link>
			<title><![CDATA[对pjblog程序做了一些修改]]></title>
			<author>MKDuse@email.com(MKD)</author>
			<category><![CDATA[网页编程]]></category>
			<pubDate>Thu,24 Jul 2008 17:44:50 +0800</pubDate>
			<guid>http://www.10w8.com/blog/default.asp?id=75</guid>	
		<description><![CDATA[20080724<br/>修改common/cache.asp<br/>解决侧栏最新评论的链接问题<br/>//332行修改<br/>原href=&#34;&#34;default.asp?id=<br/>新href=&#34;&#34;article.asp?id=<br/><br/>修改hear.asp,解决seo问题，标题重复问题<br/>//18行<br/> if inStr(Replace(Lcase(Request.ServerVariables(&#34;URL&#34;)),&#34;\&#34;,&#34;/&#34;),&#34;/default.asp&#34;)&lt;&gt;0 Then<br/>下增加<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.10w8.com/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/> &#39;---add-----<br/>&nbsp;&nbsp; If request.querystring(&#34;log_Year&#34;)&lt;&gt;Empty Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; If request.querystring(&#34;log_Month&#34;)&lt;&gt;Empty Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BlogTitle=request.querystring(&#34;log_Year&#34;)&amp;&#34;,&#34;&amp;request.querystring(&#34;log_Month&#34;)&amp;&#34;|&#34;&amp;BlogTitle<br/>&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BlogTitle=request.querystring(&#34;log_Year&#34;)&amp;&#34;|&#34;&amp;BlogTitle<br/>&nbsp;&nbsp;&nbsp;&nbsp; End if<br/>&nbsp;&nbsp; End If<br/><br/>&nbsp;&nbsp; IF Request.QueryString(&#34;tag&#34;) &lt;&gt; &#34;&#34; Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; BlogTitle = Request.QueryString(&#34;tag&#34;)&amp;&#34;|&#34;&amp;BlogTitle<br/>&nbsp;&nbsp; End If<br/><br/>&nbsp;&nbsp; IF IsInteger(cateID) = True Then<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim Cate<br/>&nbsp;&nbsp;&nbsp;&nbsp; Set Cate = New Category<br/>&nbsp;&nbsp;&nbsp;&nbsp; Cate.Load(cateID)<br/>&nbsp;&nbsp;&nbsp;&nbsp; BlogTitle = Cate.Cate_Name&amp;&#34;|&#34;&amp;BlogTitle<br/>&nbsp;&nbsp; End If<br/>&nbsp;&nbsp; &#39;------------<br/></div></div><br/><br/><strong>从google网站管理员中看到的pjblog缺点，就针对程序做了一些改动；<br/>另看到pjblog已有新的版本2.8；没有新的让人动心的东西，升级还是以后再说吧</strong>]]></description>
		</item>
		
</channel>
</rss>