GetWindowText(Edit1.handle,Name,L) 获取Edit1内的字符到Name中,Name长度最大为L
GetWindowTextLength(Edit1.handle) 返回Edit1中的字符长度
hWnd := FindWindow( ‘IEFrame’, nil );返回浏览器的句柄
GetWindowText( hWnd, s, 128 );将浏览器中的标题考到S中去
MessageBeep(0);发出声音,选项有:
0 叮的一声
MB_ICONASTERISK SystemAsterisk //较好听
MB_ICONEXCLAMATION SystemExclamation
MB_ICONHAND SystemHand
MB_ICONQUESTION SystemQuestion
MB_OK SystemDefault
ShowCursor(False) 隐藏鼠标 ShowCursor(True) 显示鼠标
FindWindow(‘Progman’, nil); 返回桌面图标的句柄
procedure TForm1.Button5Click(Sender: TObject); //最小化全部窗体 var h:HWnd; begin h:=handle; while h > 0 do //当程序在运行 begin if isWindowVisible(h) then //如果窗体可见(即没有最小化) PostMessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0); h:=GetNextWindow(h,GW_HWNDNEXT); end; end;
WM_SYSCOMMAND消息:
SC_CLOSE SC_HOTKEY SC_HSCROLL SC_KEYMENU SC_MAXIMIZE SC_MINIMIZE SC_MOUSEMENU SC_MOVE SC_NEXTWINDOW SC_PREVWINDOW SC_RESTORE
SC_SCREENSAVE SC_SIZE SC_TASKLIST SC_VSCROLL SC_MONITORPOWER 显示器
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理
SendMessage要等到受到消息处理的返回码(DWord类型)后才继续
PostMessage执行后马上返回
SendMessage必须等到消息被处理后才会返回
模拟按键:
PostMessage(Form1.Handle, WM_KEYDOWN, VK_TAB, 0);模拟在窗体中按下Tab键
PostMessage(Edit1.Handle, WM_KEYDOWN, 65, 0);模拟在Edit控件中按下a键,其中65也可以换成VK_A,表示A键
WM_NCHITTEST
移动鼠标,按住或释放鼠标时发生
procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST; begin inherited; // 这样,移动就不可能了… Msg.Result := HTCLIENT; end;
GetCursorPos(P);
Hd := WindowFromPoint(P); //获取当前鼠标所在的句柄
KeyPreview := true; //可以接收键盘操作,在FormCreate中写入
GetCursorPos(P);
Hd := WindowFromPoint(P); //获得句柄
SendMessage(Hd, WM_GETTEXT, 1024, Integer(@Buf));
edit1.Text := Buf;
if string(buf)=’开始’ then
SetWindowText(Hd,’陈明’); 修改开始菜单中的文字
或 if SetWindowText(Hd,PChar(Edit1.Text)) <> false then 成功
if Shift >= [ssShift] 如果按下了Shift键,按键事件的Shift是一个集合
ExitWindowsEx(EWX_POWEROFF,0); //关闭系统并关闭电源
EWX_LOGOFF以其他用户身份登录
EWX_REBOOT重新启动计算机
EWX_SHUTDOWN安全关机
EWX_FORCE强行关机
str2:=StringReplace ( str1, ‘ ‘, ”, [rfReplaceAll] ); 将str1中的空格换成无,也就是去掉空格。
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
rfReplaceAll 替换所有 rfIgnoreCase 忽略大小写
function ChangeFileExt(const FileName, Extension: string): string;
将FileName文件的后缀改成Extension,如Extension为空则为去掉后缀。并没有真正的更改文件的文件名,只是返回一个新的字符串
function ReadString(const Section, Ident, Default: String): String;
Section为该ini文件的节名,Ident为键值,返回该键值对应的相等的值,出现错误则返回默认的参数Default: String
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Perform(WM_SYSCOMMAND, $F012, 0); end; //制作任意拖动窗体运行界面
浅谈Object Pascal的指针:http://www.mybr.org/thread-10284-1-4.html
GetWindowsDirectory( LPTSTR lpBuffer, // address of buffer for Windows directory UINT uSize // size of directory buffer ); 获取系统目录(C:\WINDOWS\System32)到lpBuffer中,其中uSize为lpBuffer的大小 GetMem(MySysPath,255); GetMem 建立一指定大小的动态变量,并将指针指向该处 GetSystemDirectory(MySysPath,255); ShowMessage(‘系统目录是:’+mysyspath);
MD5加密:
在USES中加入 IdHashMessageDigest,IdHash 这两个单元
function GetMD5Hash(Str:String):String; var md5 : TIdHashMessageDigest5; longWordRec : T4x4LongWordRecord; begin md5 := TIdHashMessageDigest5.Create; longWordRec:=md5.HashValue(Trim(Str)); //加密 {} Result:= md5.AsHex(longWordRec); md5.Free; end;
调用方法 GetMD5Hash(’123456′) 直接返回123456的MD5值
PostMessage(Button1.Handle,WM_LBUTTONDOWN,0,0);
PostMessage(Button1.Handle,WM_LBUTTONUP,0,0);有了BUTTONDOWN必须也要有BUTTONUP否则鼠标会一直处于按下状态,这两句话等效于:Button1.Click;
IntToHex(int Value, int Digits)
功能: 把一个整型数字转换成16进制形式的字符串. Value是被转换的整数, Digits是指16进制字符串的位数.第一个是要转换的十进制数,第二个是返回十六进制数的最小长度
procedure HasFormat(Format: Word): Boolean;查看剪切板里面是否含有Format类的数据
Format有如下选项:
CF_TEXT Text with a CR-LF combination at the end of each line.
CF_BITMAP A Windows bitmap graphic.
CF_METAFILEPICT A Windows metafile graphic.
CF_PICTURE An object of type TPicture.
CF_COMPONENT Any persistent object.
if Clipboard.HasFormat(CF_TEXT) then //如果剪切板里面的内容是文本格式 begin Memo1.Text := Clipboard.AsText; end;
在uses添加IdHashMessageDigest
procedure TForm1.Button1Click(Sender: TObject); var mymd5:TIdHashMessageDigest5; begin mymd5:=TIdHashMessageDigest5.Create; ShowMessage(mymd5.AsHex(mymd5.HashValue(‘admin’))); //计算字符串admin的MD5 ShowMessage(Copy(mymd5.AsHex(mymd5.HashValue(‘admin’)),9,16)); //获取16位字符串MD5 ShowMessage(mymd5.AsHex(mymd5.HashValue(TFileStream.Create(‘e:\VRMPVOL_CNsp2.iso’,fmOpenRead)))); //计算文件MD5 mymd5.Free; end;
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);//关闭显示器
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);打开显示器
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean;
Caption:标题 const Root:从哪个根目录开始可以为空 out Directory:将目录返回到这个参数上,如:SelectDirectory(‘请选择路径:’,”,Paths_);
控件的Hint属性为当运行时用户指针指到这个控件上时的提示文字
BOOL ClipCursor( CONST RECT *lpRect // pointer to structure with rectangle );该函数把光标限制在屏幕上的一个矩形区域内,例: var rect:TRect; begin rect.Left:=100; rect.Top:=100; rect.Bottom:=200; rect.Right:=200; ClipCursor(@rect); end;
获得键值的方法:
在keydown事件里面,Showmessage(IntToStr(Key));
启动记事本并加载一个纯文本文件:
ShellExecute(handle,’open’,pchar(‘notepad’),pchar(‘d:\123.txt’),0,SW_SHOW);
也可以为notepad.exe
打印一个文件:
ShellExecute(Handle, ‘print’, PChar(‘c:\readme.txt’),nil, nil, SW_SHOW);
用Windows Explorer打开一个文件夹:
ShellExecute(Handle, ‘explore’, PChar(‘c:\windows)’,nil, nil, SW_SHOW);
运行一个DOS命令并立即返回:
ShellExecute(Handle, ‘open’, PChar(‘command.com’),PChar(‘/c copy file1.txt file2.txt’), nil, SW_SHOW);
if fileExists(‘C:\WINDOWS\explorer.exe’) then begin showmessage(‘文件存在!’); end; //再来一个,如果文件不存在就创建 ^_^ if fileExists(‘nsgtao.dat’) then begin FileCreate(‘nsgtao.dat’); //此语句创建一个文件 end; //这个例子很好,能用在很多地方 目录操作 if not DirectoryExists(‘nsgtao’) then begin if not CreateDir(‘nsgtao’) then begin ShowMessage(‘创建目录不成功!’); end; end;
S扫描器:
s1:起始IP s2:端口 s3:结束IP s4:线程
s5:=’cmd.exe /k s.exe’+#32+’tcp’+#32+s1+#32+s3+#32+s2+#32+s4+#32+’/save’ winexec(pchar(s5),sw_show); ShellExecute(handle,’open’,pchar(‘cmd’),pchar(‘\c ‘+s5),nil,SW_SHOW);
以上两句代码都可以达到效果,用第二句较好,cmd.exe也可以为cmd但是有可能为cmd.bat所有写cmd.exe较好
最简单的自我删除:
begin WinExec(Pchar(‘cmd /c erase /F ‘ + GetCommandLine),0); ExitProcess(0); end;
BOOL EnumChildWindows( HWND hWndParent, // handle to parent window // 父窗口句柄 WNDENUMPROC lpEnumFunc, // callback function // 回调函数的地址 LPARAM lParam // application-defined value // 你自已定义的参数 );可以枚举一个父窗口的所有子窗口,第三个参数是用户自己定义的,用来传递给回调函数 int GetClassName( HWND hWnd, // handle of window LPTSTR lpClassName, // address of buffer for class name int nMaxCount // size of buffer, in characters );该函数获得指定窗口所属的类的类名。
使窗体全屏显示的代码:
procedure TForm1.Button1Click(Sender: TObject); begin //覆盖任务栏 Self.BorderStyle := bsNone; Self.Left := 0; Self.Top := 0; Self.Width := Screen.Width; Self.Height := Screen.Height; end; procedure TForm1.Button2Click(Sender: TObject); begin //保留任务栏 Self.BorderStyle := bsNone; Self.Left := Screen.WorkAreaLeft; Self.Top := screen.WorkAreaTop; Self.Width := Screen.WorkAreaWidth; Self.Height := Screen.WorkAreaHeight; end;
提取文件图标:
var Icon:TIcon; IconIndex: Word; begin ICON:=TICON.Create; //创建一个TICON IconIndex:= 0; Icon.Handle:=ExtractAssociatedIcon(Application.Handle, PChar(FileName), IconIndex); //Icon.SaveToFile(‘temp1.ico’); ImageIcon.Picture.Icon:= Icon;//ImageIcon为一个Image控件 ICON.Free; end;
ObjectBinaryToText(Input:TStream,Output:TStream);
将流对象Input中的二进制数据转换成字符格式,存放在流对象Output中
HotKeySpy组件用法:
添加HotKeys,双击组件添加代码
procedure TForm1.HotKeySpy1HotKeys(Sender: TObject; HotKeyIndex: Word); begin if HotKeyIndex=1 then showmessage(’123′); end;
其中HotKeyIndex为相应的HotKeys的Index值,
MSNPopUp组件的用法,功能是在右下角像MSN一像弹出一个对话框
procedure TForm1.Button1Click(Sender: TObject); begin MSNPopUp1.Options:= MSNPopUp1.Options-[msnAutoOpenURL]; //不自动打开网页 MSNPopUp1.Title := ‘审核提醒’; MSNPopUp1.Text := ‘dfsdfsdfsfsdfsf’; MSNPopUp1.ShowPopUp; end; //点击MSNPopUp里面的URL时的事件处理代码 procedure TForm1.MSNPopUp1URLClick(Sender: TObject; URL: String); begin form2.Show; end;
MSNPopUp组件的属性:
Opinions里面,msnAutoOpenURL如果有这个选项,则当点Text时会自动打开URL属性里面的那个网站Font为Text的字体
TitleFont当然是标题字体了
HoverFont为当鼠标指到Text上时Text的字体
Application.HintColor := TColor($FFD7C1); //背景颜色
控件的Hint设置:
Button1.ShowHint:=true; //设置为显示Hint Application.HintColor:=clRed; //窗体的背景(Hint)颜色 Button1.Hint:=’文字’; //设置要显示的内容
BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileName, // pointer to filename to copy to BOOL bFailIfExists // flag for operation if file exists ); 将lpExistingFileName拷贝成lpNewFileName,如果bFailIfExists为真,则如果存在目录文件lpNewFileName则删掉重新写,如果为假,则不重写
GetDriveType( LPCTSTR lpRootPathName // pointer to root path );lpRootPathName 硬盘名,如C:\等,返回为硬盘的类型,类型有: DRIVE_UNKNOWN The drive type cannot be determined. DRIVE_NO_ROOT_DIR The root directory does not exist. DRIVE_REMOVABLE The disk can be removed from the drive. DRIVE_FIXED The disk cannot be removed from the drive. DRIVE_REMOTE The drive is a remote (network) drive. DRIVE_CDROM The drive is a CD-ROM drive. DRIVE_RAMDISK The drive is a RAM disk.
FindFirst和FindNext两个搭配的函数,如果执行成功则返回为0