我这久正在试着练习把用Delphi写的程式写成汇编,有时也力不从心!还望向你请教 (100分)

  • 主题发起人 主题发起人 abc_xp
  • 开始时间 开始时间
A

abc_xp

Unregistered / Unconfirmed
GUEST, unregistred user!
我这久正在试着练习把用Delphi写的程式写成汇编,有时也力不从心!还望向你请教:

//以前用Delphi写的程式是这样的:(一个窗口递归的应用,就以找QQ子窗口为例吧!)
{
Function EnumChildWindowsProc(HWnd:Integer;lparam:Longint):Boolean;StdCall;
Var
Buffer:Array[0..255] Of Char;
Begin
GetClassName(HWnd,buffer,256);
Form1.ListBox1.Items.Add(Strpas(Buffer));
end;

Procedure TForm1.Button1Click(Sender:TObject);
Var
Handle1:Integer;
Begin
Handle1:=FindWindow('#32770',NIL);
If Handle1<>0 then
Begin
ShowMessage('Find Windows!');
EnumChildWindows(Handle1,@EnumChildWindowsProc,0);
end;
End;
}

;以下是我用MASM写的程式,可为什么MessageBox总是不能显示出类的名称呢?不知是哪里出错了!?请给予纠正能来点解释说明是最好了!!
.386
.Model Flat,StdCall
Option CaseMap:None

Include /MASM32/Include/User32.Inc
Include /MASM32/Include/Windows.Inc
Include /MASM32/Include/Kernel32.Inc

IncludeLib /MASM32/Lib/User32.Lib
IncludeLib /MASM32/Lib/Kernel32.Lib

.Data?
WH HWND ?

.Const
MessageBoxCaption db '提示',0
MessageBoxText db 'Find窗口找到!',0
FindWindowsClass db '#32770',0

.Code

_FindsFindWindowsName Proc
Local vClassNameBuffer[256]:Byte
;******************************************************************************
;???????????????????????我的问题可能就出在这吧!??????????????????????????????
;******************************************************************************
Invoke GetClassName,Addr WH,Addr vClassNameBuffer,256
Invoke MessageBox,NULL,Addr vClassNameBuffer,Offset MessageBoxCaption,MB_OK
;******************************************************************************
Ret
_FindsFindWindowsName EndP

Start:
Invoke FindWindow,Offset FindWindowsClass,NULL
.If Eax!=NULL
Mov WH,Eax
Invoke EnumChildWindows,WH,_FindsFindWindowsName,NULL;
.EndIf
Invoke ExitProcess,0
End Start
 
我正要把汇编写出的程序转成DELPHI的呢。
 
接受答案了.
 
后退
顶部