2015-01-30 3 views
-1

에서 SendKeys C : (가상 머신, 원격 데스크톱, 내가 RDP를 통해 액세스되는 VM으로 다음을 수행하려고 #

  1. 실행 명령 프롬프트 Thread.sleep를 충분히 RDP 세션을 분리하려면 10 초, 그것의 오케이는 그것의 더 긴 경우에)

  2. 대화식 형태에서 작동하는 exe를 발사하는 명령 프롬프트에 Sendkeys. 완벽한 예가 FTP입니다. 매개 변수없이 FTP를 실행하면 대화식 프롬프트가 나타납니다. 보안하지만 명령 줄 매개 변수에 대한 그것의 긴 이야기가 연결된

내가 모든 것을 하나의 중요한 문제를 제외하고 작업이를 RDP하면서 ..이 프로세스는 실행되지 않습니다 대화 할 필요가 작동하지 않습니다. RDP에서 연결을 끊으면 sendkeys가 작동하는 키보드가 없습니다. 나는 정확한 에러를 기억하지 못한다. 그러나 기본적으로 '키보드가 연결되지 않았다'.

나는 RDP 세션이 끝날 때 여전히 '연결'된 가상 키보드를 만들 수 있다고 생각했다.

RDP 연결을 끊은 후에도 명령 프롬프트의 DOS조차도 계속 실행된다는 것을 확인했습니다. 이 문제는 연결되지 않은 경우 sendkeys와 VM 키보드에 격리됩니다.

나는 높고 낮음을 찾았지만이 하나가 저를 곤혹스럽게합니다. 이 문제를 소스에서 다루지 않고 해결 방법이라고 생각하지만이 옵션 만 있습니다.

내가 생각할 수있는 유일한 대안은 SendKeys처럼 작동하지만 키보드가 연결되지 않아도 작동하는 것입니까?

편집 조금 더 분명합니다. 나는 다른 많은 해결책을 찾았지만이 유일한 생각이 남아 있습니다.

규칙은 다음과 같습니다

  1. 것도 이러한 '테스트 자동화'도구

  2. 모든 VS2012의 C# .NET을 사용하여 처음부터 집에 건설하는 것처럼 VM에 설치할 수 없습니다 최대 4.5.

어쩌면 내가 오픈 소스 테스트 자동화 도구를 찾을 수 있지만, 연구 및 가능성이 복잡한 응용 프로그램처럼 보이는 변환 할 수 시간이 없다.

모든 아이디어를 높이 평가합니다.당신이 만들 때

+0

[XY 문제] (http://www.perlmonks.org/?node=xy+problem)와 같은 저에게 보입니다 – EZI

+0

정확한 XY. 난 그냥 사이드 바를 저장하고 특정 문제에 집중하고 싶습니다. C#을 통해 VM에서 키 입력 자동화를 수행 할 수도 있습니다. RDP에 연결된 상태에서 프로세스를 시작하려면 연결을 끊고 프로세스를 계속 진행하십시오. – JoeCM

답변

0

는 프로세스 개체가 적절하게 에게 StartInfo을 설정

var proc = new Process { 
    StartInfo = new ProcessStartInfo { 
     FileName = "program.exe", 
     Arguments = "command line arguments to your executable", 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     CreateNoWindow = true 
    } 
}; 

다음 프로세스를 시작하고 그것에서 읽어

proc.Start(); 
while (!proc.StandardOutput.EndOfStream) { 
    string line = proc.StandardOutput.ReadLine(); 
    // do something with line 
} 

당신에게 무언가를 보내려면 here

에서 촬영 간단히 사용할 수 있습니다 :

proc.StandardInput.WriteLine("Something"); 

while 루프에서 일부 트리거를 체크 인하 고 일부 데이터를 스트림에 쓸 수 있습니다.