DELPHI程序出现这个错误Access violation at address 0x00032179

来源:百度知道 编辑:UC知道 时间:2024/06/15 16:41:36
Access violation at address 0x00032179:write of address 0x10c00000.Process stopped.....

我的程序,如下:

Function FindWindowA(lpClassName,lpWindowName:string):longint;external 'user32.dll' ;
Function ShowWindow(hWnd,nCmdShow:longint):longint;external 'user32.dll' ;

procedure TForm1.Button1Click(Sender: TObject);
var
ll_handle,kk:longint;
ls_Class,ls_winTitle:string;
begin
ls_Class := 'NULL';
ls_winTitle:= 'c:\windows\system32\cmd.exe';
ll_handle := FindWindowA(ls_class,ls_winTitle);
if ll_handle > 0 then
showMessage('已打开')
else
showMessage('未打开');
end;
end.

——————————————————————————
请各位老师指出我哪里错了。

你错了,把PCHAR和STRING混了,FINDWINDOWA的参数是这样的:

function FindWindowA(lpClassName, lpWindowName: PAnsiChar): HWND; stdcall;

类名和标题都应该是以ASCII 0结为的字符串(PCHAR),而不是前面为长度后面跟字符的形式(STRING),你把STRING传递给FINDWINDOWA,FINDWINDOWA会一直检查你给的参数,直到结束符为止,这样就会造成内存访问违例。