遠端滑鼠控制的問題? |
尚未結案
|
tamad
一般會員 發表:2 回覆:3 積分:1 註冊:2004-06-02 發送簡訊給我 |
我最近有做個專案,遇到很大的問題,想請各位大大高手幫幫忙,
因為我是剛學不久,所以麻煩回覆詳細一點,感激不盡啊!
我最近在做一個有關遠端滑鼠控制的程式,我在看過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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
先謝謝這兩個大大回答我的問題,沒想到那麼快就有人幫我了,真是滿感激的! 因為是第一次問問題的關系,所以問的不是很好,關於綾小路大大的回應,我 想了一下,已經知道大概要從那個方向去進行了,不過能不能解決問題,要再 去試一下,至於我的問題地確是如何要在CppWebBrowser遠端控制對方滑鼠, 還有,我也想要在CppWebBrowser畫線,類似電子筆,可以畫重點…若有那位 大大有寫過類似的程式,也請教導一下吧! 關於andychang1690大大的回應,那些例子我有點進去看了,不過因為那不是 用bcb的語法來寫,我也只是一知半解的,雖然有些瞭解不過,我還是寫不太 出來,還是很謝謝大大回應的如此詳盡囉!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |