2012-11-21 2 views
1

간단한 명령 줄 응용 프로그램이 있고 프로그램 시작 사이에 입력 한 명령을 저장하고 싶습니다.C# 콘솔 응용 프로그램 명령 세션 기록

혼자서 저장하는 것은 문제가되지 않습니다. 어떻게 처리할지 알고 있지만 어떻게 복원 할 수 있습니까? Console 클래스에는 응용 프로그램 시작시 위쪽 화살표를 누르면 기록이 설정되지 않습니다.

비 관리 코드에 대한 msdn의 메서드는 도움이되지 않습니다. 좋은 대답은 내가 필요한 것을 얻기 위해 C에서 사용하는 방법을 보여줄 수 있습니다.

내 아이디어는 위로 화살표를 ReadKey으로 바꾸고 "어려운"방법으로 수행하지만 더 쉬운 방법이 있다면 기꺼이 할 것입니다.

+0

기본 제공 기능이 충분하지 않습니까? http://stackoverflow.com/questions/6973260/why-does-my-console-application-have-command-history – jeroenh

+0

아시다시피 프로그램 실행간에 내장 된 기능을 사용하는 것이 좋지만 나는 앱을 닫고 다시 열어 본다. 나는 역사가 없다. bash는 리눅스를 닫고 다시 열어도 명령을 내 보낸다. 많은 윈도우 콘솔이 아니다. – Mateusz

+0

기록은 명령 프로세서 cmd.exe의 기능입니다. bash와 같은 기능을합니다. 프로그램 실행 사이에 닫히지 않기 때문에 기록을 잃지 않습니다. 자신의 프로그램에서이 기능을 사용할 수있게하려면 직접 빌드해야합니다. Console.ReadKey()로 불가능한 것은 아닙니다. –

답변

1

명령을 XML 또는 관계형 데이터베이스로 저장하기 만하면 필요할 때 목록 또는 가능한 배열로 저장된 적절한 객체에 XML을 deserialize합니다 (예 : 정의 된 수의 명령이있는 경우 지난 10 일). 그런 다음 언급 한대로 적절한 이벤트를 무시하고 목록에있는 위치 카운터를 유지하여 명령 개체 목록을 반복합니다.

+0

나는 데이터베이스 나 XML을 사용하지 않을 것이다. 새 줄이있는 일반 텍스트이면 충분하다. 나는 단순히 문자열 배열을 통해 사이클링을 할 것이고, 객체는 필요 없다. Console.ReadLine() 기본 동작을 재정의하는 것이 다소 불가능하므로 주 문제임을 알게되었습니다. – Mateusz

0

나는 이것이 오래된 질문이라는 것을 알고 있지만 나는 또한 대답을 찾고 있었다. 그래도 찾을 수 없으므로 InteractivePrompt를 만들었습니다. NuGet Package으로 사용할 수 있으며 코드를 쉽게 확장 할 수 있습니다 (GitHub). 현재 세션의 히스토리를 제공하지만 세션간에 명령을 저장하는 기능을 구현할 계획입니다.

예를 들어 SQLite와 같은 DLL을 래핑하는 데 매우 유용한 패키지입니다.

관련 문제