C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50567] Re:한프로그램안에서 다른 프로그램 보여주기...
장성호 [nasilso] 2204 읽음    2007-09-14 12:19
Window Application은 대부분 Parent를 가지고 있습니다.

보통 프로그램에 Main윈도우는 Parent가 Desktop이 되죠
Parent가 Desktop인 윈도우는 작업표시줄에 나타나구요

다시 말해 어떤 윈도우든 (Window Handle을 가진 모든 Control)은 Parnet 설정을 바꿈으로써
어디에든 나타낼수 있습니다.

예를들어 메모장(Notepad.exe)을 현재 프로그램의 Panel에 올리고 싶다면

[과정]
1. 대상프로그램의 핸들을 찾습니다.
     HWND hWnd = FindWindow("","제목없음 - 메모장");
  
2. 찾았으면 SetParent로 메모장의 Parent를 Panel1->Handle로 변경해 줍니다.
     SetParent(hWnd ,  Panel1->Handle) ;


[샘플]
아래와 같이하면 바탕화면이 내 폼안에 들어와 버립니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HWND hWnd = FindWindow("Progman", NULL);
    HWND hWndLView = FindWindowEx(hWnd, 0, "SHELLDLL_DefView", NULL);
    HWND hWndParent = GetParent(hWndLView);// Windows.GetParent(H);  원래 original Parent
    ::SetParent(hWndParent, this->Handle);       
}
//---------------------------------------------------------------------------

이는 탐색기 프로그램인 explore.exe를 통째로 내 프로그램에 넣는것이  아니라
탐색기에서 바탕화면만 내 프로그램에 넣는것입니다.

위 과정을 반복하면 여러개 프로그램을 내 프로그램에  넣는것도 문제 없겠죠

그럼

무한질주 님이 쓰신 글 :
: 제가 ..
:
: 프로그램안에서 다른 프로그램 보여주려고 하고 있습니다.
:
: 버튼을 클릭하면 폼안에 특정프로그램이 Child윈도우로 생성이 되는 것이지요..
:
: 또 버튼을 클릭하면 또 생기고... 이런식으로 같은 프로그램으로 여러개의 Child윈도우로 생성시켜보려고 합니다.
:
: 어떤식으로 해야할까요?

+ -

관련 글 리스트
50565 한프로그램안에서 다른 프로그램 보여주기... 무한질주 1191 2007/09/14
50567     Re:한프로그램안에서 다른 프로그램 보여주기... 장성호 2204 2007/09/14
50570         답변 감사합니다.~~(냉무) 무한질주 1498 2007/09/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.