하루에 100 번 처리하는 프로세스를 자동화하기 위해 다른 응용 프로그램을 제어하려고했습니다. 그것은 충분히 간단합니다. 몇 번의 키 스트로크가 있지만 모든 시도에서 좌절되었습니다.sendkeys 나 window의 API로 다른 응용 프로그램을 제어 할 수 없습니다.
ROUND 1 : 내가 보내 닷넷에서 SendKeys를 시도 알트 + C : 에서는 AppActivate ("멀티 채널 주문 관리자") '내가 그때
을 제어하려는 내 응용 프로그램에 포커스를 얻을 : SendKeys.SendWait를 (SendKeys.Send ('% C') 또는 SendKeys.Send ('% C') 또는 SendKeys.Send ('% c') 또는 SendKeys.Send ('% c')는 모두 내 앱에서 아무런 일도 일어나지 않았습니다. alt를 보낸 다음 'c'를 누르면 앱이 응답하지만 콤보에는 응답하지 않습니다. 앱을 별도로 보내면 앱이 내가 필요한 것을 수행하지 않고 함께 있어야합니다. 모든 alt 키 조합은 실패하지만 단일 키 스트로크는 작동합니다.
ROUND 2 : 이 나는를 FindWindow 및 PostMessage를 API를 사용하여 키 입력을 전송 시도 :
Dim ParenthWnd As New IntPtr(0)
Dim hWnd As New IntPtr(0)
Dim iRetval As Integer
ParenthWnd = FindWindowByClass("momwin9c000000", 0)
If ParenthWnd.Equals(IntPtr.Zero) Then
Beep()
Else
iRetval = SendMessage(ParenthWnd, WM_KEYDOWN, Keys.Alt, 0)
iRetval = SendMessage(ParenthWnd, WM_KEYUP, Keys.C, 0)
iRetval = PostMessage(ParenthWnd, WM_KEYUP, Keys.Alt, 0)
End If
이 너무 내가 응용 프로그램의 올바른 자식 창에 쓰는 아니에요 어쩌면 때문에, 실패? 나는 Spy ++를 사용하여 이것을 알아 내려고 노력했지만, 내가 뭘 잘못하고 있는지 알지 못한다.
ROUND 3 : 사용하여 스파이 ++ 나는 어쩌면 내가 완전히 내가 일을해야 이해하지 않는, 다시 전송되어야하지만 명령이 무엇인지 알아 내기 위해 노력했다.
Dim ParenthWnd As New IntPtr(0)
Dim hWnd As New IntPtr(0)
Dim iRetval As Integer
ParenthWnd = FindWindowByClass("momwin9c000000", 0)
If ParenthWnd.Equals(IntPtr.Zero) Then
Beep()
Else
' Have the window handle
Dim ChildhWnd As New IntPtr(0)
ChildhWnd = FindWindowEx(ParenthWnd, IntPtr.Zero, "momwin9c000000", "MOM Main Menu Toolbar")
If ChildhWnd.Equals(IntPtr.Zero) = False Then
iRetval = PostMessage(ParenthWnd, WM_KEYUP, &H12, &HD0380001)
iRetval = PostMessage(ChildhWnd, WM_KEYUP, Keys.ShiftKey, 0)
iRetval = PostMessage(ChildhWnd, WM_KEYUP, Keys.Alt, 0)
End If
End If
ROUND 4 : 나는 언급하지 않았다 일에 는 응용 프로그램 창은 두 패널로 나누어 져 있습니다. 한 패널에서 다른 패널로 이동할 수는 없지만 (키보드를 사용하여) alt + c를 수행 할 수 있습니다. 따라서 라운드 4는 마우스 클릭 방식으로 진행되었습니다. 포커스를 이동하려고하는 텍스트 상자의 위치를 알기 위해 마우스 위치를 이동하고 클릭했습니다.
Cursor.Position = Me.PointToScreen(New Point(200, 180))
mouse_event(MOUSEEVENTF_LEFTDOWN, 200, 180, 0, 0)
이
바닥 패널과 클릭의 텍스트 상자의 중앙에 마우스 포인터를 이동하지만, 초점은 상단 패널에 남아 만 거의 tabkey 스트로크처럼, 다음 텍스트 상자로 이동합니다.요약 : 실제 alt + c 키 입력과 sendkeys 버전 또는 Window API 버전간에 차이점이 무엇인지는 모르겠지만 실제 키 입력이 작동하고 시도가 실패합니다. 실제 마우스 클릭과 내 mouse_event API 시도의 차이와 동일합니다. 내가 무엇을 할 수 있는지 또는 다른 것을 시도 할 수 있는지. 모든 제안을 부탁드립니다. 나는 메인 애플 리케이션의 하위 창에 핸들을 얻을 수 있다면 내 문제의 일부가 해결 될 수 있다고 생각하지만 솔기를 할 수없고 내가 뭘 잘못하고 있는지 잘 모르겠다.
테스트로서 무료 마우스/키 스트로크 매크로 레코더를 다운로드했습니다. 창을 더 잘 제어하지 못했습니다.