none
如何取得其他程式在螢幕中的座標 RRS feed

  • 問題

  • 我想要寫一個程式能夠自動將滑鼠移到某個視窗的按鈕上並按下去,現在問題是要先知道
    該視窗在螢幕中的座標是多少,以便算出該按鈕的相對位置,請問有辦法取得視窗在整個螢
    幕中的相對位置座標嗎,謝謝!
    2009年8月6日 上午 06:56

解答

  • 這要看看他有沒有Dll檔,或跟廠商聯絡怎麼傳資料或解資料.而不是從畫面下手.
    • 已提議為解答 昭仁 2009年8月6日 下午 02:23
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 上午 07:56
  • 我詳細說明我的問題,下圖這是一個datalogger廠商提供的軟體,我的需求是希望可以每隔10秒鐘自動截取他最新的資料到我的C#程式以便後續處理。
    圖中有個copy按鈕,按下去可以定時將最後一筆資料複製的剪貼簿,但這樣變成一台電腦只能接一個datalogger,因為一個windows只有一個剪貼簿,而收一個datalogger就必須開一個這樣的程式。
    SAVE按鈕可以將table裡的資料存成文字檔,所以我希望可以寫個程式定時去按那個SAVE,然後用C#讀他的文字檔做後續處理動作,希望各位先進能給小第一些解決的方法。
    http://student.sju.edu.tw/95306013/datalogger.JPG

    1. 簡單的作法  程式預先定義好要自動點擊的視窗座標,接著再去讀取文字檔
    2. 進階的作法  使用 spy++ 之類的工具先去看需要的 hwnd,直接 sendmessage 過去,接著再去讀取文字檔
    每天都有進步的人值得敬重
    • 已提議為解答 昭仁 2009年8月6日 下午 02:23
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 下午 02:23
  • 這樣的話,我會建議你用 SendKeys 去送鍵盤命令。
    從畫面上來看,它的按鈕都有快速鍵,用 SendKeys 比用滑鼠跑快多了。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 下午 02:32

所有回覆

  • 你可以用 C# 來寫這樣的東西:
    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Module&Module=32


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年8月6日 上午 07:20
  • 謝謝您的回覆,因為還不知道該按鈕的位置,所以你說的類別應該無法符合我的需求。
    2009年8月6日 上午 07:39
  • 你是要做點水程式嗎?
    所以你連要點程式是什麼都不一定?
    2009年8月6日 上午 07:49
  • 我詳細說明我的問題,下圖這是一個datalogger廠商提供的軟體,我的需求是希望可以每隔10秒鐘自動截取他最新的資料到我的C#程式以便後續處理。
    圖中有個copy按鈕,按下去可以定時將最後一筆資料複製的剪貼簿,但這樣變成一台電腦只能接一個datalogger,因為一個windows只有一個剪貼簿,而收一個datalogger就必須開一個這樣的程式。
    SAVE按鈕可以將table裡的資料存成文字檔,所以我希望可以寫個程式定時去按那個SAVE,然後用C#讀他的文字檔做後續處理動作,希望各位先進能給小第一些解決的方法。
    http://student.sju.edu.tw/95306013/datalogger.JPG
    2009年8月6日 上午 07:51
  • 這要看看他有沒有Dll檔,或跟廠商聯絡怎麼傳資料或解資料.而不是從畫面下手.
    • 已提議為解答 昭仁 2009年8月6日 下午 02:23
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 上午 07:56
  • 我詳細說明我的問題,下圖這是一個datalogger廠商提供的軟體,我的需求是希望可以每隔10秒鐘自動截取他最新的資料到我的C#程式以便後續處理。
    圖中有個copy按鈕,按下去可以定時將最後一筆資料複製的剪貼簿,但這樣變成一台電腦只能接一個datalogger,因為一個windows只有一個剪貼簿,而收一個datalogger就必須開一個這樣的程式。
    SAVE按鈕可以將table裡的資料存成文字檔,所以我希望可以寫個程式定時去按那個SAVE,然後用C#讀他的文字檔做後續處理動作,希望各位先進能給小第一些解決的方法。
    http://student.sju.edu.tw/95306013/datalogger.JPG

    1. 簡單的作法  程式預先定義好要自動點擊的視窗座標,接著再去讀取文字檔
    2. 進階的作法  使用 spy++ 之類的工具先去看需要的 hwnd,直接 sendmessage 過去,接著再去讀取文字檔
    每天都有進步的人值得敬重
    • 已提議為解答 昭仁 2009年8月6日 下午 02:23
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 下午 02:23
  • 謝謝您的回答:
    1.因為那個程式最後是要交給客戶的,所以不可能讓datalogger程式一直都在同一個座標位置上。
    2.我用spy++看,那個按鈕是一整條的toolbar,我不知道如何去觸發其中一個按鈕,懇請指教。

    2009年8月6日 下午 02:31
  • 這樣的話,我會建議你用 SendKeys 去送鍵盤命令。
    從畫面上來看,它的按鈕都有快速鍵,用 SendKeys 比用滑鼠跑快多了。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年8月13日 上午 06:02
    2009年8月6日 下午 02:32
  • Hi allen741230,

    用 spy++ 去監看這個 toolbar (雖然我認為 delphi 這個應該是 button),
    觀察一下手動按下這個按鈕時, spy++ 收到的資料 (hwnd, message, key..),
    然後您自己的程式應該就可以模擬送出相同的控制訊息了。
    每天都有進步的人值得敬重
    2009年8月7日 上午 10:03