별도의 프로그램 간에 입력을 주고 전달하는 방법은 무엇입니까?

별도의 프로그램 간에 입력을 주고 전달하는 방법은 무엇입니까?

소스 코드를 사용할 수 없지만 개별적이고 유용한 프로그램이 너무 많아서 그 중 일부는 서로 아름답게 통합됩니다!유일한 문제는 Windows 7에서 서로 다른 프로그램이 서로 상호 작용할 수 있도록 하는 방법을 모른다는 것입니다.

저는 C++/C#/XAML을 알고 있습니다. 명령줄을 사용하여 시작 인수를 프로그램에 전달하는 방법과 배치 파일을 만드는 방법을 이해합니다. 하지만 일단 실행된 프로그램을 수동이 아닌 방법으로 제어하려면 어떻게 해야 할까요?

마우스 이동이나 클릭과 같은 Windows 입력을 처리하는 방법도 알고 있지만 이는 당시 열려 있는 특정 프로그램이 아닌 운영 체제와의 직접적인 상호 작용만 허용합니다.
다른 작업을 수행하는 동안 개별 프로그램에 입력을 전달할 수 있기를 원합니다.


제가 해결하려는 문제의 예는 다음과 같습니다.

'라는 프로그램이 있습니다.회원 추출기내 사이트 회원의 연락처 정보를 추출하는 " 프로그램은 GUI를 통해서만 제어할 수 있지만 아직 데이터를 내보낼 수 있는 기능은 없습니다. (따라서 이메일, 전화번호 등과 같은 각 정보는 클립보드에 1개씩 복사하여 새 폴더에 붙여넣었습니다. "마이크로 소프트 엑셀"문서).

정보가 체계적으로 복사되고 저장되면 해당 데이터를 여러 개의 새로운 "연락처 프로필"에 의해 생성됨"범용 연락처 관리자"의 확장 "구글 크롬 웹 브라우저"

  • 이 모든 작업은 제가 다른 작업을 하는 동안 백그라운드에서 실행될 수 있는 일종의 스크립트에 의해 자동으로 수행되어야 합니다.*

어떻게 할 수 있나요??


내가 필요하다고 생각하는 것은 여러 개의 가상 클립보드입니다... 그런데 또 무엇이 있을까요?

답변1

손으로 할 수 있다면 매크로 소프트웨어를 사용하여 쉽게 자동화할 수 있습니다. 내가 선택한 무기는오토핫키, 구체적으로AutoHotkey_L.

선적 서류 비치

귀하의 예를 바탕으로 다음이 유용할 것입니다.

예를 들어, 스크립트의 논리는 다음과 같습니다*:
*사소한 오류가 있을 수 있지만 요점은 알 수 있습니다!

;Note: find Control and Window names using AutoIt3 Window Spy

Name := []
Email := []
;etc...

members = 100

while (members > 0)
{
    Clipboard = 
    ControlSend, MemberExtrControl, ^a^c, MemberExtrWindow
    ClipWait
    Name.Insert(Clipboard)
    
    Clipboard = 
    ControlSend, MemberExtrControl, Tab^a^c, MemberExtrWindow
    Clipwait
    Email.Insert(Clipboard)
    
    ;etc...

    members--   
}

index = 1

Loop % Names.MaxIndex()
{
    name := Name.Remove(index)
    email := Email.Remove(index)
    ;etc...
    
    ControlSend, ContactMgrControl, %name%, ContactMgrWindow
    ControlSend, ContactMgrControl, Tab%email%, ContactMgrWindow
    
    ;etc...
    
    index++
}

관련 정보