정말 감사합니다.(_ _)
덕분에 해결 되었습니다.
그런데 두가지 궁금한게 있는데요..
_D("Ca. Test")에 앞에 _D 나,
FindWindowW(L"Ca. Test",NULL); 보면 FindWindow가 아니라 뒤에 W가 하나 더 붙어 있고 함수 안에도 L 이 붙어 있는데..
제가 빌더를 6.0을 사용하고 있는데 그래서 Help에서도 안나오는건지.. ㅎㅎ
이건 그냥 궁금해서 여쭤본 것이구요..
혹시 이렇게 WinClassName을 변경해 주면 종료할 때 에러가 발생하나요?
실행파일 상태에서는 상관이 없는데 디버깅 상태에서 종료하면
application-defined exception이 뜨더라구요..
아무튼 정말 정말 정말 감사합니다.
장성호 님이 쓰신 글 :
: @ 사족
: 보이는 Caption을 어떻게 해달라고 요청은 있어도
: classname을 어떻게 해달라고 요청도 하는군요
:
: Classname이나 Caption이 아니더라도
: Window를 찾는 방법은 여러가지가 있을것 입니다.
:
: @ Form의 ClassName변경하는 방법
: Form의 ClassName을 변경하는 방법은?
:
: Form의 CreateParams를 override하여서
: TCreateParams 구조체의 WinClassName을 변경해주시면 됩니다.
:
: 다음과 같이...
:
:
:
: void __fastcall TForm1::CreateParams(Controls::TCreateParams &Params)
: {
: TCustomForm::CreateParams(Params);
: StrLCopy(Params.WinClassName, _D("Ca. Test"), (sizeof(Params.WinClassName) / sizeof(Char)) - 1);
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HWND hWnd=FindWindowW(L"Ca. Test",NULL);
: if(hWnd==this->Handle)
: {
: ShowMessage("TForm1의 ClassName은 Ca. Test 입니다.");
: }
: }
: //---------------------------------------------------------------------------
:
:
:
: 그럼..
:
:
: 빌더초보 님이 쓰신 글 :
: : 안녕하세요.
: :
: : 밑에도 글을 남겼었는데 제가 초보라 질문을 정확하게 올리지 못한거 같습니다.
: :
: : 다시 한번 요약해서 질문해 보겠습니다.
: :
: : 지금 상대 업체와 제가 서로 프로그램을 맞춰야 하는 부분이 있어서요..
: :
: : FindWindow 함수를 보면 FindWindow(class name, caption)이런식으로 되어 있는걸로 알고 있습니다.
: :
: : 상대 업체에서 class name으로 프로그램 조회를 하자고 하였습니다.
: :
: : 상대 업체의 class name 은 "ca.Traking" 이어서
: :
: : Q&A를 찾아서
: :
: : FindWindow("ca.Traking", 0); 이런 식으로 했더니 핸들값이 잘 넘어 오더라구요.
: :
: : 문제는 저인데..
: :
: : 제 프로그램의 class name을 "ca.Test"로 해달라고 하드라구요.
: :
: : 제가 실행할 폼을 만들어서 폼 이름을 Test로 했더니
: :
: : 헤더파일에 class TTest : public TForm 이런식으로 클래스가 만들어져더라구요.
: :
: : 제 생각엔 TTest를 "ca.Test"로 변경해 줘야 할꺼 같은데
: :
: : 그냥 이름을 바꾸려고 하면 에러가나고.. 어떻게 변경해야 하는건지...
: :
: : 제가 혹시 잘못 생각하고 있는것인지 어떻게 class name을 "ca.Test"로 바꿔줘야 하는지 정확히 모르겠네요.
: :
: : 고수님들의 답변 부탁 드립니다.