收藏 分销(赏)

delphi基础教程.doc

上传人:二*** 文档编号:4484177 上传时间:2024-09-24 格式:DOC 页数:76 大小:723KB 下载积分:5 金币
下载 相关 举报
delphi基础教程.doc_第1页
第1页 / 共76页
本文档共76页,全文阅读请下载到手机保存,查看更方便
资源描述
Delphi中DBEdit组件使用方法 出处:多特软件站  时间:2011-04-22  人气:325我要提问我来说两句 用Delphi开发简单的WebMail程序   Delphi 中压缩流和解压流的应用 核心提示:Delphi的DBEdit组件位于组件板的Data Controls页上,用于编辑数据表当前记录某字段的值。 相关下载: DelphiV7.0   Delphi的DBEdit组件位于组件板的Data Controls页上,用于编辑数据表当前记录某字段的值。DBEdit组件的主要属性与方法如下:   1、主要属性   (1)DataSource   用于选择数据源,使DBEdit组件通过数据源与数据表连接。当DBEdit通过数据源与数据表连接后,显示数据表的哪一个字段,则是由DataField字段决定的。   (2)DataField   用于选择数据字段,如果DataField设置为TB0602,则DBEdit用于显示与编辑字段TB0602的值。   DataSource与DataField是数据界面组件用于选择数据表与字段的最重要的2个属性。   (3)Enabled   当Enabled为True时数据界面组件有效,此时组件可用于编辑操作。当Enabled为False时,数据界面组件无效,运行后该组件呈灰色,不能用鼠标或键盘对该组件进行操作。   (4)ReadOnly   当ReadOnly为True时,数据只能读不能修改;为False时,数据可读可写。默认值为False。   以上属性也是大多数数据界面组件的共同属性,因此在下面的组件介绍中,不再重复介绍上述属性。   2、主要方法   (1)OnChange   当字段内容发生变化时触发该事件。   (2)OnClick   用鼠标单击组件触发该事件。   (3)OnDblClick   用鼠标双击组件触发该事件。   (4)OnKeyDown   当键按下时触发该事件。   (5)OnKeyUp   当键松开时触发该事件。   (6)OnMouseDown   当鼠标按下时触发该事件。   (7)OnMouseUp   当鼠标松开时触发该事件。   读者应注意,以上方法也是大多数数据界面组件共有的方法,大家可以试着写点小程序,这样才能掌握。 Delphi 中压缩流和解压流的应用 出处:多特软件站  时间:2011-04-25  人气:272我要提问我来说两句 Delphi中DBEdit组件使用方法   Delphi制作桌面时钟代码参考 核心提示:经常使用Delphi的朋友都知道,它为我们提供了两个流类来完成数据的压缩和解压缩,但该流在Delphi 的帮助中没有详细的说明,使得它们在使用起来有一定得困难。 相关下载: DelphiV7.0   软件开发者不免都要遇到压缩数据的问题!经常使用Delphi的朋友都知道,它为我们提供了两个流类(TCompressionStream和TDecompressionStream)来完成数据的压缩和解压缩,但美中不足的是,该流在Delphi 的帮助中没有详细的说明,使得它们在使用起来有一定得困难。其实在Delphi系统中提供了这两个类的源代码和库。保存在Delphi 光盘的InfoExtraslib Src和InfoExtraslibObj目录中(其中OBJ目录中保存的是库,Src目录中保存的是源代码,感兴趣的朋友可以看看)。本人在使用的过程中,对它们有了一定的了解。   一、 类的说明   1、 基类 TCustomZlibStream:类TCustomZlibStream 是类TCompressionStream和TDecompressionStream 类的基类,它主要有一个属性: OnProgress,在类进行压缩或解压缩的过程中会发生这个的事件 ,它的定义如下:    Procedure OnProgress (Sender: TObject); dynamic;   2、 压缩类TCompressionStream:类TCompressionStream除了继承了基类的 OnProgress 属性外,又增加了一个属性:CompressionRate,它的定义如下:    Property CompressionRate: Single read GetCompressionRate;通过这个属性,可以得到压缩比。   它的几个重要的方法定义如下:    Constructor TCompressionStream.Create (CompressionLevel: TCompressionLevel; Dest: TStream);   其中:TcompressionLevel(压缩类型),它由如下几个定义:    ①、 clNone :不进行数据压缩;    ②、 clFastest:进行快速压缩,牺牲压缩效率;    ③、 clDefault:进行正常压缩;    ④、 clMax: 进行最大化压缩,牺牲速度;    Dest:目的流,用于存放压缩过的数据。   Function TCompressionStream.Write (const Buffer; Count: Longint): Longint;   其中:Buffer:需要压缩的数据;    Count: 需要压缩的数据的字节数;    函数返回写入流的字节数。   压缩类TCompressionStream的数据只能是写入的,如果试图从其内部读取数据,将发生一个"Error "异常。需要压缩的数据通过方法 Write写入流中,在写入的过程中就被压缩,并保存在由构造函数提供的内存流(TmemoryStream)中,同时触发 OnProcess 事件。   3、 解压缩类 TDecompressionStream :和压缩类TcompressionStream 相反,它的数据是只能读出的,如果试图往其内部写数据,将发生一个"Error "异常。它的几个重要方法定义如下:    构造函数:Constructor Create(Source: TStream);    其中:Source 是保存着压缩数据的流;     Function Read(var Buffer; Count: Longint): Longint;    数据读出函数,Buffer: 存数据缓冲区;    Count: 缓冲区的大小;    函数返回读出的字节数。    数据在读出的过程中,数据被解压缩,并触发 OnProcess 事件。   二、 类的使用   通过类TCompressionStream和TdecompressionStream的配合使用,我们可以非常方便地完成数据的压缩和解压,下面就是本人在编写屏幕拷贝程序中的使用例子: Procedure TClientForm.GetScreen;  Var   SourceDC,DestDC:HDC;   Bhandle:HBITMAP;   BitMap:TBitMap;   BmpStream,Deststream:TMemoryStream;   SourceStream:TCompressionStream;   Count:Integer;  Begin   SourceDC:=CreateDC('display','','',nil);   {得到屏幕的 DC}   DestDC:=CreateCompatibleDC(SourceDC);   {建立临时 DC}   Bhandle:=CreateCompatibleBitmap(SourceDC,Screen.Width, Screen.Height);   {建立位图}   SelectObject(DestDC,Bhandle);   {选择位图DC}   BitBlt(DestDC,0,0,Screen.Width, Screen.Height,SourceDC,0,0,SRCCOPY);   {拷贝整个屏幕}   BitMap:=TBitMap.Create;   BitMap.Handle := Bhandle;   {保存屏幕位图到 BitMap中}   BmpStream:=TMemoryStream.Create;   BitMap.SaveToStream(BmpStream);   {建立位图数据的内存流}   count:=BmpStream.Size;   {保存位图的大小}   DestStream:=TMemoryStream.Create;   {目标流,保存压缩数据}   SourceStream:=TCompressionStream.Create(clMax, DestStream);   {构建压缩流,采用最大化压缩,并保存到目标流中}   try    BmpStream.SaveToStream(SourceStream);     {压缩位图流}    SourceStream.Free;     {完成压缩,释放压缩流}    BmpStream.Clear;     {清空原来位图流}    BmpStream.WriteBuffer(Count, Sizeof(Count));     {将原来位图的大小保存到新的位图流中,以便使用}    BmpStream.CopyFrom(DestStream, 0);     {将压缩数据附加到新的位图流后面}    BmpStream.Position := 0;    NMStrm.PostIt(BmpStream);     {发送位图流}   finally    DestStream.Free;    BmpStream.Destroy ;    BitMap.Destroy;    DeleteDC(SourceDC);    ReleaseDC(Bhandle,SourceDC);   end;   {释放有关资源} End;   该过程得到整个屏幕的图象拷贝,并利用压缩流SourceStream和内存流 Deststream将位图压缩,并重新把位图大小和压缩数据流保存到位图流中,发送出去,发送位图大小的目的是在解压前来确定需要的内存空间。 procedure TServerForm.NMStrmServMSG(Sender: TComponent; const sFrom: String; strm: TStream);  Var   StreamStr,DestStream:TMemoryStream;   SourceStream:TDecompressionStream;   count:Integer;   buffer:pointer;  begin   ScreenImage.Picture.Bitmap:=nil;   If Strm Is TMemoryStream Then    StreamStr := Strm AS TMemoryStream   Else    Exit;   StreamStr.Position := 0;   StreamStr.ReadBuffer(Count, Sizeof(Count));    {得到位图的大小}   GetMem(Buffer,Count);    {申请数据空间}   DestStream := TMemoryStream.Create;   SourceStream := TDecompressionStream.Create(StreamStr);    {构建解压流,压缩数据由StreamStr 流得到}   StatusBar.SimpleText := '正在处理图象';   Try    SourceStream.ReadBuffer(Buffer^,Count);     {读出解压数据}    DestStream.WriteBuffer(Buffer^,Count);     {保存到位图流中}    DestStream.Position := 0;    ScreenImage.Picture.Bitmap.LoadFromStream(DestStream);     {显示到屏幕上}   Finally    FreeMem(Buffer);    DestStream.Destroy;    SourceStream.Destroy;   End; end;   该过程首先从得到的数据流中取得位图大小,并申请内存空间,然后建立解压流,并将解压数据保存到位图流中,然后显示到屏幕上。   本文程序在Delphi6.0中调试通过。 Delphi制作桌面时钟代码参考 出处:天下网吧  时间:2011-04-22  人气:1414我要提问我来说两句 Delphi 中压缩流和解压流的应用   Delphi中TApplication类的用法 核心提示:delphi写时钟,delphi模拟时钟,delphi桌面时钟源码。 相关下载: DelphiV7.0    delphi写时钟,delphi模拟时钟,delphi桌面时钟源码    制作石英钟 (0 folders, 12 files, 26.51 KB, 26.51 KB in total.)    Exa22.dcu 9.21 KB    Exa22.dfm 799 bytes    Exa22.pas 4.79 KB    Exa22_pro.bdsproj 8.05 KB    Exa22_pro.bdsproj.local 463 bytes    Exa22_pro.cfg 428 bytes    Exa22_pro.dpr 233 bytes    Exa22_pro.identcache 160 bytes    Exa22_pro.res 876 bytes Delphi中TApplication类的用法 出处:多特软件站  时间:2011-04-22  人气:268我要提问我来说两句 Delphi制作桌面时钟代码参考   Delphi网吧P2P三层更新BT源码 核心提示:在Delphi中TApplication是一个有着十分重要作用的类。TApplication类是用于描述Delphi编制的应用程序的一个类。 相关下载: DelphiV7.0   在Delphi中TApplication是一个有着十分重要作用的类。TApplication类是用于描述Delphi编制的应用程序的一个类。通过对这个类的灵活应用可以编制许多有特点的程序。。   1) 检测当前Windows程序是否被激活:   TApplication类有一个属性——Active,这个属性就可以描述当前运行的程序是否被激活,成为Windows的焦点。检   测的代码如下:   If Application.Active=False then ShowMessage(’当前窗口没有被激活’);   2) 取得当前程序的名称:   TApplication类的EXEName属性可以返回这个可执行程序的完整文件名(包含路径)。实现的代码如下所示: ShowMessage(Application.ExeName);   3) 改变程序极小化时的标题   Tapplication类的Title属性。这个属性决定了程序最小化时的标题,而窗口中标题栏的标题是由Form的Caption属性来决定的。其代码如下: Form1.Caption:=’ 窗口的标题’; Application.Title:=’程序的标题’;   4) 指明程序的主窗口   Windows系统中的界面都是窗口,但一般来讲有一个主窗口。Tapplication的MainForm属性就可以返回程序的主窗口。   5) 显示消息框   Delphi可以生成一个含有中文显示的按钮,Tapplication的MessageBox函数了。这个函数的原形如下: function MessageBox(Text, Caption: Char; Flags: Longint): Integer 例如:Application.MessageBox('需要存盘吗?','提示信息',MB_OKCANCEL);   这个函数返回的是一个整型的数值,而这个数值被系统指定了具体的含义,比如:按下“确定”按钮时返回的值是“1”,按钮的意义及系统中对其定义的值: IDOK 1 IDCANCEL 2 IDABORT 3 IDRETRY 4 IDIGNORE 5 IDYES 6 IDNO 7   6) 控制窗口的尺寸   一般可以用窗口手柄来调整窗口的尺寸,但是也可以用Application的事件来调整。实现的方法是用以下两个过程: Application.Minimized; Application.Restore;   前一个过程用来将程序的主窗口最小化,而后一个过程用来将最小化的窗口恢复到原来的尺寸。   7) 链接联机帮助文件   Application的CurrentHelpFile属性能够指定当前程序所用的联机帮助文件的文件名。这个属性经常与另一个方法联合在一起使用。举例如下: Application.HelpFile := '联机帮助文件名'; Application.HelpJump('联机帮助文件的主题’)   通过这一命令组合,我们就能使系统弹出一个显示某主题的联机帮助文件。   8) 在程序运行时动态地创建窗口   窗口是在设计时加入到工程项目中的,但是有时也需要我们在程序运行时动态地加入窗口,这就要用到Application 的CreateForm过程,举例如下:   Form3:Tform3; //声明窗口类   Application.CreateForm(TForm3, Form3); //创建窗口   9) 结束程序   虽然我们可以用关闭主窗口的方法来关闭一个程序,但是更好的办法是用Application的Terminate过程。它能够起到更彻底地关闭程序的效果。   10) Destroy 属性.   虽然Delphi提供了这一属性, 但是并不提倡使用它,如果要终结程序就要调用Terminate过程,而Destroy过程一般是用来在程序发生悬挂时来退出程序时才调用,有些类似 Windows中的结束任务功能。它不仅能关闭程序实例本身,而且还能释放程序所占用的资源,能够达到将程序彻底清除出系统的目的。 Delphi网吧P2P三层更新BT源码 出处:天下网吧  时间:2011-04-22  人气:809我要提问我来说两句 Delphi中TApplication类的用法   Delphi中如何取得系统支持的颜色数 核心提示:BT核心源码也在里面,自己的核心。由delphi实现的bt下载器示例程序,带全部源码和BT协议 相关下载: DelphiV7.0   BT核心源码也在里面,自己的核心。   由delphi实现的bt下载器示例程序,带全部源码和BT协议   包中文件说明: BTDemo.dpr, BTDemoF.pas, BTDemoF.dfm -- 一个简单的bt下载器,支持多个.torrent文件同时下载 btutils.pas -- 核心bt组件 DCP*.pas -- SHA算法源码(复制自DEC组件包) InetUtils.pas -- 提供Internet下载的函数库 SimpleSocks.pas -- socket组件(TCP) SortLists.pas -- 排序的List组件 ThreadTimer.pas -- 定时器与线程池 DelayLists.pas -- 一个延时5秒再释放Object的队列 FastShareMem.pas, MemPools.pas, ShareGlobals.inc -- 由ThreadTimer内部使用 Bit Torrent Specification.htm -- BT协议文档 图片:1.jpg Delphi中如何取得系统支持的颜色数 出处:多特软件站  时间:2011-04-22  人气:117我要提问我来说两句 Delphi网吧P2P三层更新BT源码   利用API函数开发DELPHI程序 核心提示:在自己的软件中经常需要得知运行本软件的系统支持的颜色数。 相关下载: DelphiV7.0   在自己的软件中经常需要得知运行本软件的系统支持的颜色数。例如有的软件在16Bits的颜色数的计算机上开发而成,程序的颜色调试得非常漂亮,但是到了一台只支持16色的计算机上,程序变得非常难看。这就需要得到系统的颜色数。   Delphi中如何取得系统的颜色数呢?下面的程序就解决这个问题。 function GetSysColorNum:Integer; Var     ScreenDc:HDC;     NumBitsPixel:Integer; begin     Result:=0;     ScreenDc:=GetDC(0);     NumBitsPixel:=GetDeviceCaps(ScreenDc,BITPIXEL);     ReleaseDC(ScreenDC);     Result:=1 shl NumBitsPixel; End; 利用API函数开发DELPHI程序 出处:多特软件站  时间:2011-04-25  人气:256我要提问我来说两句 Delphi中如何取得系统支持的颜色数   delphi编程控制INI文件 核心提示:Windows的API函数是应用程序开发的有力辅助工具,对它们的恰当使用,可大大增强和改进应用程序与系统打交道的能力,使自己的程序 真正具有底层操作功能。 相关下载: DelphiV7.0   Windows的API函数是应用程序开发的有力辅助工具,对它们的恰当使用,可大大增强和改进应用程序与系统打交道的能力,使自己的程序 真正具有底层操作功能。作为RAD工具的基础代表,BORLANDDELPHI虽然本身也已提供了大 量强有力的函数和过程,但在某些场合、要求下,使用API函数将使你的程序进一步得到改 善,并可拓宽范围,简化程序代码。   在DELPHI中引用API函数,和使用DELPHI本身的函 数、过程几乎没有区别。在DELPHI目录下有一个WINDOWS.PAS文件,凡是在其中声明过的API 函数,都可在编程时直接引用而无须另加说明。只是要注意,标准API函数都是以C或C++为 标准进行数据结构定义的,而DELPHI使用的是OBJECTPASCAL语言,因此在引用时应特别注 意参数和函数本身的数据类型。如一个API函数若为布尔值,则在DELPHI中就应以TRUE、FALSE 而不能用0、非0来对返回值进行判断。   下面以三个小例子来说明API函数在DELPHI中的 使用。   一、本地化消息框   想让自己的消息框显示“OK”、“Cancel”还是“确定”、“ 取消”?如果想使程序彻底本地化,那么还是放弃MessageDlg和ShowMessage吧——都怪DELPHI 没有。用MessageBox这个API函数照样方便。   使用语法为: MessageBox(HWND:hWND,lpMessage: PChar,lpCaption:PChar,uType:Cardinal);   各参数中,第一个为消息框所属的窗口句柄,第二 个为要显示的消息,第三个为消息框的标题,第四个为消息框的类型,函数返回值为整型数。   为使消息框有所归属,第一个参数设为当前窗口, 获取其句柄的方法是使用另一个API函数:GetActiveWindows(),且不需任何参数。   例1)Messagebox示例:   1.主要构件及属性的设置: form1:caption:messagebox示例  bordericons:biMaximize和biHelp设为false panel1:caption:文字部分Alignment:taLeftJustify panel2:caption:图象部分Alignment:taLeftJustify button1~button12:caption分别为:确定、确定取消、 确定帮助取消、是否、重试取消、终止重试取消、 信息、提问、系统图标、警告、停止、组合方式 bitbtn1:kind:bkClose   如图一所示:   2.事件说明:(详见源程序,下仅举两例) {文字部分以button2click()为例} procedureTForm1.Button2Click(Sender:TObject); begin casemessagebox(getactivewindow(), 显示确定、取消框,例子,    okcancel) ofidok:messagebox(getactivewindow(), 您按下的是“确定”按钮, 结果,mb_ok); idcancel:messagebox(getactivewindow(), 您按下的是“取消”按钮, 结果,mb_ok); end; end; {图象部分以button8click()为例} procedureTForm1.Button8Click(Sender:TObject); begin messagebox(getactivewindow(),显示警告图标,例子, mb_iconwarning) end;   二、改进Windows9x的系统登录的安全性:   Win9x的“用户登录”窗口可谓来者不拒,密码不 对照样可以“登堂入室”,系统为用户保留的个人设置等信息也就毫无保密性可言,通过查 看Profiles目录,可轻松地将其复制或删除。虽然Win95、Win98的应用对象是个人用户,但 在某些场合下,还是让登录窗口起点作用的好。   要使系统登录具有安全性,对非法使用者真正能 拒之门外,不妨用两个API函数来实现此目的。   例二)系统登录检查   1.主要构件及属性设置: form1:caption:CheckUser height、width:设为最小值   2.事件说明: //定义变量 private size:cardinal; name:pchar; entry:boolean;{Privatedeclarations} procedureTCheckUser.FormShow(Sender:TObject); begin size:=64; name:=StrAlloc(64); {检查用户名,判断是按了“取消”按钮还是键入了新用户名} ifGetUsername(name,size) thenifname=’wj’//‘wj’为笔者机器的登录用户名 {在此,若允许的合法使用者不止一个,还可利用关系运算指定 一个以上的用户进入。 如:if(name=’computer1’)or(name=’computer2’) } thenentry:=true; close; end; procedureTCheckUser.FormClose (Sender:TObject;varAction:TCloseAction); begin ifnotentry thenExitWindowsEx(EWX_REBOOT,32); //若用户名不对,则重新启动Windows end; procedureTCheckUser.FormCreate(Sender:TObject); begin entry:=false;//设定初始值 end;   编译完毕后,生成EXE文件,然后打开注册表—— 使用Regedit,找到HKEY_LOCAL_MACHINESOFTWAREMicrWindowsCurrentVersionRUN 行,添加键值名(如:CheckUser)及键值(EXE文件所在的完整路径)。如图所示:   好了,重新启动一次,没有正确的密码还能进入吗 ?   三.没有“媒体播放器”的声音播放   日前做了一个小程序,想在“关于”窗口加上一段 声音说明,但小小的“关于”FORM放上一个长长的、Visible属性需为False的MediaPlayer构 件实在别扭。东查西找之下,还是靠API函数SNDPLAYSOUND()解决了问题——从而摆脱了MediaPlayer 的“束缚”。例三)使用API函数控制声音文件的播放:(部分代码) procedureTaboutBox.FormShow(Sender:TObject); begin //播放当前目录下的welcome.wav文件 sndplaysound(‘welcome.wav’,snd_async) end; procedureTAboutBox.FormClick(Sender:TObject); begin //停止播放 sndplaysound(‘’,snd_async); end;   别忘了,在USES子句中加入mmsystem单元。如果只 需要播放声音,那么一条API函数就能实现功能的还用得着MediaPlayer来大动干戈吗?   总之,使用DELPHI的“聪明的程序员”们应该充分 发挥DELPHI调用API函数方便快捷的优势,好好利用API函数以更好地为自己程序服务。 delphi编程控制INI文件 出处:多特软件站  时间:2011-04-22  人气:296我要提问我来说两句 利用API函数开发DELPHI程序   Delphi编写后台监控软件 核心提示:delphi编程控制INI文件从.INI文件中获取字符串 var 相关下载: DelphiV7.0 从.INI文件中获取字符串 var strResult:pchar; begin GetPrivateProfileString( 'windows', // []中标题的名字 'NullPort', // =号前的名字 'NIL', // 如果没有找到字符串时,返回的默认值 strResult, //存放取得字符 100, //取得字符的允许最大长度 'c:\forwin95\win.ini' // 调用的文件名 ); edit1.text:=strResult; //显示取得字符串 从.INI文件中获取整数 edit1.text:=inttostr(GetPrivateProfileInt( 'intl', // []中标题的名字 'iCountry', // =号前的名字 0,// 如果没有找到整数时,返回的默认值 'c:\forwin95\win.ini' // 调用的文件名 )); 向.INI文件写入字符串 WritePrivateProfileString( 'windows', // []中标题的名字 'load', // 要写入“=”号前的字符串 'accca', //要写入的数据 'c:\forwin95\win.ini' // 调用的文件名 ); 向.INI文件写入整数 WritePrivateProfileSection( 'windows', // []中标题的名字 'read=100', // 要写入的数据 'c:\forwin95\win.ini' // 调用的文件名 ); Delphi编写后台监控软件 出处:多特软件站  时间:2011-04-25  人气:424我要提问我来说两句 delphi编程控制INI文件   Delphi编程根据IP地址得到主机名 核心提示:后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管理员可以通过热键调出隐藏的运行界面。 相关下载: DelphiV7.0   后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管理员可以通过热键调出隐藏的运行界面。要作到这些,必须把当前进程变为一个系统服务,并且定义全局热键。   一、把当前进程变为一个系统服务:   目的是在任务列表中把程序隐藏起来。调用API函数RegisterServiceProcess实现。   二、定义全局热键(本例中定义热键Ctrl+Del+R),步骤:   1、定义捕获Windows消息WM_HOTKEY的钩子函数,即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;   2、向Windows加入一个全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄。   3、向Windows登记热键:调用API函数RegisterHotKey实现。   三、源程序: unit Unit1; interface uses Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private {热键标识ID} id: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Privat-Declarations} public { Public-Declarations} end; var Form1 : TForm1; implementation const RSP_SIMPLE_SERVICE=1; function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’K
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服