2014-08-29 77 views
1

我對C#和Microsoft Visual Studio非常陌生,因此,考慮到這一點,我正在自學並開始一個項目(原諒我缺乏詞彙表)。到目前爲止,我所看到的WPF項目看起來不錯,但功能不爲零。我設想的一般功能是這樣的:使用C#可以與網頁和本地桌面程序進行通信嗎?

  1. 主窗口有多個按鈕,可導航到多個頁面。 (已完成)
  2. 在每一頁導航到,我想顯示來自網站的信息。 (?)
  3. 使用Web信息,我想控制桌面上的另一個程序。 (?)

使用C#可以實現點(2)和(3)嗎?

讓我來說明一下情景。一個人將信息(用戶名)提交到一個網站。該網站聯繫服務器併發回有關該用戶/用戶名的數據。網站然後將這些數據和用戶名存儲在用戶可見的列表中。通過程序的主窗口有五個不同的列表和五個可導航的xaml頁面。我想在每個頁面上顯示每個列表。使用網站和現在我的程序中找到的數據,我想發送一個命令給在桌面上運行的程序/腳本,並讓它執行一個操作(使用AutoHotKey和AutoScriptWriter在某處輸入用戶名,這本質上是更新特殊的記事本文件)。

我正在尋找的答案不是「這就是你如何具體做你所要求的」,而是「在C#中使用這些工具/功能並從那裏開始」。如果我從這個節目想是可能的,我有這些後續問題:

  1. 提交給該網站的信息將是恆定的,所以纔會通過程序查看網頁信息更新/刷新實時?
  2. 會創建一個全新的網站來使用該程序比使用現有網站和從中獲取信息更有益嗎?
  3. 程序能否通過Oracle VirtualBox與本地虛擬桌面上的其他程序通信?
  4. 如果有人在他們的電腦上使用這個程序,他們可以通過互聯網命令我的電腦上的程序/腳本嗎?

回答

0

快速解答您的各種問題:

  1. 是不是一個問題...
  2. 網站都只是用戶界面坐在一個Web服務器定義的邏輯之上 - 如果你能與互動邏輯(即web服務),而不是原始的UI層(這是HTML),你應該這樣做。你可以找到一個能夠呈現HTML信息的控件,但這不太可能是你想要做的最好的方法。
  3. 是的,通過帶有Windows Shell的COMInterop - 非常高級的主題,我希望你能很好地理解Windows SDK,內存管理和非託管的,不安全的基於指針的代碼。

後續問題:

  1. 我不明白的問題 - 你不斷提交信息,或者您要提交的信息始終是一樣的嗎?當您想刷新網頁時,您需要觸發刷新網頁信息(即請求特定頁面)。
  2. 最有利的方式不是使用所有的用戶界面(網頁),而是建立到邏輯層的鏈接,並直接通過Web服務請求數據 - 它使您在WPF應用程序中獲得最大的控制權。
  3. 是的,但又是非常先進的東西 - 它不是簡單或容易的,並且帶有許多挑戰,例如VirtualBox的本地安全和自動化API。
  4. 令人懷疑的是,除非您編寫代碼使其能夠啓用Internet,這是一個高級主題。
0

如果我正確理解您的情況,您可以使用WebClient類與您的Web服務器進行通信,並使用它返回的字符串來生成內容。

WebClient web = new WebClient(); 
web.Headers.Add("HTTP Header", "Header Value"); 
web.Headers.Add("POST Data Header", "POST Data Value"); 
string response = web.DownloadString(new Uri("https://www.myserver.net/mypage")); 
// Implement your processing on response variable here to generate and present data to the user. 

而且你可以使用Process類的StandardOutput獲得本地計算機上的任何程序的輸出。

Process proc = new Process(); 
proc.StartInfo.FileName = @"C:\Path\to\my\executable.exe"; 
proc.Start(); 
proc.StartInfo.RedirectStandardOutput = true; 
// Start the process... 
proc.Start(); 
// Retrieve the output... 
string output = proc.StandardOutput.ReadToEnd(); 
相關問題