Q&A

  • 다른 프로그램의 콘트롤의 Handle을 얻는방법..?
다른 프로그램에 있는 콘트롤의 Handle을 얻고 싶은데..

어떤 API 함수를 사용을 하면 되는지요/....???



아시는 분 좀 부탁합니다...

3  COMMENTS
  • Profile
    김영대 1999.09.20 20:04
    송기원 wrote:

    > 다른 프로그램에 있는 콘트롤의 Handle을 얻고 싶은데..

    > 어떤 API 함수를 사용을 하면 되는지요/....???

    >

    > 아시는 분 좀 부탁합니다...



    FindWindowEx() 를 사용해 보세요

    예제는 제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의

    "Delphi Tip" 에서 검색해 보시면 있습니다





  • Profile
    송기원 1999.09.21 00:31
    procedure TFrmMain.Button1Click(Sender: TObject);

    var

    CHandle, WHandle: HWND;

    cnt,ILen: integer;

    cname: array[0..255] of char;

    ca:string;

    begin

    ca := 'Project1';

    cnt := 0;

    WHandle := FindWindow(nil,PChar(ca));

    if WHandle <> 0 then

    while CHandle <> 0 do Begin

    Inc(cnt);

    if cnt >= 30 then Break;

    CHandle := FindWindowEX(WHandle,0, nil, nil);

    if Chandle <> 0 then Begin

    Ilen := GetClassName(CHandle,cName,255);

    Memo1.Lines.Add(cname);

    end;

    end;

    end;



    위와 같이 코딩을 했는데 projext1.exe이라는 다른 applicaiton에 포함된

    컨트롤의 className을 읽어 오지 못하는것 같은데...

    저좀 도와주이소..

  • Profile
    송기원 1999.09.21 00:50
    참고로 저같은 초보자를 위햐여....



    다른 프로그램의 콘트롤의 handle값과 Class Name정보 읽는 방법....

    1.FindWindow로 먼저 Parent process의 handle을 얻는다.

    2.FindWindowEX로 첫 번째 Child class의 handle을 얻는다.

    3.GetNextWindow로 나머지 모든 Child Class의 handle을 얻는다...



    이상 왕초보 송기원입니다....



    여긴.. 참 좋은곳이군요...

    특히 .. 영대님...고맙습니다..