Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Procedure TForm1.Button1Click(Sender: TObject);
- type
- PForm = ^TForm;
- PClass = ^TClass;
- var
- formPtr : PForm;
- I: Integer;
- msg : string;
- windowHandle : HWND;
- begin
- windowHandle := FindWindow('TForm1', 'FORMSSSSS');
- formPtr := PForm(GetVCLObjectAddr(windowHandle) + 4);
- if (not Assigned(formPtr)) then Exit;
- for I := 0 to formPtr^.ControlCount - 1 do // Error
- begin
- msg := msg + formPtr^.Controls[i].Name;
- if formPtr^.Controls[i].Name = 'StringGrid1' then
- begin
- msg := TStringGrid(formPtr^.Controls[i]).Cells[1, 1];
- end;
- end;
- ShowMessage(msg);
- end;
- function GetVCLObjectAddr(AHandle: HWND): DWORD;
- var
- pid: DWORD;
- begin
- pid := 0;
- GetWindowThreadProcessId(AHandle, pid);
- if (pid =0) then
- begin
- Result := 0;
- Exit;
- end;
- Result := GetPropW(AHandle, PWideChar(WideString(Format('Delphi%.8X', [PID]))))
- end;
- Procedure TForm1.Button1Click(Sender: TObject);
- var
- formPtr : TForm;
- I: Integer;
- msg : string;
- windowHandle : HWND;
- begin
- windowHandle := FindWindow('TForm1', 'FORMSSSSS');
- formPtr := TForm(GetVCLObjectAddr(windowHandle) + 4);
- if (not Assigned(formPtr)) then Exit;
- for I := 0 to formPtr.ControlCount - 1 do
- begin
- msg := msg + formPtr.Controls[i].Name;
- if formPtr.Controls[i].Name = 'StringGrid1' then
- begin
- msg := TStringGrid(formPtr.Controls[i]).Cells[1, 1];
- end;
- end;
- ShowMessage(msg);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement