유료 매크로 프로그램 다운로드
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원 (전체 기능 사용)
안녕하세요. 엔지엠소프트웨어입니다. 앞서 키보드 쓰기 액션을 만들어서 사용해봤는데요. 오늘은 키보드의 나머지 기능들을 모두 만들어보고, 테스트까지 해보겠습니다. 키보드 쓰기 액션으로는 복사(Control+C), 붙여넣기(Control+V)와 같은 동작을 수행할 수 없습니다. 따라서, 키보드 다운과 업 액션이 필요한데요. 사람이 이 동작을 수행한다고 하면 아래와 같이 스크립트를 만들어야 합니다.
사람이 하는 동작과 동일하죠? 메모장을 2개 켜놓고 복사, 붙여넣기를 해볼까요?
첫번째 메모장에서 전체 선택 후 복사합니다. 그리고, 두번째 메모장을 클릭하고 붙여넣기하는 로직입니다.
의도한대로 잘 동작하는군요.
- 대로: 어떤 상태나 행동을 나타낼 때
- 데로: 방향을 나타내는 부적격 조사 로가 데에 덧붙은 형태
키보드의 특정 키를 다운할 때 사용하는 메소드입니다.
public static void Down(KeyboardVirtualKeyCode key, Definition.DeviceInputType inputType, List<nint>? controlHandles)
{
switch (inputType)
{
case Ai.Definition.DeviceInputType.Windows:
case Definition.DeviceInputType.Event:
Ai.Api.MouseKeyboardManager.KeyboardSimulator.KeyDown((Keys)key);
break;
case Definition.DeviceInputType.Input:
var input = Ai.Global.Instance<Api.NativeInputManager.InputSimulator>();
input?.Keyboard.KeyDown(key);
break;
case Definition.DeviceInputType.PostMessage:
if (controlHandles != null)
{
foreach (var handle in controlHandles)
Ai.Common.Windows.PostMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYDOWN, (char)key, 0);
}
break;
case Definition.DeviceInputType.SendMessage:
if (controlHandles != null)
{
foreach (var handle in controlHandles)
Ai.Common.Windows.SendMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYDOWN, (char)key, 0);
}
break;
}
}
아래는 키보드를 땔 때 사용하는 업 메소드입니다.
public static void Up(KeyboardVirtualKeyCode key, Definition.DeviceInputType inputType, List<nint>? controlHandles)
{
switch (inputType)
{
case Ai.Definition.DeviceInputType.Windows:
case Definition.DeviceInputType.Event:
Ai.Api.MouseKeyboardManager.KeyboardSimulator.KeyUp((Keys)key);
break;
case Definition.DeviceInputType.Input:
var input = Ai.Global.Instance<Api.NativeInputManager.InputSimulator>();
input?.Keyboard.KeyUp(key);
break;
case Definition.DeviceInputType.PostMessage:
if (controlHandles != null)
{
foreach (var handle in controlHandles)
Ai.Common.Windows.PostMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYUP, (char)key, 0);
}
break;
case Definition.DeviceInputType.SendMessage:
if (controlHandles != null)
{
foreach (var handle in controlHandles)
Ai.Common.Windows.SendMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYUP, (char)key, 0);
}
break;
}
}
키보드 다운과 업 코드는 거의 동일합니다. 실제 API를 담당하는 메소드를 호출할 때 다운인지 업인지 차이만 있습니다. 일부 프로그램 또는 사용하는 InputType에 따라 키보드 다운 또는 업을 선택적으로 사용해야 합니다. 이번 예제처럼 메모장은 다운업 옵션을 사용해야 합니다.
[LocalizedCategory("Action")]
[LocalizedDisplayName("KeyInputType")]
[LocalizedDescription("KeyInputType")]
[Browsable(true)]
[DefaultValue(typeof(Definition.KeyInputType), "DownUp")]
public Ai.Definition.KeyInputType KeyInputType { get; set; } = Definition.KeyInputType.DownUp;
하지만, 비활성 모드에서는 Down과 Up에 대한 구분이 없습니다. 키보드 코드만 입력될 뿐입니다. 따라서, 비활성 모드에서 다운과 업을 모두 사용하면 키보드 입력이 두번 발생하게 됩니다. 비활성 모드에서는 이 옵션을 Up으로 변경하고 사용해야 정상적으로 동작합니다.
핸들은 2개를 추가해야 합니다. 첫번째 메모장에서 복사한 후 두번째 메모장에 붙여넣기 해야해서 각각 핸들이 필요합니다.
활성 모드는 마우스와 키보드를 사용할 수 없지만, 비활성 모드는 마우스와 키보드가 자유롭고 동시에 처리가 가능합니다. 아래는 비활성으로 동작시킨 동영상입니다.
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
댓글