VB.NET의 양식 응용 프로그램에서 콘솔에 Enter 키 보내기

파스칼

편집 : 내 문제는 완전히 해결되지 않았지만 아래 답변은 흥미로운 결과를 제공했습니다.

이 앱은 결국 powershell 스크립트에 의해 호출되며이 상황에서는 아래에 설명 된 문제가 없습니다. PS 콘솔에 추가 {ENTER}가 필요하지 않으므로 더 이상 문제가 없습니다! cmd.exe를 통해 내 앱을 수동으로 시작할 때 추가 ENTER가 필요한지 신경 쓰지 않았습니다.


문제 : VB.NET 양식 앱에서 코드 실행이 완료된 후 콘솔을 "기본"상태로 되돌릴 수 없습니다. 수동으로 Enter 키를 눌러야합니다.

내 앱은 명령 줄에서도 실행할 수 있습니다 (이 경우 양식이 열리지 않습니다. 코드가 자동으로 실행되고 사용자가 어떤 일이 발생하는지 볼 수 있도록 콘솔로 출력이 전송 됨)

을 호출 AttachConsole(-1)하고 일부 코드를 실행하고 모든 것이 완료되면 콘솔에 최신 메시지가 표시되지만 프로세스가 완전히 완료되지 않은 것 같습니다.여기에 이미지 설명 입력

나는 시도했다 SendKeys.SendWait("{ENTER}"). 잘 작동하지만 콘솔이 현재 초점 일 때만 가능합니다. 코드가 실행되는 동안 콘솔 외부를 클릭하면 활성화 된 창에 ENTER 키가 전송됩니다.

그래서 콘솔을 현재 창으로 만들려고했습니다.

Dim bProcess As Process = Process.GetProcessesByName("cmd").FirstOrDefault()
SetForegroundWindow(bProcess.MainWindowHandle)
// I also tried AppActivate(bProcess.Id)

SendKeys.SendWait("{ENTER}")

FreeConsole()

아니요, ENTER 키는 콘솔이 아닌 다른 곳으로 전송됩니다. 하지만 콘솔이 주황색으로 깜박이게해서 SetForegroundWindow뭔가를하는 것 같습니다 ...

어떤 도움이라도 대단히 감사하겠습니다 :)


편집하다

@TnTinMn의 답변에 대한 응답 :

FreeConsole()
// SendKeys.SendWait("test")
PieceOfCodeFromTnTinMn()

지금까지했던 것과 같은 동작 : SendKeys.SendWait("~")코드가 실행되는 동안 포커스를 잃으면 콘솔 "외부"명령 을 보냅니다 .

그러나 위의 두 번째 줄에 주석이없는 경우 "test"가 콘솔 외부 SendKeys.SendWait("~")로 전송 되고 예상대로 콘솔 로 전송 됩니다 .

나는 아직도 여기서 무슨 일이 일어나고 있는지 알아 내려고 노력하고 있습니다 ...

TnTinMn

를 호출하기 전에 VB Interaction.AppActivate 메서드 를 사용하여 부모 콘솔을 활성화 할 수 있습니다 SendKeys.SendWait. 이를 위해서는 응용 프로그램의 상위 프로세스 인 콘솔 창의 ProcessID를 얻어야합니다.

이를 수행하는 한 가지 방법은 WMI (Windows Management Instrumentation)를 사용하는 것입니다. 다음은 예쁘지 않지만 작동하는 것 같습니다. 호출 후 이것을 실행할 것입니다.FreeConsole

Using currentProcess As Process = Process.GetCurrentProcess
  Dim query As New SelectQuery()
  Dim props As New StringCollection
  props.Add("ProcessId")
  props.Add("ParentProcessId")
  With query
    .ClassName = "Win32_Process"
    .Condition = $"ProcessId={currentProcess.Id}"
    .SelectedProperties = props
  End With

  Dim parentProcessId As Int32
  Using searcher As New ManagementObjectSearcher(query)
    Using mos As ManagementObjectCollection = searcher.Get
      Using en As ManagementObjectCollection.ManagementObjectEnumerator = mos.GetEnumerator
        If en.MoveNext() Then
          parentProcessId = CInt(en.Current.Item("ParentProcessId"))
        End If
      End Using 'en
    End Using ' mos
  End Using 'searcher

  If parentProcessId <> 0 Then
    AppActivate(parentProcessId)
    SendKeys.SendWait("~")
  End If
End Using 'currentProcess

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C # .NET 콘솔 응용 프로그램에서 키보드 입력 받기

분류에서Dev

vb.NET 콘솔 응용 프로그램에서 Windows 서비스로

분류에서Dev

응용 프로그램 이벤트에서 양식으로 값 전달 (해당 응용 프로그램에 대한이 양식 시작 이벤트) VB.net

분류에서Dev

C에서 콘솔 응용 프로그램에 바로 가기 키 추가

분류에서Dev

.net의 웹 양식에서 콘솔 응용 프로그램을 변환하는 방법은 무엇입니까?

분류에서Dev

프로그래밍 방식으로 Windows의 그래픽 응용 프로그램 (게임)에 키보드 입력 보내기

분류에서Dev

비 Winforms 응용 프로그램 내에서 양식 만들기

분류에서Dev

.net 응용 프로그램에서 시작된 하위 프로세스의 콘솔 출력보기

분류에서Dev

콘솔 응용 프로그램 VB.NET에서 사용자가 입력 한 수정 날짜를 기준으로 파일 검색

분류에서Dev

한 양식의 내용을 다른 양식 vb.net에서 새로 고침

분류에서Dev

Windows 양식 응용 프로그램에서 비동기 / 대기

분류에서Dev

Delphi-기본 양식에서 응용 프로그램 중지

분류에서Dev

MFC 응용 프로그램에서 독립 양식 만들기

분류에서Dev

바로 가기 키를 사용하여 새 창에서 Windows 콘솔 응용 프로그램 열기

분류에서Dev

C # 형식없는 응용 프로그램에서 별도의 스레드에 양식 만들기

분류에서Dev

"첫 번째 Meteor 응용 프로그램": 양식이 콘솔에 기록되지 않습니다 (MeteorPad의 코드 링크 포함).

분류에서Dev

asp.net 및 vb.net 웹 응용 프로그램에 저장 한 후 팝업 양식을 닫는 방법

분류에서Dev

VB.NET 응용 프로그램에서 FormName.Show () 사용

분류에서Dev

vb.net 2010 콘솔 응용 프로그램 명령 줄 aguments

분류에서Dev

VB .net 응용 프로그램에서 날짜 시간 변환

분류에서Dev

vb.net에서 응용 프로그램 지연

분류에서Dev

MATLAB 내에서 C # 콘솔 응용 프로그램 실행

분류에서Dev

실시간 Asp.net 응용 프로그램에서 파일 보내기

분류에서Dev

asp.net Core에서 콘솔 응용 프로그램과 웹 응용 프로그램의 차이점

분류에서Dev

호출자에게 VB 양식 응용 프로그램의 대화 상자에서 설정 한 전달 값을 관리하는 방법

분류에서Dev

내 응용 프로그램의 목록보기에서 연락처 내보내기

분류에서Dev

C ++에서 내 콘솔 응용 프로그램으로 열린 파일 읽기

분류에서Dev

Windows 양식 응용 프로그램에서 배열의 최소 요소 문제

분류에서Dev

배치 파일의 콘솔 응용 프로그램에서 반환 값 가져 오기

Related 관련 기사

  1. 1

    C # .NET 콘솔 응용 프로그램에서 키보드 입력 받기

  2. 2

    vb.NET 콘솔 응용 프로그램에서 Windows 서비스로

  3. 3

    응용 프로그램 이벤트에서 양식으로 값 전달 (해당 응용 프로그램에 대한이 양식 시작 이벤트) VB.net

  4. 4

    C에서 콘솔 응용 프로그램에 바로 가기 키 추가

  5. 5

    .net의 웹 양식에서 콘솔 응용 프로그램을 변환하는 방법은 무엇입니까?

  6. 6

    프로그래밍 방식으로 Windows의 그래픽 응용 프로그램 (게임)에 키보드 입력 보내기

  7. 7

    비 Winforms 응용 프로그램 내에서 양식 만들기

  8. 8

    .net 응용 프로그램에서 시작된 하위 프로세스의 콘솔 출력보기

  9. 9

    콘솔 응용 프로그램 VB.NET에서 사용자가 입력 한 수정 날짜를 기준으로 파일 검색

  10. 10

    한 양식의 내용을 다른 양식 vb.net에서 새로 고침

  11. 11

    Windows 양식 응용 프로그램에서 비동기 / 대기

  12. 12

    Delphi-기본 양식에서 응용 프로그램 중지

  13. 13

    MFC 응용 프로그램에서 독립 양식 만들기

  14. 14

    바로 가기 키를 사용하여 새 창에서 Windows 콘솔 응용 프로그램 열기

  15. 15

    C # 형식없는 응용 프로그램에서 별도의 스레드에 양식 만들기

  16. 16

    "첫 번째 Meteor 응용 프로그램": 양식이 콘솔에 기록되지 않습니다 (MeteorPad의 코드 링크 포함).

  17. 17

    asp.net 및 vb.net 웹 응용 프로그램에 저장 한 후 팝업 양식을 닫는 방법

  18. 18

    VB.NET 응용 프로그램에서 FormName.Show () 사용

  19. 19

    vb.net 2010 콘솔 응용 프로그램 명령 줄 aguments

  20. 20

    VB .net 응용 프로그램에서 날짜 시간 변환

  21. 21

    vb.net에서 응용 프로그램 지연

  22. 22

    MATLAB 내에서 C # 콘솔 응용 프로그램 실행

  23. 23

    실시간 Asp.net 응용 프로그램에서 파일 보내기

  24. 24

    asp.net Core에서 콘솔 응용 프로그램과 웹 응용 프로그램의 차이점

  25. 25

    호출자에게 VB 양식 응용 프로그램의 대화 상자에서 설정 한 전달 값을 관리하는 방법

  26. 26

    내 응용 프로그램의 목록보기에서 연락처 내보내기

  27. 27

    C ++에서 내 콘솔 응용 프로그램으로 열린 파일 읽기

  28. 28

    Windows 양식 응용 프로그램에서 배열의 최소 요소 문제

  29. 29

    배치 파일의 콘솔 응용 프로그램에서 반환 값 가져 오기

뜨겁다태그

보관