2010-04-18 2 views

답변

4

사용자가 클릭 할 수있는 명령 프롬프트에서 출력 텍스트를 의미합니까? 아니, 터미널이 그것을 지원하지 않는 한. 리눅스 터미널은 일반적으로 URL 패턴과 일치하는 텍스트를 자동 링크하므로 사용자는 단지 printf("http://stackoverflow.com/\n"); 일 수 있으며 클릭 할 수 있지만 사용자의 프로그램이 아닌 터미널에 달려 있습니다.

+0

실례합니다. 어쨌든 고마워요. – TheEliteOne

1

'직접 연결'이라고 쓰면 뜻이 명확하지 않습니다. 클릭 가능한 텍스트 또는 URL을 여는 수단. 여하튼, 명령 행 프로그램은 보통 명령 행 매개 변수에 응답합니다. 프로그램은 명령 행 플래그에 대한 응답으로 기본 브라우저에서 URL을 열 수 있습니다. Windows에서 ShellExecute으로 전화를 걸 수 있습니다. 다른 시스템에서는 system이 적합 할 수 있습니다.

1

에 따라 다릅니다. 예를 들어, Windows에서는 다소 사소한 일이지만 완전히 가능합니다. ReadConsoleInput을 통해 마우스 이벤트를 수신 할 수 있으므로 이론적으로 입력 이벤트를 읽는 것이 매우 간단합니다. 링크로 정의한 영역을 마우스로 클릭하면 해당 링크가 사용자에게 적합하게 표시됩니다 - 웹 사이트를 텍스트 모드로 표시하려는 경우 가능합니다 (단, 다시 ). 사용자의 일반 웹 브라우저를 시작하려면 훨씬 간단합니다 (일반적으로 URL은 ShellExecute입니다).

실제로 세부 사항은 다소 추해집니다. 마우스 입력이 작동하려면 마우스 입력을 활성화해야합니다. ReadConsoleInputINPUT_RECORD을 제공합니다.이 입력란은 다양한 입력 레코드 유형의 합집합이며, 그 중 하나는 마우스 입력 레코드입니다. 마우스 클릭에 반응하게 될 때까지 코드는 상당히 깊게 중첩됩니다. 그것도 어느 ​​방법으로도 관리 할 수없는 것은 아니지만 Windows 콘솔 프로그래밍에 대한 상당한 경험이없는 한 시간이나 시간이 아닌 작업을하기 전에 하루 (어쩌면 조금 더)가 걸리기 쉽습니다. 두 사람은 처음에는 짐작할 것입니다.

물론 이것은 Windows 용입니다. 코드를 다른 시스템으로 이식하려는 경우 완전한 재 작성을 검토하는 것이 좋습니다. GUI의 경우 많은 플랫폼 간 라이브러리가 있지만 텍스트 모드 마우스 조작은 거의 지원되지 않습니다.

+0

GPM이 리눅스와 동일하지 않습니까? http://freshmeat.net/projects/gpm/ –

+0

유닉스와 맥 시스템에서는'system()'또는'popen()'을 호출 할 수있다. (또는 미쳐서 완벽 해지기를 원한다면'fork()'와'exec()')를 사용하면 URL을 명령 행 매개 변수로 사용하여 브라우저를 실행할 수 있습니다. Mac에서는 명령'open'이 URL 인자가 주어지면 사용자의 브라우저를 시작합니다. 그래서'std :: string cmd ("open '"); cmd + = url; cmd + = " '"; 시스템 (cmd.c_str()); '이 트릭을 수행 할 수 있습니다. Linux에서 사용자가 선호하는 브라우저를 시작하는 방법을 모르겠습니다. Gnome과 KDE는 다를 수 있습니다. 추신 * URL을 제대로 벗어 났는지 확인하십시오. * –

관련 문제