線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1405
推到 Plurk!
推到 Facebook!

抓取他人軟體中捲動桿TSlider上面的數字(五招皆無效)

答題得分者是:m8815010
yangkissktop
一般會員


發表:13
回覆:29
積分:8
註冊:2003-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-15 14:40:37 IP:221.169.xxx.xxx 未訂閱
------
yangkissktop
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-15 16:38:57 IP:61.63.xxx.xxx 未訂閱
引言: 請教各位大內高手: 最近使用一套醫療解剖學軟體ADAM, 因為輸出圖檔數量龐大(數百張)且耗時(讀光碟機), 於是利用mouse_eventc和keybd_event做自動操作功能, 本想要做檔名(即捲動桿上面的數字)自動儲存之功能, 此一捲動桿負責畫面更換,THUMB上面數字為我所要的, 雖然程式已查出二件事: 1. 捲動桿之handle為HWND_SLD 2. 捲動桿類別為TSlider,上下按鍵類別為ToxRepeat 但仍然用盡方法而抓不出THUMB上面之數字,煩請各位青年才俊不吝指導!
yangkissktop你好< >: 窄看你的做法,有幾個小小的疑問: 首先是我沒有這一個軟體,所以一定是沒辦法測試了< >! 1. HWND_SLD是什麼?自已定義的變數?自確定你找到的handle值是正確的? 2. 用WM_GETTEXT去找捲動桿(TSilder)的text不一定正確,因為那個tag(標示19的)應該是另一個元件,所以應該看看可不可以找到那個tag的handle值,再去用WM_GETTEXT找它的text值 3. 明顯的,整個scroll bar物件是軟體中自已design的,所以它不是一個基礎的window scroll bar元,所以用所有的scroll bar messages & functions去求值應該都是不行的! 建議用其它軟體試試看(如vc的spy++),如果可以抓到19那個值,或是那個tag的handle值等,那就應該可以自行寫程式去抓它的值了! 小小建議,參著!
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-15 23:24:35 IP:218.175.xxx.xxx 未訂閱
(五招皆無效) 真好玩 有趣 1 把妳的程式ADAM 坎入你自己寫的程式於 Panel1 並固定xy軸 偵測 滑鼠的 當 訊息API KTOP有資料自己查一下 坎入Panel1 是為了怕亂抓到非範圍的值 2 上下按鈕 自己產生一個 0值遞增與減少 - 應該沒問題把 檔案txt就可 記的程式結束與開始使都歸0 就應該可95%準確 意外當機5% 哈哈 庵的想法 要寫自動機械人 有時遇到 抓不著的物件 使用XY來協助 因為所謂的物件 可能是第2層下繪出顯示的數字 那將會是抓不的或無法準確控制的 所以先確定表層可探知的物件 再使用XY抓滑鼠訊息 純哈啦 討論 不保證 發表人 - conundrum 於 2005/02/15 23:35:14
yangkissktop
一般會員


發表:13
回覆:29
積分:8
註冊:2003-10-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-16 01:48:45 IP:221.169.xxx.xxx 未訂閱
針對m8815010大大對捲動桿handler正確性的疑點:      1.個人有用勾子程式詳列所有控制項(應該錯不了)   2.再用間諜程式檢查捲動桿handle發現相同(保證錯不了)   3.程式可抓到捲動桿下方之ToxRepeat按鈕物件,並令圖片翻頁(可正常work)    再貼一張圖說明此捲動桿之特性: 左圖是正常狀態 中圖是滑鼠壓住不放狀態 右圖是間碟軟體查到的訊息 有趣的是當我一直押住滑鼠做滑動動作WM_MOUSEMOVE、WM_NCHITTEST、WM_SETCURSOR三個訊息會密集出現(如右圖) 另外當一直點擊ToxRepeat按鈕物件,我用間諜程式看到WM_APP之wParam數值會有變動,不知如何分析該軟體自訂之數值 最後感謝conundrum大大的建議,該軟體實在太大,嵌入技術不熟,案子壓力又大,當無計可施我再試試 !
------
yangkissktop
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-16 15:38:00 IP:61.63.xxx.xxx 未訂閱
引言: 針對m8815010大大對捲動桿handler正確性的疑點: 1.個人有用勾子程式詳列所有控制項(應該錯不了) 2.再用間諜程式檢查捲動桿handle發現相同(保證錯不了) 3.程式可抓到捲動桿下方之ToxRepeat按鈕物件,並令圖片翻頁(可正常work) 再貼一張圖說明此捲動桿之特性: 左圖是正常狀態 中圖是滑鼠壓住不放狀態 右圖是間碟軟體查到的訊息
yangkissktop你好< >: 哦,有點感覺了,之前好像是會錯意了< >! 我這樣說不曉得對不對,以上面左圖而言,以間碟軟體檢測可得:圖裏面總共可以分3個元件,分別是▲和▼各是一個ToxRepeat元件,而中間那一坨是一個物件,叫TSilder! 所以方向好像有點走偏了,跟scroll的東東應該沒什麼關係,如你所說,中間是一個thumb,所以應該朝trackbar的方向走吧! 試試用 href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=63216">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=63216 不行再說了!
yangkissktop
一般會員


發表:13
回覆:29
積分:8
註冊:2003-10-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-16 22:53:11 IP:221.169.xxx.xxx 未訂閱
雖然用SPY++查看TSlider物件之進出入訊息,並無發現TBM_之類的訊息,現在可確定數字訊息應該藏在WM_PAINT、WM_NCHITTEST或WM_APP(自訂訊息<-高度懷疑),但就算抓到WPARAM跟LPARAM,因無頭檔,還是無法得知自訂內容細節,可能要等到有熱心人士PO視窗訊息與記憶體資料分析相關的教程,才有辦法破解這題。    最後非常感謝m8815010大大熱心的指導,因案子急迫,本題型希望各位有空閒時隨便找套元件較奇怪的軟體幫我試一下相關技術。   
------
yangkissktop
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-16 23:44:09 IP:218.175.xxx.xxx 未訂閱
引言: 訊息與記憶體資料分析相關的教程,才有辦法破解這題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=51329 VMQuery.cpp ■【分享】AlphaV 視窗控制器 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31626 至今庵說的滑鼠訊息 自己找把 就是針對 系統訊息下手加惡劣的接收手法 一個要套AP的控制法 就是找出 訊息或加上非原機能訊息 哈哈 哈哈哈 http://education.adam.com 互動式解剖學醫學軟體,是美國A.D.A.M.公司請一群醫專業人士及電腦專家共同 研發,精心設計的一套學習人體解剖學的的多媒體系統。
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-17 00:21:37 IP:203.73.xxx.xxx 未訂閱
引言: 雖然用SPY 查看TSlider物件之進出入訊息,並無發現TBM_之類的訊息,現在可確定數字訊息應該藏在WM_PAINT、WM_NCHITTEST或WM_APP(自訂訊息<-高度懷疑),但就算抓到WPARAM跟LPARAM,因無頭檔,還是無法得知自訂內容細節,可能要等到有熱心人士PO視窗訊息與記憶體資料分析相關的教程,才有辦法破解這題。 最後非常感謝m8815010大大熱心的指導,因案子急迫,本題型希望各位有空閒時隨便找套元件較奇怪的軟體幫我試一下相關技術。 >< face="Verdana, Arial, Helvetica"> yangkissktop兄你好: 不是啦, class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage(SendMessage(TrackBar1->Handle,TBM_GETPOS,0,0)); //求thumb現在的位置 ShowMessage(SendMessage(TrackBar1->Handle,TBM_GETRANGEMAX,0,0));//求刻度的最大值 ShowMessage(SendMessage(TrackBar1->Handle,TBM_GETRANGEMIN,0,0));//最小值 } 上面的handle值只要換成TSilder的hwnd值即可了! 如果硬要用攔訊息的方式去看看這類訊息是否曾出現,那應該是去攔Form1(TSilder的父親)中的訊息,並且不是攔TBM_,而是攔TBN_這類的,因為是Notification形態的! 另外WM_PAINT、WM_MOUSEMOVE、WM_NCHITTEST、WM_SETCURSOR這類訊息的大量出現相當的平常,由其是有input動作時(from mouse or keyboard)! 並且數值也不一定會埋在訊息的lparam、wparam內,即使有自訂訊息wm_app的出現! 最後還是希望先試試上述的求值方式,我個人覺得應該就可以了,還不用VirtualQueryEx等等等的去記憶體挖值! 小小經驗,參著!
系統時間:2024-04-27 19:24:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!