본문 바로가기
이미지 매크로

C# .NET 매크로 프로그램 만들기. (프로그램 제목 또는 이름 변경하는 방법)

by 업무자동화 2024. 4. 25.
반응형

유료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product_review 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화

 

 

  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

안녕하세요. 엔지엠소프트웨어입니다. 오늘은 프로그램 이름 또는 제목을 변경하는 방법에 대해서 알아보도록 하겠습니다. 일반적으로 프로그램이 실행되면 상단 좌측에 프로그램의 제목이 표시되거나 창 이름이 표시됩니다. 구글 크롬이나 마이크로소프트의 엣지는 이동하는 사이트의 제목이 표시되는데요. 대부분의 윈도우 프로그램은 프로그램명이 표시됩니다. 여기까지는 문제가 없지만, 멀티 다클라 매크로 환경에서 비활성으로 동작하려면 창 제목이 모두 달라야 합니다.

 

엔지엠 6 버전은 멀티 핸들 처리 기능이 없어서 창 제목이 모두 달라야만 정상 동작합니다. 하지만, 엔지엠 7 (가칭) 버전은 멀티 핸들 기능이 추가되었기 때문에 굳이 창 제목을 변경하지 않더라도 각각의 프로그램을 인식하고, 마우스 클릭이나 키보드 입력 같은 동작을 수행할 수 있습니다. 아래와 같이 프로그램 이름 변경 액션을 하나 만드세요.

public class AppTitleChangeModel : BaseModel

 

프로그램을 선택하는 로직은 BaseModel에서 이미 다 만들어져 있기 때문에 이 부분은 건너뛰어도 됩니다. 순수하게 프로그램 제목 변경 기능에 대해서만 개발하면 됩니다.

 

창 제목이 정상적으로 변경되었는지 확인할 수 있는 Result 속성을 하나 추가해줍니다.

[LocalizedCategory("Data")]
[LocalizedDisplayName("Result")]
[LocalizedDescription("Result")]
[Browsable(true)]
[DefaultValue(null)]
[EditorAttribute(typeof(MultilineStringEditor), typeof(UITypeEditor))]
public string? Result { get; set; }

 

다클라 매크로 환경에서도 사용할 수 있도록 프로그램명 변경과 자동 인덱스 속성을 추가했습니다.

[LocalizedCategory("Action")]
[LocalizedDisplayName("AppName")]
[LocalizedDescription("AppName")]
[Browsable(true)]
[DefaultValue(null)]
public string? AppName { get; set; }

[LocalizedCategory("Action")]
[LocalizedDisplayName("AppNameAutoIndex")]
[LocalizedDescription("AppNameAutoIndex")]
[Browsable(true)]
[DefaultValue(false)]
public bool AutoIndex { get; set; }

[LocalizedCategory("Action")]
[LocalizedDisplayName("WindowCaptionChangeOption")]
[LocalizedDescription("WindowCaptionChangeOption")]
[Browsable(true)]
[DefaultValue(typeof(Definition.WindowCaptionChangeOption), "Direct")]
public Definition.WindowCaptionChangeOption ChangeOption { get; set; } = Definition.WindowCaptionChangeOption.Direct;

 

여러개의 프로그램이 선택된 경우와 한개만 처리하는 경우를 조건으로 구분해서 처리했습니다. 자동 인덱스를 사용하면 프로그램명 뒤에 숫자를 붙여줍니다.

if (AutoIndex)
{
    int index = 0;
    foreach (IntPtr mainHandle in MainHandles)
        Result = Ai.Api.Core.User32.SetWindowText(mainHandle, $"{appName} {index++}").ToString();
}
else
    Result = Ai.Api.Core.User32.SetWindowText(MainHandle, appName).ToString();

 

테스트를 위해 메모장을 3개 실행했습니다. 에디터에서 아래와 같이 프로그램 이름 변경 액션의 속성을 설정하세요.

 

 

매크로를 실행하면 메모장이 전부 정렬되고, 창 이름도 각각 변경되었습니다.

https://youtu.be/aaZ1ntXy0TQ

 

 

이미 앞에서 다 만들어놓은 기능들의 조합이라서 간단하게 개발을 완료할 수 있었습니다. 어차피 엔지엠 6에서 대부분의 기능 개발이 완료되어 있었고, 새 버전에서는 특별히 추가되는 기능이 아니라면 복사해서 붙여넣기하는 수준입니다. 다만, 디자인이 변경되었기 때문에 구조적인 부분들이 대폭 변경되었습니다. 이전 구조와 현재 구조가 다르기 때문에 디자인 측면에서 수정해야 하는 코드들이 많아졌네요^^

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

 

반응형

댓글