안녕하세요?
파이썬이나 c#으로 자동화할때
한글 파일을 열고 난 후에 등록되어 있는 스크립트를 코드상에서 실행이 가능한가요?
위와 같은 스크립트가 있을때 이미 저장되어 있는 스크립트를 코드상에서 실행하고 싶습니다.
안녕하세요?
파이썬이나 c#으로 자동화할때
한글 파일을 열고 난 후에 등록되어 있는 스크립트를 코드상에서 실행이 가능한가요?
안녕하세요? 한/글 오토메이션API에 hwp.RunScriptMacro(FunctionName, uMacroType, uScriptType)
이라는 메서드가 있습니다.
파이썬의 경우에는(C#도 비슷하겠지만)
FunctionName
은 정의된 함수의 이름,
uMacroType
은 0
이 스크립트매크로, 1
이 문서매크로이고,
uScriptType
은 스크립트유형(자바스크립트)으로, 기본값이 0
이고,
사실 아무 정수나 입력해도 실행이 됩니다.
매크로 스크립트 파일을 특정 경로에 저장하고 불러와서 사용해보는 프로그램을 만들어 보고 있는데요…
요런걸 원하시는지…
https://blog.naver.com/firstdrive/223572374891
아직 초기단계라 그렇지만 어느정도 동작은 하더라구요~
저는 왜 안될까요? ㅠ c#으로 하고 있는데요
위와 같이 한글에 스크립트 이름을 “글자색상변경” 으로 등록해놨고 빨간색으로 변경하는 스크립트 코드인데 한글에서 스크립트 매크로 실행하면 잘 동작하는데
c#에서
hwp.RunScriptMacro("글자색상변경", 0, 0);
이렇게 해봤는데 동작은 안하네요…ㅠ
https://blog.naver.com/firstdrive/223580375612
저도 테스트 삼아 해봤는데요~ 스크립트 이름이 function 뒤에 나오는걸 다 적어야 하네요~
그 이름 말고, 스크립트 매크로에서 정의된 function 의 이름 전체를 입력해야 합니다.
2024년 9월 11일 (수) 09:21, 한컴디벨로퍼 포럼의 nuristar 님 <notifications@hancom-dev-forum.discoursemail.com>님이 작성:
너무너무 감사합니다… 미쳐 그걸 못봤었네요 ㅠㅠ
네 감사합니다. 왜 그게 제 눈에 안들어왔을까요? ㅎㅎ 동영상 올려주신거에 분명히 나와 있는데 ㅋ
떠먹여줘도 못먹고 있으니 원… ㅠㅠ
오잉?ㅋ 풀죽지 마세요ㅎㅎㅎ
만사에 꼼꼼하면 피곤합니다~
오히려 잘 하고 계시는 것 같은데요?^^
2024년 9월 11일 (수) 14:47, 한컴디벨로퍼 포럼의 nuristar 님 <notifications@hancom-dev-forum.discoursemail.com>님이 작성:
RunScriptMacro는 실행할때마다 무조건 새로운 한글창을 생성하나요?
그냥 글자 입력함수는 심플하게 글자만 입력되는데
RunScriptMacro를 이용한 함수는 스크립트 매크로가 실행은 되는데
계속해서 새로운 한글창이 한개 추가로 생성되네요.
아래는 두개 함수 내용입니다.
(hwp 변수는 전역변수로 설정했습니다.)
private void button8_Click(object sender, EventArgs e)
{
int delay_time = (int)numericUpDown1.Value; // 스크립트 실행 간격
int count = listBox2.Items.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
// 매크로 이름 앞에 OnScriptMacro_ 붙어있음!!!!
string macro_name = "OnScriptMacro_" + listBox2.Items[i].ToString();
//MessageBox.Show($"매크로 이름 : {macro_name}");
hwp.RunScriptMacro(macro_name, 0, 0);
//hwp.Run("FileClose");
Thread.Sleep(delay_time); // 1초 대기
}
}
}
private void typing(string text)
{
hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet);
hwp.HParameterSet.HInsertText.Text = text;
hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet);
}
저는 이렇게 하니까 매크로 다 실행되네요.
ExecuteHwpCommands(hwp, “ScrMacroPlay1”); //