05 2013 档案
摘要:以下例程可以实现禁止用户用ALT+TAB或ALT+ESCAPE键切换程序,并且可以屏蔽左右windows键:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm) btn1: TButton; btn2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObj
阅读全文
摘要:uses TLHelp32, Classes;typeTProcessInfo = record ExeFile: string; ProcessID: DWORD;end;pProcessInfo = ^TProcessInfo;varAProcessList: Tlist; ////返回进程在这个TList中//获取进程列表procedure GetProcessList;varp: pProcessInfo;i: integer;ContinueLoop: BOOL;FSnapshotHandle: THandle;FProcessEntry32: TProcessEntry32;beg
阅读全文
摘要:UsesComObj;Edit1.Text :=CreateClassID;
阅读全文
摘要:一个友好的用户界面,必须具有下拉菜单,弹出菜单,工具条和快捷键。同样一个功能,程序员可能要提供几种操作方式,如文本拷贝,菜单命令&Copy,快捷键Ctrl+C,工具条上的拷贝按钮,都是程序员提供给用户的操作,可以大大方便了不同层次的用户。但是,多增加一种操作方式,就意味着增加响应事件的代码,还有,实现统一功能的多个操作必须一致,如剪切板上不为空的时候,菜单命令,快捷键,按钮,都是可以选择的Enabled状态,而剪切板上没有内容时,这些构件的Enabled状态都为假。当然,如果不集中控制这些细节的话,实现相同功能的构件要一致,必须多增加代码,控制较为复杂。Action就是将实现某个功能的
阅读全文
摘要:使用VclSkin后在窗体上放个SpeedButton按钮,把按钮的Visible属性设置为False,在程序运行时改变按钮的Caption属性,按钮又会显示出来,虽然不能点击,可是看着别扭.下边为解决方法:打开VclSkin代码的WinSubClass单元文件,修改如下:procedure TSkinSpeedButton.DrawSpeedbtn( acanvas:Tcanvas; rc:TRect);var acolor:Tcolor; i,n,j:integer; r1,TextBounds:Trect; TextPos: TPoint; GlyphPos, ClientSize, G
阅读全文
摘要:******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=A
阅读全文
摘要:Delphi中获取打印机设备名和端口名uses Printers;{$IFNDEF WIN32}const MAX_PATH = 144;{$ENDIF}procedure TForm1.Button1Click(Sender: TObject);var pDevice : pChar; pDriver : pChar; pPort : pChar; hDMode : THandle;begin if PrintDialog1.Execute then begin GetMem(pDevice, cchDeviceName); GetMem(pDriver, MAX_PATH); GetMem
阅读全文
摘要:在工程主文件中加入Delay(500);//启动程序时请延时一段时间,否则只能重启一次procedure RestartApp;varBatchFile: TextFile;BatchFileName: string;ProcessInfo: TProcessInformation;StartUpInfo: TStartupInfo;begintry BatchFileName := ExtractFilePath(ParamStr(0)) + '_D.bat'; AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile);
阅读全文
摘要:uses ActiveX, ComObj, ShlObj;function CreateLinkToStartUp(AppName, WorkingDirectory,LinkFileName, Description: string; CurrentUser: Boolean = True): Boolean;//******************************************************************************// Function: 在开始启动里建立程序快捷方式// Param: AppName string 目标// Workin
阅读全文
摘要:function IsTableExist(TableName:String):Boolean var MyStringList:TStrings; begin MyStringList := TStringList.Create; try ADOConnection1.GetTableNames(MyStringList, False); if MyStringList.IndexofName(TableName)=-1 thenRestlt:=FALSE else Result:=TRUE; finally MyStringList.Free; end; end;
阅读全文
摘要://得到本机或者网络上共享打印机的状态和打印任务//author:ginsonic//zdcnow download from E-Euse winspool;function PrinterStatusText(Status: Integer): String;begincase Status of 0: Result := 'Waiting'; JOB_STATUS_PAUSED: Result := 'Paused'; JOB_STATUS_ERROR: Result := 'Error'; JOB_STATUS_DELETING: Res
阅读全文
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, WinSpool, StdCtrls; varpi2:PRINTER_INFO_2;pno:PRINTER_NOTIFY_OPTIONS;pinfo:PPrinterNotifyInfo;//pinty:pPrinterNotifyOptionsType;hResult:THandle;pdwChange:DWORD;Result:LongBool;bo:boolean;i:integer;pn:a
阅读全文
摘要:function IsJpegFile(FileName: string): Boolean;constRightBuf : array[0..3] of Byte = ($FF,$D8,$FF,$D9);varBuf: array[0..3] of Byte;beginFillChar(Buf, 4, 0);with TFileStream.Create(FileName, 0) do begin Position := 0; ReadBuffer(Buf[0], 2); Position := Size-2; ReadBuffer(Buf[2], 2); Free;end;Result :
阅读全文
摘要:运行Delphi Distille后按Ctrl+Alt+L在菜单上会多出Secret stuff的TabSheet,选择需要破解的Delphi版本后点OK按钮退出.
阅读全文
摘要:大家检查下安装目录 lib下的SysConst.dcu文件,大小如果为17KB,就是被感染了。SysConst.dcu正确大小应该为12KB不到点点。lib/debug目录下有SysConst.dcu,替换回来就可以恢复正常!
阅读全文
摘要:一般XML的编码格式设置成UTF8比较通用,下面演示使用UTF8编码方式存储和处理包含中文的XML字符串(文件)。1.设置启用内置的widestring支持NativeXml内部使用ANSI string和UTF8编码的string两种字符串类型。如果要让NativeXml能够解析widestring字符串的话,直接将TNativeXml的Utf8Encoded属性设置为True。如下:FXmlDoc:= TNativeXml.Create;FXmlDoc.Utf8Encoded:= True;这样NativeXml内部会自动对Widestring和utf8做转换。此处需要注意的是,如果执行F
阅读全文
摘要:解压到目录:with CreateInArchive('Formats\zip.dll') dobegin OpenFile('c:\test.zip'); ExtractTo('c:\test');end;获取文件列表:with CreateInArchive('Formats\7z.dll') dobegin OpenFile('c:\test.7z'); for i := 0 to NumberOfItems - 1 do if not ItemIsFolder[i] then Writeln(ItemPat
阅读全文
摘要:uses winsvc;function InstallService(ServiceName, DisplayName, FileName: string): boolean;varSCManager,Service: THandle;Args: pchar;beginResult := False;SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);if SCManager = 0 then Exit;try Service := CreateService(SCManager, //句柄 PChar(ServiceNam
阅读全文
摘要://删除目录: function DelDirectory(const Source:string): boolean; var fo: TSHFILEOPSTRUCT; begin FillChar(fo, SizeOf(fo), 0); with fo do begin Wnd := 0; wFunc := FO_DELETE; pFrom := PChar(source+#0); pTo := #0#0; fFlags := FOF_NOCONFIRMATION+FOF_SILENT; end; Result := (SHFileOperation(fo) = 0); end;//复制目
阅读全文
摘要:function Format(const Format: string; const Args: array of const): string; $[SysUtils.pas 功能 返回按指定方式格式化一个数组常量的字符形式 说明 这个函数是我在Delphi中用得最多的函数,现在就列举几个例子给你个直观的理解 "%" [索引 ":"] ["-"] [宽度] ["." 摘要] 类型 Format('x=%d', [12]); //'x=12' //最普通 Format('x
阅读全文
摘要:在工程单元加入一下代码:CreateMutex(nil, True, '特殊标识字符');if GetLastError = ERROR_ALREADY_EXISTS thenbegin Exit;end;
阅读全文
摘要:以下代码相比网上其它某些文件传输代码精练很多,传输的文件大小任意,个人建议:写网络文件传输程序时最好用Indy的控件(因为其默认即阻塞模式,Server端已封装了多线程,没有数据包大小限制),ClientSocket VS ServerSocket传输文件很麻烦,要自定通信协议,并且有个8KB的瓶颈,实现大文件传输比较麻烦,服务端发送:var iFileHandle:integer; iFileLen,cnt:integer; buf:array[0..4096] of byte;begin iFileHandle:=FileOpen('E:\Study\深入Delphi6网络编程.r
阅读全文
摘要:添加控件XMLDocument。例子XML文件内容:(c:\temp\test.xml)<!--StartFragment--><?xml version="1.0" encoding="gb2312"?><科室名单 备注="测试"><人员 职务="科长" 备注="正局级"> <姓名>张三</姓名> <性别>男</性别> <年龄>34</年龄></人员><人员
阅读全文
摘要:DBGrid的拖放问题:设为dmAutomatic,则点击无法移动记录,设为dmManual则在记录上点击时无法响应MouseDown事件,请问哪位大侠能解决 --------------------------------------------------------------- 这是我在网上找的代码,经测试非常不错: procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then TDBGrid(Sender)....
阅读全文
摘要:拖放(DragDrop)是Windows提供的一种快捷的操作方式。作为基于Windows的开发工具,Delphi同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了Delphi的强大功能和方便性。 Delphi提供的所有控件(Control,即能获得输入焦点的部件)都支持拖放操作,并有相应的拖放属性、拖放事件和拖放方法。下面我们先介绍控件的拖放支持,而后再给出开发拖放操作的一般步骤和应用实例。 9.1 控件的拖放支持 拖放操作中控件可以分为源控件和目标控件两类。绝大部分控件既可以作为源控件也可以作为目标控件。但也有一部分控件只能支持其中的一种。 9.1.1 拖放属性 拖放...
阅读全文
摘要:1. 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。很多数据库应用程序都用了BDE,BDE往往给发布带来很大的不便,因而TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。在客户端,也不需要用TDatabase构件,因为客户端并不直接连接数据库。由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤等功能。由于 TClientData
阅读全文
摘要:ClientDataSet组件支持很多特性,其中一些与三级结构有关,而且还可以用在其他环境中。该组件说明了一个数据库完全映象在内存中,这使得可以进行动态的操作,如建立一个索引,其他数据集合通常不支持该特性。例如,为了对查询分类,我们通常是重新执行它。为了索引一个局部表格,需要定义索引。只有ADO数据集合有一些与ClientDataSet一样的动态索引功能。索引并不是ClientDataSet提供的全部功能。当我们拥有了索引之后,可以基于它定义组,可能是多级别的分组。对于确定一个记录在组中的位置(头、尾或中间位置),甚至有专门的支持。在组或整个数据表格中,我们可以定义总计;也就是说,可以动态计算
阅读全文
摘要:1.shift+鼠标左键 先选中任一控件,按键后可选中窗体(选中控件后按esc效果一样)2.shift+f8 调试时弹出cpu窗口。3.shift+f10 等于鼠标右键(windows快捷键)。4.shitf+箭头 选择5.shift +f12 快速查找窗体并打开6.f7 (步进式调试同时追踪进入子过程)7.f8 (步进式调试不进入子过程)8.f9 运行9.f12 切换editor,form10.alt+f4 关闭所有编辑框中打开的源程序文件,但不关闭项目11.alt+鼠标左键 可以块选代码,用来删除对齐的重复代码非常有用12.ctrl+f9 编译13.ctrl+shift+n(n=1,2,3
阅读全文
摘要:今天研究了一下delphi2010的unicode,发现一大堆的转换问题,建议大家老项目还是别转换到2010版本上,否则出问题都不知道在哪里。新项目可以直接使用delphi2010工作。在delphi2010中定义一个变量str,无论这个变量定义为string 还是 ansistring,pos和ansipos函数都将该变量str当做unicodestring类型处理,大家可要小心了。procedure TForm2.Button1Click(Sender: TObject);varstr: AnsiString;beginstr := '中华人民共和国';ShowMessag
阅读全文
摘要:在Delphi中,也有与C相似的预编译指令,虽然该类指令只在当前的单个文件有效(也有可能是笔者未全面了解该类指令的真正用法),但是这一类指令对于进行多版本的制作工作(如从标准版中出学习版),确实有着相当不错的用途。一.指令介绍:1. DEFINE指令:格式:{$DEFINE 名称} 说明 :用于定义一个在当前单元有效的符号(Symbol)。定义了 之后可以使用IF DEF和IFNDEF指令来判断该符号是否存在。2. UNDEF指令:格式:{$UNDEF 名称}说明:用于取消一个在当前单元已经定义的符号(Symbol)。该指令和DEFINE配合使用。3. IFDEF指令:格式:{$IFDEF 名
阅读全文
摘要:在网上常有人说Delphi的四舍五入有Bug!?相反,我认为Borland考虑得很全面,这不是Bug!Delphi帮助里面写得清清楚楚! SimpleRoundTo :四舍五入(不对称算数做法) RoundTo:四舍六入,五入单(银行家做法) RoundTo(1.235, -2) = 1.24 RoundTo(1.245, -2) = 1.24RoundTo是银行家的 做法,SimpleRoundTo才是我们平时说的四舍五入!
阅读全文
摘要:WebService使得不同开发工具开发出来的程序可以在网络连通的环境下相互通信,它最大的特点就是标准化(基于XML的一系列标准)带来的跨平台、跨开发工具的通用性,基于HTTP带来的畅通无阻的能力(跨越防火墙)。WebService给我们的软件开发带来了诸多好处,但是有一点还是必须要考虑到的,那就是安全问题。提供Service的一方要控制用户的限制访问,就要对来访的用户进行身份验证。验证成功则继续提供服务,否则就触发无权访问的异常,返回给客户。那么现在我们要解决的问题是这样的:用户的身份认证信息如何在调用主要服务前发送到服务方,从而进行验证?在WebService中,用户身份认证信息可以在客户
阅读全文
摘要:以前感兴趣做的小程序,当时就想用来传图片,李维的书上也有提及的,有两种方法,一种是把二进制对象转成base64码,返回字符串,应该是最简单的方法,另外一种就是返回二进制数组TByteDynArray服务器:function TFileSoap.getPic(out size:integer): TByteDynArray;varbuf:TMemoryStream;begintry if not FileExists('c:\1.bmp') then raise Exception.Create('file not found.'); buf:=TMemorySt
阅读全文
摘要:其实很简单:GridEH.GetFooterValue(0,GridEH.Columns[0])
阅读全文
摘要:DELPHI里的是这样的: function ArrayTst(strAry:Array of PChar):PChar;stdcall; var i:integer; strAdd:string; begin strAdd:= ' '; for i:=low(strAry) to High(strAry) do begin strAdd:=strAdd+strAry[i] end; Result:=PChar(strAdd); end; C#里是这样的: 声明: [DllImport( "ArrayTest1.dll ", EntryPoint = &qu
阅读全文
摘要:procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);varCross : TfrxCrossView;i,j : integer;beginif Sender is TfrxCrossView thenbegin Cross := TfrxCrossView(Sender); Table1.First; i := 0; while not Table1.Eof do begin for j := 0 to Table1.Fields.Count - 1 do if not table1.Fields[j].Is
阅读全文
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AppEvnts, ExtCtrls, StdCtrls;type TForm1 = class(TForm) procedure Button1Click(Sender: TObject); private{ Private declarations } procedure WMDeviceChange(var Msg: TMessage); message WM_DEVIC.
阅读全文
摘要:1,窗体内放入一个TMaskEdit控件2,设置控件EditMask属性Input Mask值为999.999.999.999,Character for Blanks值为 空格,Save Literal Charaters值为True.3,设置AutoSelect属性值为False4,控件的OnChange事件添加如下代码:procedure TFrmMain.MEdtServerIPChange(Sender: TObject);vart: array[0..3] of string;i, j, len: integer;beginlen := StrLen(PChar(MEdtServe
阅读全文
摘要:unit Main;{服务端部分作者:Jony[E.S.T]创建日期:2005-12-17声明:纯真IP数据库读取参考 冷风兄 的代码 修改EXE内容使用MPHexEditor控件技术重点:其实也没什么重点,无非是ServerSocket和ClientSocket}interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, ComCtrls, ImgList, Menus, ScktComp, untTQQWry , Create, Hel..
阅读全文
摘要:自定义事件定义的方法和定义属性差不多,只是类型时TNotifyEvent。 TNotifyEvent是默认事件,其定义为: TNotifyEvent = procedure(Sender: TObject)示例一(仅列出相当代码):type TParent=class(TObject) private FTimeOut:TNotifyEvent;//事件的方法指针 protectedprocedure DoTimeOut;dynamic; //调度方法,用于关联事件。publicpublished property OnTimeOut:TNotifyEvent read FTimeOut ..
阅读全文
摘要:在Windows中,用鼠标右键单击文件或者文件夹时弹出的那个菜单便称为上下文相关菜单。要动态地在上下文相关菜单中增添菜单项,可以通过写Context Menu Handler来实现。比如大家所熟悉的WinZip和UltraEdit等软件都是通过编写Context Menu Handler来动态地向菜单中增添菜单项的。如果系统中安装了WinZip,那么当用右键单击一个名为abc的文件(夹)时,其上下文相关菜单就会有一个名为Add to abc.zip的菜单项。本文要实现的Context Menu Handler与WinZip提供的上下文菜单相似,它将在任意类型文件的上下文菜单中增加一个名为“用写
阅读全文
摘要:unit ContextMenuHandler;interfaceusesWindows, ActiveX, ComObj, ShlObj, Classes, Dialogs, Forms;typeTContextMenu = class(TComObject, IShellExtInit, IContextMenu)privateFFileName: array[0..MAX_PATH] of Char;protectedfunction IShellExtInit.Initialize = SEIInitialize; // Avoid compiler warningfunction S
阅读全文
摘要:======================server============================unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;Edit1: TEdit;Button1: TButton;IdTCPServer1: TId
阅读全文
摘要:用idTCPServer,客户端接上来时,如何取得客户端的IP?IP:=AThread.Connection.Binding.PeerIP;Port:=AThread.Connection.Binding.PeerPort; 尝试解答你的疑问:问题一:在Form1中放入IDTCPServer控件,一旦有socket连接,IDTCPServer自动建立一个线程与之建立一个TCP/IP连接,我们在IDTCPServer.OnExecute中写入自己的代码就可以在这个独立的线程中完成我们所希望的动作吗?解答:一旦有socket连接,IDTCPServer 不仅建立一个线程,更需要把这个建立的线程保存
阅读全文
摘要:用户异常掉线检测 David.Zhu 2005/6/1 目前主要有三种方法来实现用户掉线检测:SO_KEEPALIVE ,SIO_KEEPALIVE_VALS 和Heart-Beat线程。下面我就上面的三种方法来做一下介绍。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setsockopt API: BOOL bSet=TRUE; setsockopt(hSocket,SOL_SOCKET,SO_KEEPALIVE,(const char*)&bSet,sizeof(BOOL)); 根据MSDN的文档,如果为socket设置了KEEPALIVE选项,TC
阅读全文
摘要:有开发网络应用经历的人都知道,网络中的接收和发送数据都是使用WINDOWS中的SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢? 有人一定想到使用Send函数中的返回结果来进行判断。如果返回的长度和自己发送出去的长度一致,那就说明这个套接字是可用的,否则此套接字一定出现了问题。但是我们并不是无时无刻的发送数据呀。如何解决呢? 其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议..
阅读全文
摘要:内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。本文的目的在于描述和分析在实际中运用得最广泛、最可靠同时也是最简单的一种NAT穿越技术,该技术通常被称为“打洞”技术。目前,“打洞”技术已经在UDP通信领域中得到了广泛的理解和应用,在此,也将讨论如何利用它实现可靠的p2p的TCP流通信。在收集了大量的“打洞”技术可以穿越的N
阅读全文
摘要:前奏:A,B登陆服务器S,获得对方的公网IP Port. 后继:如果A需要和B通讯。 步骤一: A把连接申请递交给服务器S。 步骤二: S把A的连接申请通知B,并且把A的公I和Port也告知B。 步骤三: B对A(IP,Port)方向打洞,且通知S 步骤四: S把B打洞信息通知给A,且把B的公网IP也告知A。 步骤五: A开始和B直接通讯。
阅读全文
摘要:如果要求提交版本库时必须写日志,设置如下VisualSVNServer下右键项目“所有任务”》“ManageHooks”》选中Pre-commithook然后edit编辑,添加如下代码@echooff::::Stopscommitsthathaveemptylogmessages.::@echooffsetlocalremSubversionsendsthroughthepathtotherepositoryandtransactionidsetREPOS=%1setTXN=%2remcheckforanemptylogmessagesvnlooklog%REPOS%-t%TXN%|finds
阅读全文
摘要:Delphi开发ocx苦于调试,网上看了下大概配置:IE调用ocx调试配置,在当前ocx工程run-->parameters-->hostapplication里面配置IE的程序地址(C:\ProgramFiles\InternetExplorer\iexplore.exe)Parameters里面是要访问的调用ocx文件的页面(...文件目录\JsInterface.htm)关于IE8设置断点无法进入的问题regedit→HKEY_LOCAL_MACHINE→SOFTWARE→Microsoft→InternetExplorer→Main。在Main里新建一个DWORD类型名为T
阅读全文
摘要:最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做。示例:有表內容﹕名称內容1abc1aaa1dddd212232fkdjfd--------------------------------结果﹕1abc,aaa,dddd21223,fkdjfd要求用一条SQL语句实现﹐如﹕selectsum(內容)fromtablegroupby名称--该问题,一共使用了三种方法,并分别测试了一下这三种方法的各自的性能1:创建处理函数2:sql2005及以上版本中的新的解决方法,FORXML3:使用临时表实现字符串合并处理的示例说明:以下测试是以本人机器的
阅读全文

浙公网安备 33010602011771号