Q&A

  • 형변환 오류가 나는데 뭐가 잘못된거죠?
procedure TForm1.Button1Click(Sender: TObject);
var
X:string;
h: THandle;
function EnumChildProc(AHnd: hWnd): BOOL; stdcall;
{Child를 얻기위한 function을 정의해주죠 stdcall 이나 export를 선언 해주어야합니다
왜냐면..
(응용프로그램이처리할 콜백함수로 처리하기위해서).
EnumChildWindows에 쓰기위해..}
var
  S:string;
  ClassName:Array[0..255] of Char;
   {클래스명을 받기 위해선언합니다 GetClassName에...}
begin
  Result := True;
  GetClassName(AHnd, ClassName, 255);
     {핸들에 대한 클래스명을 받아오고...}
  S := PChar(ClassName);
     {문자비교를 하기위해 PCha형으로 바꿔주고...}
==> 1차로 s하고 Pchar로 형변환이 서로 안맞다고 나오네요
어떻게 해야하죠?

  if Pos('Button', S) > 0 then
  begin
    SendMessage(AHnd, {WM_USER ..등등}, 0, 0);
  end;
end;

begin
X:='계산기';
h := FindWindow(nil, PChar(X));
EnumChildWindows(h, @EnumChildProc, 0);
end;
1  COMMENTS
  • Profile
    이중철 2003.02.18 02:52
    S := PChar(ClassName);
    이뜻은 스트링변수에 어레이타입의 변수를 Char의 포인터로 바꾼다는
    의미죠..
    당근 스트링과 Pchar는 틀리죠 ^^
    S := strpas(@classname[0]);
    이정도만 해도 되겠죠..
    S := strpas(classname);
    이래도 될지도 모르겠고요 배열변수는 음..
    대충 의미파악해서 쓰세요.