2010-04-18 41 views

回答

4

您的意思是命令提示符中的輸出文本,然後用戶可以點擊?不,除非終端支持它。 Linux終端通常會自動鏈接符合網址格式的文本,因此您可以僅使用printf("http://stackoverflow.com/\n");並且它可以點擊,但這取決於終端,而不是您的程序。

+0

該死,好吧謝謝任何方式。 – TheEliteOne 2010-04-18 02:45:00

1

當您編寫'直接鏈接'時,您是否意味着可點擊文本或打開網址的方式。無論如何,命令行程序通常會響應命令行參數。您的程序可以在默認瀏覽器中打開一個URL,以響應命令行標誌。在Windows上,您可以撥打ShellExecute - 在其他系統上,system可能是合適的。

1

這取決於。例如,在Windows中,這是完全可能的,儘管有點不重要。您可以通過ReadConsoleInput接收鼠標事件,因此從理論上講,閱讀輸入事件是相當直接的事情,並且如果鼠標點擊您定義爲鏈接的區域,則可以引導用戶看到適合的鏈接 - 如果你想以文本模式顯示網站,這是可能的(儘管如此,顯然不平凡)。如果你想啓動用戶的普通網頁瀏覽器,那就簡單多了(通常只有ShellExecute的URL)。

在現實中,細節變得有點醜陋。你必須啓用鼠標輸入才能工作。 ReadConsoleInput爲您提供了一個INPUT_RECORD,它是許多不同輸入記錄類型的聯合,其中之一是鼠標輸入記錄。當你對鼠標點擊做出反應時,你的代碼嵌套得相當深。沒有任何一種方法無法處理,但除非您已經擁有相當豐富的Windows控制檯編程經驗,否則在您使用Windows控制檯之前可能需要大部分時間(甚至可能更多),而不是小時或兩個你最初猜測。

當然,這是嚴格適用於Windows的 - 如果您想將代碼移植到另一個系統,我猜想您很可能會看到完全重寫。對於圖形用戶界面,有相當多的跨平臺庫,但文本模式鼠標操作幾乎沒有得到很好的支持。

+0

GPM不是Linux的等價物嗎? http://freshmeat.net/projects/gpm/ – 2010-04-18 01:55:13

+0

在Unix和Mac系統上,你可以調用'system()'或'popen()'(或者如果你想變得瘋狂並且完美無缺,可以使用'fork ()'和'exec()',這給了你更多的控制權)來啓動一個瀏覽器,將URL作爲命令行參數。在Mac上,如果給定一個URL參數,命令'open'將會啓動用戶的瀏覽器,所以類似'std :: string cmd(「open'」); cmd + = url; cmd + =「'」;系統(cmd.c_str());'可能會訣竅。我不知道如何在Linux中啓動用戶首選的瀏覽器; Gnome和KDE可能會有所不同。附: *確保你正確地轉義URL。* – 2010-04-18 01:55:31