全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1326
推到 Plurk!
推到 Facebook!

遠端滑鼠控制的問題?

尚未結案
tamad
一般會員


發表:2
回覆:3
積分:1
註冊:2004-06-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-25 03:04:28 IP:218.165.xxx.xxx 未訂閱
我最近有做個專案,遇到很大的問題,想請各位大大高手幫幫忙, 因為我是剛學不久,所以麻煩回覆詳細一點,感激不盡啊! 我最近在做一個有關遠端滑鼠控制的程式,我在看過C++builder 揭開互助社群軟體…這本書後,有參考裡面的一個程式,不過我 是希望能在使用CppWebBrowser,即是在瀏覽網頁的狀態下控制對方 的滑鼠,但不知到要如何才辨的到,以下是書內的程式碼(部分) (我試過後,只能在panel上控制) server:    void __fastcall TForm1::ServerSocketClientRead(TObject *Sender,       TCustomWinSocket *Socket) {     int Start, TheLength, X, Y;     String LString, RString, sTemp, sCommand;     txtCommand->Text = Socket->ReceiveText() ;     StatusBar1->SimpleText = "Command " + txtCommand->Text + " from: " + Socket->RemoteAddress ;     if (txtCommand->Text == "Open")     {         mciSendString(PChar("set cdaudio door open"), NULL, 0, 0) ;     }    else if (txtCommand->Text == "Close")     {         mciSendString(PChar("set cdaudio door closed"), NULL, 0, 0) ;     }    else if (txtCommand->Text == "TaskBar")     {         blnTaskBar = !blnTaskBar ;         SetTaskBar(blnTaskBar) ;     }    else if (txtCommand->Text == "Sound")     {         mciSendString(PChar("close sound.wav"), NULL, 0, 0) ;         mciSendString(PChar("open  sound.wav"), NULL, 0, 0) ;         mciSendString(PChar("play  sound.wav"), NULL, 0, 0) ;     }    else     {         sTemp = txtCommand->Text ;         do {             Start = sTemp.Pos("\r\n");             RString = sTemp;             TheLength = RString.Length();             RString.Delete(Start, TheLength);             sTemp.Delete(1, Start);             Start = RString.Pos(" ");             LString = RString;             TheLength = LString.Length();             LString.Delete(Start, TheLength);             RString.Delete(1, Start);             sCommand = Trim(LString);             RString = Trim(RString);             Start = RString.Pos(" ");             LString = RString;             TheLength = LString.Length();             LString.Delete(Start, TheLength);             RString.Delete(1, Start);             X = StrToInt(Trim(LString));             Y = StrToInt(Trim(RString));             if (sCommand == "Mouse")             {                 // 移動滑鼠指標                 // Windows API: SetCursorPos                 SetCursorPos (X, Y);             }         }         while (sTemp.Pos("\r\n") != 0) ;     }     ServerSocket->Socket->Connections[0]->SendText(txtCommand->Text) ; }    Client:    void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,       int X, int Y) {     AnsiString XPos, YPos;        XPos = IntToStr(X);     YPos = IntToStr(Y);     ClientSocket->Socket->SendText("Mouse " + Trim(XPos) + " " + Trim(IntToStr(Y)) + "\r\n") ; }    對於回答我問題的大大,先說聲謝囉。
綾小路
一般會員


發表:2
回覆:12
積分:7
註冊:2004-09-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-25 12:13:15 IP:218.162.xxx.xxx 未訂閱
1. 看了你的問題,我還是不知道你的[很大的問題]到底是什麼問題 2. 寫程式請先了解程式的步驟和流程,然後一步一步寫,看是卡在那個關節上,然後再來發問才有辦法得到解答,對於沒有明確問題點的問題,是很難讓人回答的 3. 我[猜]了一下..你想問的應該是如何得到滑鼠在CppWebBrowser上移動的座標是吧? 是的話請改個標題再重問一次,或參考下面這篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=56714 4. 給個建議,如果你認為問題[很大],那你應該先把問題拆成幾個[小問題],再針對每個關鍵點來發問,比如生產汽車,總不會跑去車廠問人家[汽車怎麼做?]吧,也許可以先從 輪胎 怎麼做開始吧....不要急著一下子就要知道汽車怎麼做..先搞清楚汽車的每個零件怎麼做..再搞清楚每個零件互相之間的關係..最後才是組裝成一台汽車... 例如你的問題來說 要先知道流程 本地端流程: a.[檢查CppWebBrowser是否在作用中] b.[是的話,則取得本地端的Mouse座標] c.[把座標傳送到遠端] 遠端流程: d.[檢查是否有座標值送過來] e.[有的話,則將Mouse位置設定成送來的值] 然後一步一步做 先看 a. b. 是否都會實做了,不會的話,就上來問人家,只問重點,例如 [如何取得本地Mouse在CppWebBrowser上的移動座標] 都會了之後再下一步 c. .. d. .. e.. 依此類推 發表人 - 綾小路 於 2004/09/25 12:36:54
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-25 15:42:46 IP:221.169.xxx.xxx 未訂閱
tamad:因為CppWebBrowser並沒想有OnMouseMove的事件所以你要的功能 不好實現,建議你研究一下Hook,SetWindowsHookEx() 很多的教學軟體或系統監視軟體可以自動記錄重播用戶的輸入文字或點擊按鈕等操作操作,這個功能的實現是使用了Windows的Hook函數。 Windows提供API函數SetwindowsHookEx來建立一個Hook,通過這個函數可以將一個程式添加到Hook鏈中監視Windows消息,函數語法: SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD) 我列出一些與BCB有關的連結提供你參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47170 【分享】與作業系統掛勾-Hook寫作 conundrum http://delphi.ktop.com.tw/topic.php?topic_id=22389 【Delphi】【轉貼】通過Delphi建立鍵盤滑鼠動作紀錄與重播 jackkcg http://members.lycos.co.uk/happybcb/article/tips/cbc_41.htm WINDOWS鍵盤事件監控原理及應用 http://www.ccrun.com/doc/go.asp?id=377 Win2K下的Api函數的攔截 作者:tomh http://www.hk20.com/article/index.php?modules=show&id=15942 http://www.cnhacker.cn/asp/list.asp?id=2033 進行DLL注入的三種方法 作者:陶冶(無邪) http://www.legalsoft.com.cn/Articles/ArticleBrowse.asp?idArticle=165 螢幕抓詞的技術實現 請參考! Andy Chang
------
Andy Chang
tamad
一般會員


發表:2
回覆:3
積分:1
註冊:2004-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-26 01:48:23 IP:218.165.xxx.xxx 未訂閱
先謝謝這兩個大大回答我的問題,沒想到那麼快就有人幫我了,真是滿感激的! 因為是第一次問問題的關系,所以問的不是很好,關於綾小路大大的回應,我 想了一下,已經知道大概要從那個方向去進行了,不過能不能解決問題,要再 去試一下,至於我的問題地確是如何要在CppWebBrowser遠端控制對方滑鼠, 還有,我也想要在CppWebBrowser畫線,類似電子筆,可以畫重點…若有那位 大大有寫過類似的程式,也請教導一下吧! 關於andychang1690大大的回應,那些例子我有點進去看了,不過因為那不是 用bcb的語法來寫,我也只是一知半解的,雖然有些瞭解不過,我還是寫不太 出來,還是很謝謝大大回應的如此詳盡囉!
系統時間:2024-05-15 12:45:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!