아래한글과 같은 응용프로그램을 실행시킨후 파일열기를 하였습니다.(SPY를 통해서 확인하였음)
그런데 파일이름을 주고 열기 버튼을 실행해야 하는데 그 부분을 모르겠네요..
작성한 소스는
hAppId := FindWindow(nil, pchar('빈 문서 1 - 한글과컴퓨터 한글 ')); <- 한글의 핸들가져오기
SendMessage(hAppId, WM_COMMAND, 53280, 0); <- 파일열기 실행
hAppChildId := FindWindowEx(hAppId, 0, PChar('HNC_DIALOG'), nil); <- 파일열기창의 핸들가져오기
SendMessage(hAppChildId, WM_SETTEXT, 0, LParam(pChar('C:\aaa.hwp'))); <- 파일이름에 aaa.hwp입력
위와 같은 의도로 한글을 실행시키고 파일열기를 해서 C:\aaa.hwp를 불러오고 싶은데 안되네요
질문>
1) 2번째라인에서 sendmessage로 파일열기를하면 ModalForm으로 열려서 창을 닫아야 다음 라인으로 넘어가 3번째 라인이 의미없어짐. 따라서 2번째 라인의 sendmessage시에 'C:\aaa.hwp'를 넘겨주는 방법이 있는지?
2) FindWindowEx를 써서 파일열기창의 Handle을 가져와야 하는게 하니라 파일열기창의 '파일이름'이라는 Edit의 Handle을 가져오는 방법?(결국은 FindWindowEx 사용법을 잘 모른다는 의미임..)
이곳에 Hwp 가 깔려있지 않아 테스트를 못해보는데,
커맨드라인 실행은 안되던가요?
예를 들면, MS-Word 는
"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "C:\a.txt"
형태를 실행시키면 a.txt 가 불려진 워드가 실행되듯이 말이예요..
그게 안되다면, 결국 편법을 쓸수 밖에 없을듯 한데..
Keybd_event 같은 API 함수로 메뉴단축키를 (예를 들면 Alt + f) 등을 누르고
열기 대화상자의 파일명입력되는 Edit 의 핸들을 알아내고 그곳에 문자를 강제 입력하고.. 등..;;
우선 커맨드라인 명령어를 한번 실험해보세요..
그럼 즐거운 프로그래밍 하시길~