摘要: 以下例程可以实现禁止用户用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 阅读全文
posted @ 2013-05-01 17:08 小天1981 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2013-05-01 17:06 小天1981 阅读(271) 评论(0) 推荐(0) 编辑
摘要: UsesComObj;Edit1.Text :=CreateClassID; 阅读全文
posted @ 2013-05-01 17:02 小天1981 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一个友好的用户界面,必须具有下拉菜单,弹出菜单,工具条和快捷键。同样一个功能,程序员可能要提供几种操作方式,如文本拷贝,菜单命令&Copy,快捷键Ctrl+C,工具条上的拷贝按钮,都是程序员提供给用户的操作,可以大大方便了不同层次的用户。但是,多增加一种操作方式,就意味着增加响应事件的代码,还有,实现统一功能的多个操作必须一致,如剪切板上不为空的时候,菜单命令,快捷键,按钮,都是可以选择的Enabled状态,而剪切板上没有内容时,这些构件的Enabled状态都为假。当然,如果不集中控制这些细节的话,实现相同功能的构件要一致,必须多增加代码,控制较为复杂。Action就是将实现某个功能的 阅读全文
posted @ 2013-05-01 17:01 小天1981 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 使用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 阅读全文
posted @ 2013-05-01 17:00 小天1981 阅读(195) 评论(0) 推荐(0) 编辑
摘要: ******* 导出到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 阅读全文
posted @ 2013-05-01 16:56 小天1981 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2013-05-01 16:52 小天1981 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 在工程主文件中加入Delay(500);//启动程序时请延时一段时间,否则只能重启一次procedure RestartApp;varBatchFile: TextFile;BatchFileName: string;ProcessInfo: TProcessInformation;StartUpInfo: TStartupInfo;begintry BatchFileName := ExtractFilePath(ParamStr(0)) + '_D.bat'; AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile); 阅读全文
posted @ 2013-05-01 16:50 小天1981 阅读(599) 评论(0) 推荐(0) 编辑
摘要: uses ActiveX, ComObj, ShlObj;function CreateLinkToStartUp(AppName, WorkingDirectory,LinkFileName, Description: string; CurrentUser: Boolean = True): Boolean;//******************************************************************************// Function: 在开始启动里建立程序快捷方式// Param: AppName string 目标// Workin 阅读全文
posted @ 2013-05-01 16:49 小天1981 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 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; 阅读全文
posted @ 2013-05-01 16:45 小天1981 阅读(176) 评论(0) 推荐(0) 编辑