1.汇编指令 机器码的助记符,有着对应的机器码
2.伪指令 没有对应机器码,编译器执行,电脑不会执行
3.其它符号 如+ - * /等,编译器识别,无对应机器码
posted @
2009-02-28 03:22 小叶子 阅读(313) |
评论 (0) |
编辑 收藏
今天下了一本王爽的汇编语言,PDF书
也许了解一下汇编对学DELPHI更有帮助
如你自己有兴趣,也下载一本吧
经过几天学习,发现这本书真的不错
所以么,我也给大家一个下载地址
由于这本书的PDF太大,博客里放不开,我就传到了网盘上让大家下载
书和答案全有,不过答案感觉有的一些错了,自己找错不是更好的提高么,呵呵.
王爽汇编语言下载
答案下载
posted @
2009-02-20 16:19 小叶子 阅读(501) |
评论 (0) |
编辑 收藏
工程中加:
Memo1: TMemo;
Button1: TButton;两个
在uses中加入wininet,windows;
implementation
{$R *.dfm}
function GetWebPage(const Url: string):string;
var
Session,
HttpFile:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
begin
Session:=InternetOpen('',0,niL,niL,0);
HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
dwLengthSizeBuffer:=1024;
HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result:=StrPas(Contents);
form1.Memo1.Lines.Add(Contents);
FreeMem(Contents);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetWebPage(pchar('http://www.baidu.com'));
end;
posted @
2009-02-09 03:36 小叶子 阅读(1374) |
评论 (2) |
编辑 收藏
FindWindow(
lpClassName,
{窗口的类名} lpWindowName: PChar
{窗口的标题}): HWND;
{返回窗口的句柄; 失败返回 0}FindWindowEx(
Parent: HWND;
{要查找子窗口的父窗口句柄} Child: HWND;
{子窗口句柄} ClassName: PChar;
{} WindowName: PChar
{}): HWND;
GetClassName(
hWnd: HWND;
{指定窗口句柄} lpClassName: PChar;
{缓冲区} nMaxCount: Integer
{缓冲区大小}): Integer;
{返回类名大小; 失败返回 0}获取指定窗口的类名 GetNextWindow(
hWnd: HWND;
{指定的窗口句柄} uCmd: UINT
{指定的关系选项}): HWND;
{失败返回0; 成功返回符合的窗口句柄}//uCmd 可选值:
GW_HWNDNEXT =
2;
{同级别 Z 序之下}GW_HWNDPREV =
3;
{同级别 Z 序之上}获取指定窗口Z上或Z下的窗口的句柄
GetTopWindow(
hWnd: HWND;
{指定的窗口句柄}): HWND;
{失败返回0; 成功返回最顶层的子窗口句柄}获取指定窗口的子窗口中最顶层的窗口句柄GetWindow(
hWnd: HWND;
{指定的窗口句柄} uCmd: UINT
{指定的关系选项}): HWND;
{失败返回0; 成功返回符合的窗口句柄}//uCmd 可选值:
GW_HWNDFIRST =
0;
{同级别第一个}GW_HWNDLAST =
1;
{同级别最后一个}GW_HWNDNEXT =
2;
{同级别下一个}GW_HWNDPREV =
3;
{同级别上一个}GW_OWNER =
4;
{属主窗口}GW_CHILD =
5;
{子窗口}获取与指定窗口具有指定关系的窗口的句柄
GetForegroundWindow: HWND;
获取前台窗口的句柄 GetWindowTextLength(
hWnd: HWND
{窗口句柄}): Integer;
{返回窗口标题长度} 获取窗口标题长度
GetWindowText(
hWnd: HWND; {窗口句柄}
lpString: PChar; {接收文本的缓冲区的指针}
nMaxCount: Integer {指定缓冲区大小, 其中包含NULL字符; 如果文本超出,会被被截断}
): Integer; {返回字符个数, 不包括中断的空字符; 如果标题为空或句柄无效, 则返回零}
获取窗口标题
SetWindowText(
hWnd: HWND; {窗口句柄}
lpString: PChar {新标题串指针}
): BOOL;设置窗口标题
GetDesktopWindow: HWND; {无参数; 返回桌面窗口的句柄}
posted @
2009-02-08 21:28 小叶子 阅读(2295) |
评论 (0) |
编辑 收藏
getparent(子窗口句柄) 得到父窗口句柄
posted @
2009-02-05 21:39 小叶子 阅读(1743) |
评论 (0) |
编辑 收藏
procedure TForm1.Button1Click(Sender: TObject);
begin
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event(byte('M'), 0, 0 ,0);
keybd_event(byte('M'), 0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
end;//显示桌面
posted @
2009-02-05 02:51 小叶子 阅读(1808) |
评论 (0) |
编辑 收藏
只用 mouse_event就可以
procedure TForm1.Timer1Timer(Sender: TObject);
begin
mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;//这样就是单击
procedure TForm1.Timer1Timer(Sender: TObject);
begin
mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;//这样就是双击了!
posted @
2009-02-05 02:30 小叶子 阅读(615) |
评论 (0) |
编辑 收藏
SendMessage(thandle,wm_settext, 0, lParam(pChar('5555')));已经不行了
用
SendMessage(thandle,EM_REPLACESEL, 0, lParam(pChar('5555')));
对于QQ2008还是可以的
posted @
2009-02-04 23:38 小叶子 阅读(501) |
评论 (0) |
编辑 收藏
学了一断时间,你会发现数据类型很重要,特别是在你分析delphi源码时
现在在细细回顾一下
a、 整数类型: (通用类型<32位>:Integer-有符号;Cardinal-无符号)
有符号:Shortint<8位>,Smallint<16位>,Longint<32位 >
无符号:Byte<8位>,Word<16位>,LongWord<32位 >
有符号,最高位用1表示(-)
示例说明下:有符号:shortint(8位) 最小值 1111,1111(-127 ) 最大值 :0111,1111(127)//最高位不是数,是+ - 号
无符号: Byte<8位>,也就是从0到1111,1111(255) //showmessage(inttostr(maxbyte))->255
8位一个字节,一个字节8个二进数组成
var
b:byte;
l:longint;
begin
showmessage(inttostr(sizeof(b)));//结果:1
showmessage(inttostr(sizeof(l)));//结果:4
end;
longint就是常用的integer;
而cardinal就是LongWord;
b、字符类型: (通用类型<8位>:Char -与AnsiChar等同)
AnsiChar<8位> :主要存放Ansi字符
WideChar<16位>:主要存放Unicode字符
常用的char就是指 AnsiChar<8位>
var
i:widechar;
begin
showmessage(inttostr(length(i)));//结果:1
showmessage(inttostr(sizeof(i)));//结果:2,说明占用两个字节内存
end;
c、 字符串类型
ShortString :最多存放255个字符,第一个自己存放字符个数,不以NULL结尾
AnsiString :存放Ansi字符,以NULL结尾(也是string)
WideString:存放Unicode字符,以NULL结尾
var
ss:string;
s:shortstring;
begin
edit1.Text:=inttostr(sizeof(ss));// 4
edit2.Text:=inttostr(length(ss));// 0 大小为4,说明分了4个字节内存,长度为0说明用时自动分配
edit3.Text:=inttostr(sizeof(s));// 255
edit4.Text:=inttostr(length(s));// 4 已经分配了大小长度,固定了
end;
如果你给shortstring一个值
s:='(这里面有256个)';
你运行就提示错误,并提示只能放255个
posted @
2009-02-03 16:47 小叶子 阅读(1612) |
评论 (0) |
编辑 收藏
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,nb30;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var
NCB : TNCB;
ADAPTER : TADAPTERSTATUS;
LANAENUM : TLANAENUM;
intIdx : Integer;
re : Char;
buf : String;
begin
Try
// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[0];//important
re := NetBios(@NCB);
If Ord(re)<>0 Then
exit;
// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[0];////bowman
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
re := NetBios(@NCB);
If Ord(re)<>0 Then
exit;
buf := '';
For intIdx := 0 To 5 Do
buf := buf + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2)+'-';
edit1.Text := copy(buf,0,length(buf)-1);
Finally
End;
end;
end.
posted @
2009-02-03 00:53 小叶子 阅读(762) |
评论 (1) |
编辑 收藏