Function EnumWindowsProc(hHWND:HWND;lParam:Cardinal) : Boolean; stdcall; cdecl;
begin
  if hHWND<>0 then
  begin
    //我的处理程序
    Result := True;
  end
  else
    Result := False;
end;procedure callenumwindow;
var
  lparam : cardinal;
begin
  EnumWindows(@EnumWindowsProc,lparam);
end;
我有一个值想通过lparam传进去该怎么传
还有每次我执行完这段程序后原先的一些数组值被改变是什么原因

解决方案 »

  1.   

    http://llong.vip.sina.com/jiqiao/pascal/pascal_9.htm
      

  2.   

    我知道为什么其他数组值被改变了,因为我调用了GetWindowThreadProcessId函数pid : Cardinal;GetWindowThreadProcessId(hHWND,pid);这样写是不是不对,应该怎么做
      

  3.   

    pid : PDWORD;
    hHWND: HWND;GetWindowThreadProcessId(hHWND,pid);
      

  4.   

    hHWND是前面EnumWindowsProc传进来的值
      

  5.   

    我知道了这样就可以了hThread : Cardinal;
    hThread := GetWindowThreadProcessId(hHWND,pid);不能用LParam传值也是因为这个函数的返回值把他给覆盖了