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

如何发送消息?

尚未結案
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-02 13:16:32 IP:218.19.xxx.xxx 未訂閱
我先运行一个telnet ***.***.***.*** 然后将edit1.text发送给telnet作为用户名, edit2.text作为密码, 这个发送消息的过程如何写?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-03 09:21:41 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-03 10:12:04 IP:211.23.xxx.xxx 未訂閱
要送出按鍵可使用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-03 10:17:34 IP:218.19.xxx.xxx 未訂閱
TO:Fishman 在编译你给的源码时, 在TouchKey无法编译,是不是要引用别的单元?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-03 10:27:00 IP:210.65.xxx.xxx 未訂閱
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
系統時間:2024-05-21 21:00:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!