한글 2018버전에서는 생성이 안되요

한글 2020이 설치된 환경에서는 정상적으로 돌아가던 코드가
한글 2018이 설치된 환경에서는 에러가 발생합니다.

HwpObject m_HwpObject;
m_HwpObject = new HwpObject(); //해당 라인에서 에러가 납니다.

에러 사항
System.InvalidCastException: '‘System.__ComObject’ 형식의 COM 개체를 인터페이스 형식 ‘HwpObjectLib.HwpObject’(으)로 캐스팅할 수 없습니다. 해당 인터페이스를 지원하지 않습니다. (예외가 발생한 HRESULT: 0x80004002 (E_NOINTERFACE)) 오류로 인해 IID가 '{5E6A8276-CF1C-42B8-BCED-319548B02AF6}‘인 인터페이스의 COM 구성 요소에서 QueryInterface를 호출하지 못했으므로 이 작업을 수행할 수 없습니다.’

해결방법이 있나요?

1개의 좋아요

안녕하세요 ^^

한글 2018 설치된 PC의 오토메이션이 등록되어있지 않은것 같습니다.

한글에 관리자 권한으로 cmd 창에서 한글경로\hwp.exe -regserver 와 같이 실행시 오토메이션 등록이 가능합니다.

위의 오토메이션 등록으로 안될경우 "한컴 기본 설정"을 통하여 초기화 해주시거나 재설치 해보셔야 할것 같습니다 ^^

감사합니다

1개의 좋아요

한글 2018 재설치로는 해결이 안되었습니다.
코드로 관리자권한 cmd 실행 → 한글 오토메이션 등록 구현하여 해결하였습니다.

        //관리자 권한으로 cmd 실행
        ProcessStartInfo cmd = new ProcessStartInfo();
        Process process = new Process();
        cmd.FileName = @"C:\Windows\System32\cmd.exe";
        cmd.WorkingDirectory = @"C:\Windows\System32";
        cmd.WindowStyle = ProcessWindowStyle.Hidden;             // cmd창이 숨겨지도록 하기

        cmd.CreateNoWindow = true;                               // cmd창을 띄우지 안도록 하기
        cmd.UseShellExecute = false;
        cmd.RedirectStandardOutput = true;        // cmd창에서 데이터를 가져오기
        cmd.RedirectStandardInput = true;          // cmd창으로 데이터 보내기
        cmd.RedirectStandardError = true;

        process.StartInfo.Verb = "runas";
        cmd.Verb = "runas";
        process.StartInfo = cmd;
        process.Start();

        //한글 경로 확인
        string Hangeul2018Path = @"C:\Program Files (x86)\Hnc\Office 2018\HOffice100\Bin\Hwp.exe";
        string Hangeul2020Path = @"C:\Program Files (x86)\Hnc\Office 2020\Bin\Hwp.exe";

        //한글 프로그램 오토메이션 등록
        if (File.Exists(Hangeul2018Path))
        {
            process.StandardInput.Write(@"cd C:\Program Files (x86)\Hnc\Office 2018\HOffice100\Bin");
            process.StandardInput.Write(@"Hwp.exe -regserver");
        }
        else if (File.Exists(Hangeul2020Path))
        {
            process.StandardInput.Write(@"cd C:\Program Files (x86)\Hnc\Office 2020\Bin");
            process.StandardInput.Write(@"Hwp.exe -regserver");
        }
        else
        {
            //한글 없음
        }
        process.StandardInput.Close();
        //// 결과 값을 리턴 받습니다.
        //string resultValue = process.StandardOutput.ReadToEnd();
        //process.WaitForExit();
        process.Close();

        axHwpCtrl1 = new HwpObject();

감사합니다.

1개의 좋아요