C#에서 이벤트 기록기를 만들려고합니다. 프로그램에는 텍스트 상자가 있고 런타임에 텍스트 상자에 사용자의 활동을 보여주는 메모장 문서를 열어야합니다. 지금까지 텍스트 파일에 파일을 저장하는 방법도 알고 있습니다. 또한 textChanged 이벤트를 2 개의 텍스트 상자에 사용하는 방법을 알고 있지만 메모장과 같은 텍스트 편집 응용 프로그램에서는 사용할 수 없습니다. 누군가가 올바른 방향으로 나를 가리키며이 일을하는 법을 알려줄 수 있습니까? 긴 텍스트를 염두에두고, 내가 의미를 갖기를 바랍니다 :-)응용 프로그램 활동 기록계
답변
Sytem.Diagnostics.Process를 사용하여 프로세스를 시작한 다음 SendKey.Send를 사용하여 텍스트를 Notpad 창으로 보낼 수 있습니다. (textbox.TextChanged/button.Clicked)
[DllImport("user32.dll",EntryPoint="FindWindow")]
private static extern IntPtr FindWindow(string sClass, string sWindow);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
이 이벤트 핸들러이 추가 :
클래스에 이러한 API 호출을 추가 :이 시도
IntPtr notepadHwnd = FindWindow("Notepad",(string)null);
if (notepadHwnd == null)
{
System.Diagnostics.Process notepad = new Process();
notepad.StartInfo.FileName = "notepad.exe";
notepad.Start();
System.Threading.Thread.Sleep(500);
notepadHwnd = FindWindow("Notepad",(string)null);
}
// get the text from the users input
string msg = textBox1.Text;
if (notepadHwnd != null)
{
SetForgroundWindow(notepadHwnd);
// Send the string to the application that has focus
// note: If you need to erase existing text (ie. on TextChanged)
// you could use SendKeys.Send("^a{BACKSPACE}"); to select all and delete
SendKeys.Send(msg);
}
편집 : 추가를 FindWindow 및 SetForgroundWindow. 이 코드는 다른 메모장 창을 열지 않았다고 가정합니다.
Process.Start ("notepad.exe", "path");를 사용했습니다. 코드의 첫 번째 3 줄에 대해 내가 얻은 동일한 출력을 제공합니다. 그것은 텍스트 상자에 뭔가를 입력 할 때마다 새로운 여러 메모장 파일을 엽니 다. 기본적으로 '텍스트 입력을 읽는 대신 입력을 쓰고 텍스트 상자를 무시합니다 – YoungDisciple09
나는 당신을 팔로우하지 않습니다. 메모장을 열고 textbox1.Text의 텍스트를 다시 textbox1로 다시 씁니다. – jbriggs
SendKeys가 작동하도록 메모장을 활성화 된 창으로 설정하려고 내 대답을 편집했습니다. – jbriggs
- 1. RCP 응용 프로그램 활동
- 2. 활동 속도가 느린 응용 프로그램
- 3. Android 응용 프로그램 자습서 활동
- 4. sqlite3 multipe 기록계
- 5. running node.js 주행 기록계 미들웨어
- 6. 응용 프로그램 알림을 사용하여 다른 응용 프로그램/활동 호출
- 7. 다른 응용 프로그램 탭 활동에서 응용 프로그램 활동 호출?
- 8. Delphi 외부 응용 프로그램 시작 "활동 없음"
- 9. android에서 응용 프로그램 외부에서 활동 호출
- 10. 안드로이드 서비스, 활동 및 응용 프로그램
- 11. 응용 프로그램 내에서 WebView 활동 재사용
- 12. 활동 컨텍스트 대신보기로 응용 프로그램 컨텍스트 전달
- 13. Android 응용 프로그램 오류 (활동 주)
- 14. 응용 프로그램 내의 청취자 및 전환 활동
- 15. 내 응용 프로그램 외부의 팝업 창에서의 활동
- 16. 활동 컨텍스트 대신 응용 프로그램 컨텍스트 사용
- 17. 내 응용 프로그램 활동 계산 방법 알아보기
- 18. 비 활동 클래스의 응용 프로그램 컨텍스트?
- 19. SharedPreferences 응용 프로그램 컨텍스트와 활동 컨텍스트
- 20. CookieSyncManager.createInstance에서 응용 프로그램 또는 활동 컨텍스트 사용
- 21. 응용 프로그램 재시작시 다른 활동 시작
- 22. 않도록 활동 재개 응용 프로그램 내 응용 프로그램에서 배경
- 23. 다른 응용 프로그램에서 활동 또는 응용 프로그램 자체 파괴 중
- 24. 테스트 장치의 모든 응용 프로그램 목록에 응용 프로그램 이름이 아닌 활동 이름이 표시됩니까?
- 25. 안드로이드 응용 프로그램
- 26. android 응용 프로그램/활동 라이프 사이클 : 언제 플래시에 저장해야합니까?
- 27. 활동 표시기 애니메이션 응용 프로그램 재개시 배경에서 중단
- 28. Android 및 구성 가능한 응용 프로그램, 다시 사용할 수있는 활동
- 29. 파일 열기시 여러 인스턴스의 응용 프로그램/활동 방지하기
- 30. 응용 프로그램 개체를 Android에서 활동 및 BroadcastReceiver와 차별화하려면
여기 메모장으로 무엇을하려고하는지 명확하지 않습니다. 실행중인 메모장 인스턴스에 텍스트를 입력하려고합니까? 대신 응용 프로그램 창에 텍스트를 표시하면 어떻습니까? – David
런타임 중에 메모장에 사용자 입력을 표시하려고합니다. – YoungDisciple09
메모장 창에 대한 핸들을 가져 와서 일부 저수준 Windows API를 사용하여 키 입력을 보내는 것 외에 다른 작업을 수행 할 수 있는지 잘 모르겠습니다. 그러나 그것은 텍스트를 보여주기위한 많은 노력처럼 보입니다. 응용 프로그램에는 텍스트를 표시 할 수있는 네이티브 컨트롤이 있습니다. 하나의 큰 TextBox가있는 양식을 열고 더 쉽게 * 많이 * 작성할 수 있습니다. – David