none
請問能不能用vb寫個遠端更改視窗格中資料的程式呢? RRS feed

  • 問題

  • 請問能不能用vb寫個遠端更改視窗格中資料的程式呢?

    或者能不能介紹個書讓我參考一下,

    謝謝‧

    2007年3月8日 下午 05:06

解答

  • 那你打算如何傳遞訊息到遠端電腦?你不用既有系統你就必須自己處理訊息的遞送。

    Windows 提供的遠端遙控有兩類型,遠端桌面連線是新開 client 數,不會與目前的螢幕共用,這是 Server 正確的用法。另一種,比如說 Netmeeting ,會使用目前的桌面,類似的軟體也有很多,包含 vnc 或是網頁軟體。你可以選擇這類的軟體。

    Media Server 或許會有其他方法控制或傳遞,建議你先看看 SDK 的說明,Media 9 編碼器 我印象中是沒有,你若是要自己開發,會有很多問題,這是 Windows 視窗遙控的問題,簡單點先看看操作畫面是否有熱鍵,有熱鍵的話,可以寫個小程式透過 SendKeys 來處理,沒有熱鍵的話,或是視窗非作用中,可以用 Spy++ 來看 Window Message 的流程,透過 API 來做 SendMessage 處理,再不行就要做到類似遠端桌面的方式,並不是一個小範例,而是一個商用軟體的等級。

    當然也可以試著透過 ASP.NET 來做網頁畫面的改變,這樣可以不用管連線的問題,就要花時間寫 client script 來做,這樣做的話,不如用既有的網頁遠端連線軟體。

    問題沒有你想像中的單純,因為跨程序本來就是比較複雜,你現在還跨電腦。

    2007年3月9日 下午 12:17
    版主
  • VB 的 SendKeys 是包裝 API SendMessage ,負責把鍵盤資訊送出,但是目標為視焦視窗,所以你要會改變視焦視窗。可能的方式包含熱鍵及滑鼠點選。

    我有分享一個滑鼠類別,讓你操控滑鼠用:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Module&Module=32

    假定你已知目標座標 (px, py)

    Dim mMouse As New cMouse

    With mMouse

       .X = px

       .Y = py

       .Click() ' 滑鼠點一下

       ' 睡一下,視焦轉換需要些為時間,可以睡一秒,可以用 Thread.Sleep(1000)

       ' 呼叫 SendKeys 來送出文字  

    End With

    問題在於 px, py 的位置,並非是絕對的,可能有縮放問題、中間托拉造成並非是相對於視窗左上角的絕對位置。簡單一點讓視窗永遠最大化是比較單純的方式,若非最大化,就要抓畫面,會用到 FindWindow / GetWindowRect 等 API ,這邊有呼叫到這兩個 API 的範例:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Module&Module=25

    這裡面還只是加了一堆強制限定條件,就要配合一堆程式碼,你還要跨電腦。

    2007年3月9日 下午 01:10
    版主

所有回覆

  • 請詳細描述你的想法。
    2007年3月9日 上午 12:12
    版主
  • 不好意思,

    我想請問的問題如以下,

    我是想遠端控制我的電腦 (Media Server),

    目的是想要修改電視卡正在廣播的頻道  (也就是選台),

    而只希望能寫個視窗程式在遠端中,只要調上或下,

    就可以同步的傳到Server端,更改正在廣播的頻道號碼,然後還要一個"套用"鍵,

    點下遠端的"套用鍵",也等於點下Server端的"套用鍵",達到選台的功能‧

     

    P.S:

    我用的是 Media 9 編碼器,

    若用遠端操控的程式常常會讓廣播中斷,

    而且我的需求是不希望用到遠端控制整台電腦的程式,

    而是希望只要啟動一個小程式,就能達到選台的功能,

    希望您有沒有範例程式可以給我參考,

    我的E-mail是  wenbobkimo@yahoo.com.tw

    或是有沒有淺顯易懂的書可以介紹給我參考,

    謝謝您

    2007年3月9日 下午 12:02
  • 那你打算如何傳遞訊息到遠端電腦?你不用既有系統你就必須自己處理訊息的遞送。

    Windows 提供的遠端遙控有兩類型,遠端桌面連線是新開 client 數,不會與目前的螢幕共用,這是 Server 正確的用法。另一種,比如說 Netmeeting ,會使用目前的桌面,類似的軟體也有很多,包含 vnc 或是網頁軟體。你可以選擇這類的軟體。

    Media Server 或許會有其他方法控制或傳遞,建議你先看看 SDK 的說明,Media 9 編碼器 我印象中是沒有,你若是要自己開發,會有很多問題,這是 Windows 視窗遙控的問題,簡單點先看看操作畫面是否有熱鍵,有熱鍵的話,可以寫個小程式透過 SendKeys 來處理,沒有熱鍵的話,或是視窗非作用中,可以用 Spy++ 來看 Window Message 的流程,透過 API 來做 SendMessage 處理,再不行就要做到類似遠端桌面的方式,並不是一個小範例,而是一個商用軟體的等級。

    當然也可以試著透過 ASP.NET 來做網頁畫面的改變,這樣可以不用管連線的問題,就要花時間寫 client script 來做,這樣做的話,不如用既有的網頁遠端連線軟體。

    問題沒有你想像中的單純,因為跨程序本來就是比較複雜,你現在還跨電腦。

    2007年3月9日 下午 12:17
    版主
  • 謝謝您的回覆,

    想再請問一下,

    像是在VB.NET中的工具:TextBox 或是 Button

    若是先在Media Server上寫個VB程式,

    把 Media 編碼器 中的 "更改影像截取頻道"  這個視窗叫出來 (最上面一層的視窗),它游標正在框框中等待鍵盤輸入新的數值狀況,

    然後可不可以在旁邊寫個VB,利用在VB中的TextBox跟Button的輸入,來同時等於輸入到Media編碼器中正在等待鍵盤值的游標選項?

     

    簡短的表達一下我的問題:

    可不可以寫個  清除的Button,來清除編碼器中當時的頻道號碼,然後寫個  TextBox 輸入時也同時輸入編碼器等待鍵盤值的那個游標停留框框中,

    若在VB中是可以用多個TextBox,輸入一個等於同時輸入多個,VB中點個清除的Button就可清除所有的Textbox,

    不過我知道現在的問題是在兩個不同的軟體程式下,不知道能不能也有上一行所述的這種功能?

     

    容我天真的亂想的想法,

    請問能不能用計算螢幕的位置,然後輸入x , y軸數值,然後把滑鼠游標設定移到這個x.y的位置點一下,

    然後vb程式中輸入的TextBox值就讓它同等於輸入這個螢幕位置,

     

    不好意思,我只學了一點點  vb 的皮毛,請高手見諒,

    如果能在本地端的電腦中有個可以以這樣的方式輸入數值,

    希望各位前輩能教一下我,或者能否給我個範例程式,讓我參考跟修改,

    謝謝

    2007年3月9日 下午 12:46
  • VB 的 SendKeys 是包裝 API SendMessage ,負責把鍵盤資訊送出,但是目標為視焦視窗,所以你要會改變視焦視窗。可能的方式包含熱鍵及滑鼠點選。

    我有分享一個滑鼠類別,讓你操控滑鼠用:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Module&Module=32

    假定你已知目標座標 (px, py)

    Dim mMouse As New cMouse

    With mMouse

       .X = px

       .Y = py

       .Click() ' 滑鼠點一下

       ' 睡一下,視焦轉換需要些為時間,可以睡一秒,可以用 Thread.Sleep(1000)

       ' 呼叫 SendKeys 來送出文字  

    End With

    問題在於 px, py 的位置,並非是絕對的,可能有縮放問題、中間托拉造成並非是相對於視窗左上角的絕對位置。簡單一點讓視窗永遠最大化是比較單純的方式,若非最大化,就要抓畫面,會用到 FindWindow / GetWindowRect 等 API ,這邊有呼叫到這兩個 API 的範例:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Module&Module=25

    這裡面還只是加了一堆強制限定條件,就要配合一堆程式碼,你還要跨電腦。

    2007年3月9日 下午 01:10
    版主
  • 謝謝,感謝您寶貴的建議,

    滑鼠值跟函式庫對我很有用,感謝您指點!

    2007年3月9日 下午 01:57