한글 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개의 좋아요
bhjung
10월 10, 2023, 12:30오전
2
안녕하세요 ^^
한글 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개의 좋아요