上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页
摘要: 寻找全部50本花花公子杂志........看下面的提示找吧(写到手抽+脑抽) = =||每章过去了就拿不到了 第2章 : 2本No 1. JOE的公寓 - 在咖啡桌上No 3. MIKE的车房 - MIKE的办公室旁边的车房内......在木架上........注意MIKE任务完成后这里会关闭导致无法获得第3章 : 5本No 18. DEREK的办公室 - STEVE会把这本杂志丢在办公室门外No... 阅读全文
posted @ 2010-08-30 23:27 Max Woods 阅读(3229) 评论(0) 推荐(0) 编辑
摘要: 本文介绍一整套方法让我们编辑出来的Office文档得到有效的保护,避免被人偷窥和修改。  查阅修改文档要密码  使用密码对文档进行保护,是一种最常用的做法。密码保护一共分为两层,即打开权限密码和修改权限密码。  对文档设置密码一共有两个地方可以进行,操作都比较简单。如果该文档是初次保存,那么我们就可以在打开“另存为”窗口设置保存位置和文件名时,单击“另存为”窗口右上角的“工具”按钮,在弹出的菜单中选择“安全措施选项”命令打开“安全性”窗口,在这里我们就可以分别设置“打开文件时的密码”和“修改文件时的密码”,建议大家不要将这两个密码设为同一个内容。  如果文件初次保存时没有设置密码,那么也没关系 阅读全文
posted @ 2010-08-30 18:20 Max Woods 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 文档也有安全性问题,尤其对于Office文档,为了让您的文档更安全,Office提供了比较完善的安全和文档保护功能,它包括:安全级别、数字签名、密码设置、窗体保护和批注口令。   文档的安全级别  对Word文档最大的安全隐患就是宏病毒,为了防止宏病毒Word设立了安全级别的概念。您可在“工具→选项→“安全性”选项卡→宏安全性&rd... 阅读全文
posted @ 2010-08-30 18:02 Max Woods 阅读(260) 评论(0) 推荐(0) 编辑
摘要: TThread是一个抽象类,可以创建几个独立的线程。类关系 TObject在一个多线程的应用程序中创建一个TThread的后子类代表一个线程。每一新子类的TThread对象的实例是一个新的线程。从TThread派生的多线程实例可以构成Delphi的多线程应用程序。当一个应用程序运行时,应用程序就被载入内存准备执行。此时,它成为包含一个或多个线程的进程,每个线程含有数据、代码和系统资源。线程执行应用... 阅读全文
posted @ 2010-08-30 11:27 Max Woods 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 1.获得网页中变量值 htm中<script> var currID=123</script> 程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID 值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个... 阅读全文
posted @ 2010-08-30 11:23 Max Woods 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 首先找到\My Documents\My Games\Gears of War for Windows\WarGame\Config里的WarInput.ini,记得先备份,用notepad打开,查找[Engine.Console]然后把相应的代码改成下面那样ConsoleKey=Tilde TypeKey=Tilde MaxScrollbackSize=1024 HistoryBot=-1 En... 阅读全文
posted @ 2010-08-28 00:53 Max Woods 阅读(266) 评论(0) 推荐(0) 编辑
摘要: A.1 使用编译设置对话框 编译器的编译指令是用于指定编译器对项目编译过程的动作和行为。可以通过[Project]-[Options]-[Complier]选项页进行设置,绝大部分的编译环境都可以通过这一对话框进行调整,他包含了对代码、语法、调试信息等的设置。 1.代码设置(Code Generation) Optimization: 代码优化开关 Aligned record fields: 字对齐数据。这个编译指令能够在变量和类型化常量的字节对齐和字对齐之间进行切换,其作用是全局的。 Stack frames: Windows 堆栈帧。其作用域是局部的,他使编译器成为远端过程和函数生成 阅读全文
posted @ 2010-08-19 16:27 Max Woods 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 在开发B/S结构的应用程序时,登录时为了防止恶意操作,经常要用到验证码,类似的验证码在网上搜一下有很多,无非就是生成一个带有文字的图片,在这里,发布一个类似于google所用的验证码,给大家多一种选择。 效果如图: 代码如下: using System; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Mirainsoft.ValidateCode { /// summary /// 验证码处理类 /// /su 阅读全文
posted @ 2010-08-14 17:01 Max Woods 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 方法如下:打开theme目录下面的PostView.ascx文件。定位到asp:PlaceHolder ID="BodyContent" runat="server" /在之前添加一点代码%= getImage(base.ShowExcerpt,Post.Content) %修改完即成如下:当然别忘了getImage()函数的代码要加进去,PostView.ascx文件的最后添加一段: 阅读全文
posted @ 2010-08-14 11:44 Max Woods 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 三月份时玩了某狐公司的网络游戏《天龙X部》,感觉还是蛮有意思的,遂研究了一下。 这个游戏是利用开源游戏引擎OGRE进行开发的,看了一下目录里面的文件结构,主要的数 据都放在Data目录下面。不过文件基本都是.AXP后缀的,每一个动辄几十兆,料想肯定是 把游戏文件打包到一起并加密过的,GOOGLE未遂。开始用UE打开看了一下这个AXP文件,发 现里面居然大部分都是明文的,开始以为只是把文件罗列在一起,不过仔细看了一下,发 现每个文件都有一段间隔,前面还有一个数据头,而且文件与名字也无法对应。于是打开 OD手动分析一下,主要过程其实比较简单,CreateFile函数下断,找到文件Buffer位置, 阅读全文
posted @ 2010-08-03 14:11 Max Woods 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 每个ActiveX Dll都应该有个DllGetClassObject函数,利用该函数就可以直接创建所需的com对象,而不需要通过注册表(或者注册)。这里必须知道两样东西,一个rclsid,就是需要创建的com对象的CLSID,另一个是 riid,该对象的一个接口的 id. 然而,调用DllGetClassObject,并不能直接创建所需要的对象,但可以得到对应的 IClassFactory,再由 IClassFactory.CreateInstance得到所需的对象. vb实现代码大概如下: 需要用到一个库,http://www.mvps.org/emorcillo/download/vb6 阅读全文
posted @ 2010-07-20 16:55 Max Woods 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: The scope of an object determines which scripts can use that object. By default, when you create an object instance, the object has page scope. Any script command in the same ASP page can use a page-scope object; the object is released when the .asp file completes processing the request. The recomme 阅读全文
posted @ 2010-07-17 19:57 Max Woods 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 很多朋友都会有过这样的经历,为什么在主线程中创建窗口且窗口工作很正常,但一移到非主线程(有的朋友喜欢叫它为工作线程),却无法正常工作. 本文就这个问题和各位探讨,可能无法做到尽善尽美,但能抛砖引玉也算是欣慰了. 在主线程中创建一个能够正常工作的窗口,估计地球人都知道. 这是一段工作正常的代码: #include \"windows.h\" HWND g_hWnd = NULL; HINSTANCE g_hInst; LRESULT WndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam) { return DefWindowProc 阅读全文
posted @ 2010-07-17 11:57 Max Woods 阅读(756) 评论(0) 推荐(0) 编辑
摘要: 1.TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyyy four digit2. select to_char( to_date(222,'J'),'Jsp') from dual 显示Two Hundred Twenty-Two 3.求某天是星期几 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 星期一 select to_char(to 阅读全文
posted @ 2010-07-14 09:23 Max Woods 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 设有以下三个变量: var s:string; p:pchar; a:array[1..20] of char; 那么三者之间的转换如下: 1、字符串到PChar p:=PChar(s); 2、PChar到字符串 s:=p; 3、PChar到字符数组 StrCopy(@a,p); 4、字符数组到PChar PChar(@a); 5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子: procedure TForm1.btn1Click(Sender: TObject); var str:array[1..10] of char; begin StrCopy(@s 阅读全文
posted @ 2010-07-13 18:38 Max Woods 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid()。在Oracle9i和Oracle 10g 里SYS_GUID产生得到的数据是32 位的,如:234E45F0077881AAE0430AA3034681AA但Oracle中的guid与msSql中的guid格式不完全相同。将Oracle中的guid分割成为 Windows系统 ObjectId 的格式:{8-4-4-4-12} ,下面给出两种解决方法: 方法一:利用substr进行分割,非常简单,具体代码如下: /** * 创建系统Object Id 格式的字符串,返回的结果如下:{234E45F 阅读全文
posted @ 2010-07-13 16:45 Max Woods 阅读(2428) 评论(1) 推荐(0) 编辑
摘要: Oracle XE 标准连接 Oracle XE(或者"Oracle Database 10g Express Edition")是一个简单免费发布的版本。 以下是语法格式: Driver=(Oracle in XEClient);dbq=111.21.31.99:1521/XE;Uid=myUsername;Pwd=myPassword; ODBC 新版本连接方式 以下是语法格式: Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword; 老版本连接方式 以下是语法 阅读全文
posted @ 2010-07-13 09:23 Max Woods 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 首先我把UDP无连接协议的套接字调用时序图表示出来在我把在Delphi中使用UDP协议实现数据通讯收发的实现方法总结如下:例子描述:下面例子是我的一个实际设备通讯的例子,使用UDP协议在4660端口上发送'F1,00'(16进制,2个字节),在同一个端口上接收到'F1,00,00,00,00,00'((16进制,2个字节))1.使用底层函数来实现procedure TForm1.FormCreate(Sender: TObject); var WSAData:TWSAData; begin edtHost.Text:=192.168.1.222'; edtPort.Text:='4660'; 阅读全文
posted @ 2010-07-10 17:58 Max Woods 阅读(2731) 评论(0) 推荐(1) 编辑
摘要: 按照Delphi文档上所说,欲在两个socket之间通信,必须一个为client,一个为server。这个概念在TCP上还好说,但是用在UDP上就不大合适了。borland提供的UDP组件只有一个TUDPSocket,按照borland的说法,TUDPSocket即可以作为client也可以作为server使用(UDP下,server与client的区别并不明显,但为了方便我们不妨这么称呼)(参考 turbo delphi win32 developer's guide里的Using Client Sockets和Using Server Sockets)。但是通过源码我们不难发现,TUDPS 阅读全文
posted @ 2010-07-10 17:49 Max Woods 阅读(1934) 评论(0) 推荐(0) 编辑
摘要: [代码] 阅读全文
posted @ 2010-07-08 16:57 Max Woods 阅读(677) 评论(0) 推荐(0) 编辑
摘要: BOOL TransmitFile( SOCKET hSocket, HANDLE hFile, DWORD nNumberOfBytesToWrite, DWORD nNumberOfBytesPerSend, LPOVERLAPPED lpOverlapped, LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, DWORD dwFlags ); 参数: hSocket 面向连接的SOCKET句柄。 hFile 已打开的文件句柄 nNumberOfBytesToWrite 要传送的字节数。0值表... 阅读全文
posted @ 2010-07-08 14:52 Max Woods 阅读(1440) 评论(0) 推荐(0) 编辑
摘要: Winsock 提供两个专门为文件和内存数据传输进行了优化的函数。其中TransmitFile()这个API函数在Windows NT 4.0 和 Windows 2000上都可以使用,而TransmitPackets()则将在未来版本的Windows中实现。TransmitFile()用来把文件内容通过Winsock进行传输。通常发送文件的做法是,先调用CreateFile()打开一个文件,然后不断循环调用ReadFile() 和WSASend ()直至数据发送完毕。但是这种方法很没有效率,因为每次调用ReadFile() 和 WSASend ()都会涉及一次从用户模式到内核模式的转换。如果 阅读全文
posted @ 2010-07-08 14:46 Max Woods 阅读(447) 评论(0) 推荐(0) 编辑
摘要: Delphi TServerSocket,TClientSocket实现传送文件代码 1.建立两个工程Server及Client, 分别放TServerSocket及TClientSocket控件,Demo,Edit控件等。 2.设置TServerSocket name为 SS, ServerType为stNonBlocking,TClientSocket name为cs,ClientType为ctNonBlocking表示异步读写信息。注意ClientType和ServerType要相一致.若为ctBlocking则表示同步读写信息。 3.Socket传送文件的顺序图 a)Client- 阅读全文
posted @ 2010-07-06 14:18 Max Woods 阅读(1839) 评论(0) 推荐(0) 编辑
摘要: 不知道什么时候,使用较新版本的VC IDE编译“转换”以后的旧版本的VC项目时,会收到来自于“winnt.h”的错误;而错误的原因主要由下面这行代码引起的。 typedef void * POINTER_64 PVOID64; 很明显,“POINTER_64”应该是为了适应未来的64位指针而“新生的事物”!编译/预处理器可能是受了旧版VC项目的“束缚”,无法解释这个新玩意儿是咋回事。糟糕的是,我也... 阅读全文
posted @ 2010-07-02 22:23 Max Woods 阅读(688) 评论(0) 推荐(0) 编辑
摘要: Introduction For those of us unfortunate enough to have to deal with it, HL7 is a commonly encountered language used by medical systems to communicate with each other. It is what someone dreamed up w... 阅读全文
posted @ 2010-07-01 17:45 Max Woods 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 用法: uses Decode.pas ...... var str : String; ..... str := DecodeLine7Bit('=?gb2312?B?0MK9qCDOxNfWzsS1tS50eHQ=?='); ..... ********************************* //Decode.pas unit Decode; interface use... 阅读全文
posted @ 2010-07-01 11:31 Max Woods 阅读(1435) 评论(0) 推荐(0) 编辑
摘要: 1.控制面板/管理工具/Internet Services Manager/要设置的网站/属性/主目录 设置最下面的"应用程序保护"为"低(IIS 进程)" 将存放dll的虚拟目录同样设置…… 2.控制面板/管理工具/服务 将HTTP/FTP/SMTP服务设置为手工开启 3.控制面板/管理工具/本地安全设置/本地策略/用户权利指派 在"以操作系统方式操作"中添加你的用户名, 如果不清楚或者是开发用机器,就设置为everyone算了,呵呵 4.将以下文本粘贴到一个新文件中,保存为IISProcess.reg 并双击合并之,以设置IIS作为一个进程而不是缺省的服务运行 如果要恢 阅读全文
posted @ 2010-07-01 11:29 Max Woods 阅读(331) 评论(0) 推荐(0) 编辑
摘要: unit FReplace; interface Type TFastPosProc = function( const aSourceString, aFindString : String; const aSourceLen, aFindLen, StartPos : integer ) : integer; function FastReplace( var aSourceS... 阅读全文
posted @ 2010-07-01 11:25 Max Woods 阅读(1089) 评论(0) 推荐(0) 编辑
摘要: 在网络程序中,我们常常碰到需要用户输入IP地址的情况。然而C++ Builder并没有为我们提供可以用于输入IP串的控件,于是我们只好用TEdit控件(单行文本框)来接受用户输入的IP串。但是,使用TEdit来输入IP串并不是一个好的主意,因为处理起来非常不方便。事实上,在我们的身旁有一个专门用来输入IP串的Windows控件,就象网络链接属性中, Internet 协议 (TCP/IP) 属性中输入IP的控件。IP控件会拒绝非法的IP串(在每个部分只能输入0~255之间的数字);它让你可以轻松地获取控件中的IP串所对应的IP值(32位整数),这省去了IP串和IP值之间相互转换的麻烦;此外,你 阅读全文
posted @ 2010-06-24 21:44 Max Woods 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 初次接触DELPHI对它提供的RAD快速编程模式颇感神奇,随手拖放及格控件设定些属性一个应用程序就诞生了,我正是被这种特性所吸引。随着深入,慢慢的窥探到了DELPHI的VCL体系,知道了随手拖放背后隐藏的秘密:一切都起源于VCL的对象体系,一切都是面对对象的编程思想。Object pascal就是是怎样实现这个体系的呢,它究竟是如何将面对对象的特性表现出来的呢,Delphi的类和对象究竟是以什么样的形式存在的呢。带着这些问题我翻阅了一些书籍,也借鉴了一些网友的成果,做了下面的探索。动态内存与静态内存 程序需要执行必须先装载入内存,任何程序表现的数据都存在内存中。当程序运行时,系统首先将所有数据 阅读全文
posted @ 2010-06-24 10:21 Max Woods 阅读(486) 评论(0) 推荐(1) 编辑
摘要: 函数名称 说明 auxGetDevCaps 查询指定的辅助输出设备以确定其性能 auxGetNumDevs 检取系统中存在的辅助输出设备的数量 auxGetVolume 返回指定的辅助输出设备的当前卷设备 auxOutMessage 向指定的辅助输出设备发送一条消息 auxSetVolume 在指定的辅助输出设备中设置卷 CloseDirver 关闭指定的可安装驱动器 DefDriv... 阅读全文
posted @ 2010-06-24 09:32 Max Woods 阅读(533) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) 执行 许多人都知道 ShellExecute ,用于执行一个外部命令。但对于 IShellFoloder 对象来说,它的执行命令,都在它的 ContextMenu 里面了。记得前几节说过如何直接调用 ContextMenu 里的项,因此,执行一个 IShellFoloder,也无非是调用它的 ContextMenu 里默认的项而已://存放 PIDL 的数组 IntPtr[] pidls = new IntPtr[1]; pidls[0] = pidl; //得到 IContextMenu 接口 IntPtr iConte 阅读全文
posted @ 2010-06-23 23:48 Max Woods 阅读(452) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) 有关 PIDL PIDL亦有“绝对路径”与“相对路径”的概念。表示“相对路径”的PIDL(本文简称为“相对PIDL”)只有一个ITEMIDLIST结构的元素,用于标识相对于父文件夹的“路径”;表示“绝对路径”的PIDL(简称为“绝对PIDL”)有若干个ITEMIDLIST结构的元素,第一个元素表示外壳名字空间根文件夹(“桌面”)下的某一子文件夹A,第二个元素则表示文件夹A下的某一子文件夹B,其余依此类推。这样绝对PIDL就通过保存一条从“桌面”下的直接子文件夹或文件的绝对PIDL与相对PIDL是相同的,而其他的文件夹或文件的相 阅读全文
posted @ 2010-06-23 23:47 Max Woods 阅读(626) 评论(1) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) 上一节说到如何弹出 IShellFolder 的上下文菜单,也就是 IContextMenu。有时候我们需要在这个菜单上面,加入一些属于自己的菜单项。举个例子,你打开资源管理器,查看左边目录树的右键菜单,会发现顶层多了一个折叠/展开的菜单项。好,我们也动手来加入这个菜单项。 修改例子3,我们找到 QueryContextMenu 处,这时候提供了一个菜单句柄://提供一个弹出式菜单的句柄 IntPtr contextMenu = API.CreatePopupMenu(); iContextMenu.QueryContextM 阅读全文
posted @ 2010-06-23 23:46 Max Woods 阅读(605) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) 这里解释上一节中获取名称的方法 GetDisplayNameOf 定义:void GetDisplayNameOf( IntPtr pidl, SHGNO uFlags, IntPtr lpName);该方法是用来转换PIDL成为可显示的名称字符串。PIDL必须是相对于对象的父目录的。换句话说,它必须包含一个非空的SHITEMID 结构。因为有多种命名对象的方式,资源管理器通过在uFlags参数中定义SHGNO标识的组合来表示名称类型。SHGDN_NORMAL或SHGDN_INFOLDER将被用来指定名称是相对于文件夹的 阅读全文
posted @ 2010-06-23 23:44 Max Woods 阅读(860) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) 让我们详细解释一下 Shell 编程中最基本的一些函数、结构体和枚举。 SHGetDesktopFolder 获取桌面的 IShellFolder 接口[DllImport("shell32.dll")] public static extern Int32 SHGetDesktopFolder(out IntPtr ppshf);要使用这个函数,必须先定义一个 IntPtr 指针。然后通过指针,使用 GetObjectForIUnknown 返回通过指向 COM 对象的 IShellFolder 接口的指针实例。于是需要编 阅读全文
posted @ 2010-06-23 23:43 Max Woods 阅读(786) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~)从本节起,我所要讲述的是对 Windows 系统的“Shell 扩展”。“Shell 扩展”从字面上分两个部分:Shell 与 Extension。Shell 指 Windows Explorer,而Extension 则指由你编写的当某一预先约定好的事件(如在以. doc 为后缀的文件图标上单击右键)发生时由 Explorer 调用执行的代码。因此一个“Shell 扩展”就是一个为 Explorer 添加功能的 COM 对象。 “Shell 扩展”有很多种类型,每种类型都在各自不同的事件发生时被调用运行,但也有一些扩展的类型和 阅读全文
posted @ 2010-06-23 23:42 Max Woods 阅读(3935) 评论(1) 推荐(2) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~)关于注册动态库必须注册才能使用。除了使用 regasm 来注册 DLL 以外,还应该在代码中增加 RegisterServer 和 UnregisterServer 方法,以指导 DLL 注册时,在 Windows 注册表中增加什么键。关于具体键以下做简单说明:1) 注册 DLL 的 Shell Extensions。具体位置是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved,增加以 GUID 为名称的键 阅读全文
posted @ 2010-06-23 23:41 Max Woods 阅读(788) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~)QueryInfo扩展 活动桌面引入一项新特性,当你在某些特定对象上旋停鼠标时,工具提示将显示它们的描述。我们可以使用 QueryInfo 扩展为Shell中的其它对象提供自定义的工具提示。如下图: 事实上,这个功能实现比前两个 Shell 扩展更简单,它仅仅是实现 IQueryInfo 接口:IQueryInfo 接口定义 [ComImport(), ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), GuidAttribute("00 阅读全文
posted @ 2010-06-23 23:40 Max Woods 阅读(553) 评论(0) 推荐(0) 编辑
摘要: (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~) Windows Shell 编程,即 Windows 外壳编程。我们所看到的资源管理器以及整个桌面,都是一个 Shell。 关于 Windows 外壳的基本概念,我这里不做详细介绍,不了解的朋友,可以看看 姜伟华 的 Windows外壳名字空间的浏览。 好,现在让我们从基础学起,早日做出一个强大的资源管理器软件。(偶也是初学者,多多指教)1 - 基础,浏览一个文件夹我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直 阅读全文
posted @ 2010-06-23 23:38 Max Woods 阅读(675) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页