2010-03-03 3 views
2

C# 및 프로세스를 사용하고 있습니다. newProcess = Process.Start ("someProgram.exe");프로세스에서 공개 필드에 액세스하는 방법은 무엇입니까? C#

이 someProgram.exe에는 공개 텍스트 상자가있는 양식이 있습니다.

어쨌든 newProcess를 사용하여 textBoxes를 설정할 수 있습니까? newProcess.GetField (textField1)와 같은 것을 기대하고있었습니다. 텍스트 = "최고";

디버깅 중에 Process API와 속성을 살펴 보았지만 아무 것도 튀어 나오지 않았습니다.

편집 : someProgram.exe에 대한 원본이 있으므로 텍스트 입력란이 공개되어 있습니다. 일부 프로그램의 소스를 편집 할 수 없습니다. Process.Start를 사용하는 코드가 전달되었으며 일부 매개 변수를 새 프로세스에 전달할 수있는 방법을 변경하는 데 시간을 낭비하고 싶지 않았습니다.

내 진짜 목표는 Process.Start ("someProgram.exe")가 실행될 때입니다. 텍스트 필드에 텍스트를 넣을 수 있으므로 게으르고 사용자 이름과 pw를 매번 입력하지 않아도됩니다. :)

감사합니다.

+0

다른 프로세스에 연결할 수 없으며 내부의 내용으로 놀 수 없습니다! 무엇을 성취하려고합니까? –

+2

그는 소스가없는 GUI 응용 프로그램을 계측하려하고있을 것입니다. 비록 실제로, 일반적으로, 당신이 그것을해서는 안되는, 실제로 좋은 질문입니다. –

답변

0

당신은 직접 액세스 할 수 없습니다.

회원은 자신이 운영되는 응용 프로그램 내에서만 공개됩니다. 이러한 방식으로 다른 응용 프로그램의 유형에 직접 액세스 할 수 없습니다 (직접).

이것은 아주 좋은 일입니다. 다른 응용 프로그램의 내부 작업을 엉망으로 만들 수 있다면 모든 응용 프로그램에있는 보안 모델을 완전히 위반할 수 있습니다. 시스템 보안과 안정성은 크게 어려울 것입니다. 다른 응용 프로그램은 당신을 경우

  1. , 라이브러리 대신 별도의 응용 프로그램으로 구축 :

    이 시나리오에 대한 두 가지 옵션이 있습니다. 신청서 양식을 직접 보여주십시오. 그런 다음 유형에 액세스 할 수 있습니다.

  2. Interprocess Communication의 몇 가지 양식을 사용하여 두 프로세스가 서로 "대화"하고 요청 된대로 값을 전달할 수 있습니다. Windows Communication Foundation이 이에 매우 효과적입니다.
+0

두 앱 모두 내 앱입니다. 나는 이것에 대해 생각했지만, 내가 가지고있는 코드는 내가 보았던 측면/개인 프로젝트와 함께 전달되었다.나는 최소한의 일로 그것을하고 싶었다. # 2 감사합니다. – Brad8118

0

짧은 대답은 아마도 아니오입니다. 아마도 오랜 대답 일 겁니다. someProgram.exe를 열고 Spy ++를 사용하면 창 정보에 대한 정보를 수집 한 다음 해당 텍스트 상자에 텍스트 입력을 모방 한 WM_ * 메시지를 오른쪽 창 핸들로 보낼 수 있습니다.

더 일반적인 방법을 사용할 수있게 해주는 someProgram.exe에 대한 원본이없는 경우에만이 경로로 이동합니다.

관련 문제