如何发送消息? |
尚未結案
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 模仿其它大大程式所寫出來的,供你參考
procedure TForm1.Button4Click(Sender: TObject); var I : Integer; S : Array[0..1000] OF Char; begin WinExec(PChar('C:\WinNT\System32\Telnet.exe ' Edit2.Text),SW_SHOW); Sleep(300); StrPCopy(S,UpperCase(Edit3.Text)); FOR I := 0 TO Length(Edit3.Text) - 1 DO BEGIN TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),0,0); TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),KEYEVENTF_KEYUP,0); END; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),0,0); TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),KEYEVENTF_KEYUP,0); Sleep(300); StrPCopy(S,UpperCase(Edit4.Text)); FOR I := 0 TO Length(Edit4.Text) - 1 DO BEGIN TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),0,0); TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),KEYEVENTF_KEYUP,0); END; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),0,0) ; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),KEYEVENTF_KEYUP,0); end;不過有些許缺陷,即 1.鍵盤的 Caps Lock 會影響送出字元之大小寫 2.無法指定送出給指定視窗 拋磚引玉,看看其它人是否有更好的方法 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
要送出按鍵可使用 DELPHI 光碟上附的 Sndkey32.pas
裏頭有 AppActivate 及 SendKeys 兩個function , 應該就可以做到你要的功能. 不過這個問題最大的盲點是, 你怎麼知道什麼時候該送出按鍵? 因為網路會有 DELAY, 你送出按揵時, 不一定問 ID 或 password 的提示已經出現, 所以可能會送錯位置, 甚至把密碼就顯示在畫面上. 至於如何知道 TELNET 程式中出現 login 或 password 這樣的提示字元, 我還不知道有任何簡單的方法可以取得. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: Sorry !! 忘了把這段 Procedure Post 上來
procedure TForm1.TouchKey(wVk:Word;wScan:Word;dwFlags,dwExtraInfo:dWord) ; var In1 : TInput ; begin In1.Itype := INPUT_KEYBOARD; In1.ki.wVk := wVk; In1.ki.wScan := wScan; In1.ki.dwFlags := dwFlags; In1.ki.time := 0; In1.ki.dwExtraInfo := dwExtraInfo; SendInput(1, In1, SizeOf(TINPUT)); end ; procedure TForm1.Button4Click(Sender: TObject); var aHandle : Hwnd; I : Integer; S : Array[0..1000] OF Char; begin aHandle := WinExec(PChar('C:\WinNT\System32\Telnet.exe ' Edit2.Text),SW_SHOW); Sleep(300); StrPCopy(S,UpperCase(Edit3.Text)); FOR I := 0 TO Length(Edit3.Text) - 1 DO BEGIN TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),0,0); TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),KEYEVENTF_KEYUP,0); END; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),0,0); TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),KEYEVENTF_KEYUP,0); Sleep(300); StrPCopy(S,UpperCase(Edit4.Text)); FOR I := 0 TO Length(Edit4.Text) - 1 DO BEGIN TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),0,0); TouchKey(Ord(S[I]),MapVirtualKey(Ord(S[I]),0),KEYEVENTF_KEYUP,0); END; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),0,0) ; TouchKey(VK_RETURN,MapVirtualKey(VK_RETURN,0),KEYEVENTF_KEYUP,0); end;-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |