var
  UserInfo:pbyte;  
  TheHandle:Hwnd;  
  TheThreadID:integer;         
  TheThreadHandle:Thandle;
  lpNumberOfBytesRead:DWORD;
  RecordFile:textfile;
const
  filename='setup.txt';
  UserInfoSize=32;
begin
  while true do
  begin
    TheHandle := FindWindowa(Nil,'sldfjsldkfj');
    if TheHandle <> 0 then
    begin
      TheThreadID:=GetWindowThreadProcessId(TheHandle,NIL);
      break;
    end;
    sleep(1);
  end;
  TheThreadHandle:=openprocess(PROCESS_ALL_ACCESS,
                               false,
                               TheThreadID);
  Readtime:=time()+0.002;
  UserInfo:=allocmem(UserInfoSize);
  assignfile(RecordFile,filename);
  append(RecordFile);
  writeln(RecordFile,'----------'+datetimetostr(time())+'--------------');
  while time>Readtime do
  begin
    begin
      ReadProcessMemory(TheThreadHandle,
                           Pointer($046d0c2c),
                           UserInfo,
                           UserInfoSize,
                           lpNumberOfBytesRead);
      writeln(RecordFile,UserInfo^);
    end;
  end;
  closefile(RecordFile);
  freemem(UserInfo,UserInfoSize);
  Closehandle(TheThreadHandle);

解决方案 »

  1.   

    不知道为什么...setup.txt里面只有个时间..其它的什么也没有...好像从内存里读不出东西似的.
      

  2.   

    TheThreadHandle:=openprocess(PROCESS_ALL_ACCESS,
                                   false,
                                   TheThreadID);
    这里好不能确定 TheThreadHandle 非0吧?如果它是0呢?
    你单步跟踪一下看看是不是为0失败了。.
      

  3.   

    如果上面的都正确的话.OpenProcess不应该为0才对的啊...   再帮忙看看嘛.谢谢..