(예전 커뮤니티(2016-2020) 사이트에서 옮겨온 글입니다: 번호 85)
작성자: evonit
날짜: 2018-01-25
한글2018 c# hwpCtrl 사용 문의
안녕하세요, hwpCtrl개발 문의사항이 몇가지 있어서 질문 드립니다.
우선 개발환경은 아래와 같습니다.
-
윈도우 64비트
-
비주얼 스튜디오 2017 커뮤니티버전
-
닷넷 4.6.1
-
cpu빌드환경: x86 (32비트)
질문1)
개발자료실에 있는 c#으로 hwpCtrl 개발 가이드를 보고 따라했습니다.
-
가장 간단한 Windows Form App을 선택해서 생성하였습니다.
-
cpu빌드환경을 x86으로 바꿨습니다.
-
실행 해 봅니다. ==> 당연히 빈Form이 잘 뜨고, 잘 종료 합니다.
-
hwpCtrl을 toolbox에 추가 하고, form1으로 드래그해서 넣습니다. (잘 들어갑니다)
-
실행 해 봅니다. ===> 실행은 되는데, 종료시 “WindowsFormsApp1"의 작동이 중지되었습니다” 라고 오류가 뜹니다.
*** output창에 보면 프로그램이 각 dll들을 unload하다 죽던데, 왜 이러는 걸까요?
아래는 output창에 마지막으로 찍힌 내용
...
...
'WindowsFormsApp4.exe' (CLR v4.0.30319: HwpCtrl): Unloaded 'C:\Program Files (x86)\Hnc\Office 2018\HOffice100\Bin\Hnc.Office.String.100.ko-KR.dll'
'WindowsFormsApp4.exe' (CLR v4.0.30319: HwpCtrl): Unloaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_ko_b77a5c561934e089\mscorlib.resources.dll'
'WindowsFormsApp4.exe' (CLR v4.0.30319: HwpCtrl): Unloaded 'C:\Program Files (x86)\Hnc\Office 2018\HOffice100\Bin\HNetCom.Host.Contract.100.dll'
질문2)
위에 생성한 소스에서, 버튼을 하나 추가해서, 아래 소스처럼 hwp를 로드하고 pdf로 저장하는 일을 요청합니다.
그런데, 버튼을 처음 누르땐 변환을 잘 하는데, 두번째 누르면 saveAs에서 프로그램이 죽어버립니다.
혹시 제가 소스에 먼가 빠진게 있을까요?
private void button1_Click(object sender, EventArgs e)
{
RegistryKey regKey = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("HNC").CreateSubKey("HwpCtrl").CreateSubKey("Modules");
regKey.SetValue("hwpchecker", "C:\\Windows\\System32\\HWPFilePathCheckerModule.dll");
regKey.Close();
Boolean tf = false;
tf = axHwpCtrl1.RegisterModule("FilePathCheckDLL", "hwpchecker");
Console.WriteLine("reg:" + tf);
tf = axHwpCtrl1.Open("C:\\leanco\\dev\\docpath\\hanword.hwp", "HWP", "lock:false;suspendpassword:true;forceopen:true");
Console.WriteLine("open:" + tf);
tf = axHwpCtrl1.SaveAs("C:\\leanco\\dev\\convpath\\hanword.pdf", "PDF", "");
Console.WriteLine("save:" + tf);
axHwpCtrl1.Clear(1);
}
질문3)
위에 소스에 보면, 보안모듈 처리하는 소스가 있습니다. 저것도 개발자 가이드를 따라 하였습니다.
개발자 가이드에서 제공한 dll을 이름을 변경하여, 여기에 넣어 두었고요. C:\Windows\System32\HWPFilePathCheckerModule.dll
그런데, 프로그램을 실행하면 자꾸, 보안 팝업창이 뜹니다.
혹시 어떤 부분이 잘못된 걸까요?
질문4)
혹시, 화면에 컨트롤얼 추가해서 사용하지 않고, 그냥 변수를 별도로 생성해서 사용할 수 있나요?
화면에 컨트롤을 넣었을때 자동으로 생성되는 axHwpCtrl1 변수를 이용할땐, open,saveas가 잘되는데,
HWPCONTROLLib.HwpCtrl hwpApp = new HWPCONTROLLib.HwpCtrl(); 이렇게 하면 안되더라고요.
댓글
evonit (2018.02.05)
자답3)
한글을 실행해서, 도구에, 추가기능설정 이라는 메뉴가 있는데, 여기에 레지스트리에 등록한? 목록이 보입니다.
프로그램에서 수동으로 등록한건, 파일을 찾을수없습니다. 라고 나오는데, 설정에서 추가하니, 유효한 추가기능이라 나오내요.
파일이랑 경로 동일한데…
레지스트리에 직접 넣으면 된다고 해서 그렇게 했는데, 한글 2018에서 바뀐 기능인건지…
p36 (2018.05.18)
32bit dll은 통상 C:\Windows\SysWOW32 및에 위치 한다고 합니다.
C:\Windows\System32에는 64bit dll이 위치한다고 합니다.
사실 regedit로 registry에 등록 할 경우에는 dll path는 어디 위치시켜도 상관없습니다마…