VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請教各位先進,如何偵測有ip之網路印表機是否正常?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
羅朝斌



註冊時間: 2003-06-21
文章: 20
來自: 花蓮

第 1 樓

發表發表於: 星期五 一月 16, 2015 3:00 pm    文章主題: 請教各位先進,如何偵測有ip之網路印表機是否正常? 引言回覆

常會碰到在區網網路內有好幾台網路印表機(如:192.168.1.100,...103),當資料送出後,有時列表機未開啟,便無法立即收到報表,非常麻煩!!.請教各位先進是否知道如何下命令?非常感謝.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
yctsai



註冊時間: 2003-04-11
文章: 179


第 2 樓

發表發表於: 星期五 一月 16, 2015 3:32 pm    文章主題: 引言回覆

用ping
回頂端
檢視會員個人資料 發送私人訊息
羅朝斌



註冊時間: 2003-06-21
文章: 20
來自: 花蓮

第 3 樓

發表發表於: 星期五 一月 16, 2015 3:34 pm    文章主題: 引言回覆

希望能在vfp程式內,而不用run方式.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期五 一月 16, 2015 3:52 pm    文章主題: 引言回覆

用 win32api 的 winexec 取代 run,
但還是用 ping


XD

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
羅朝斌



註冊時間: 2003-06-21
文章: 20
來自: 花蓮

第 5 樓

發表發表於: 星期五 一月 16, 2015 6:04 pm    文章主題: 引言回覆

非常感恩!!
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 6 樓

發表發表於: 星期二 一月 20, 2015 8:59 am    文章主題: 引言回覆

羅朝斌 寫到:
希望能在vfp程式內,而不用run方式.


您是否以前在恩光電子待過??

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
羅朝斌



註冊時間: 2003-06-21
文章: 20
來自: 花蓮

第 7 樓

發表發表於: 星期日 二月 01, 2015 11:34 pm    文章主題: 引言回覆

是!
請問您是?!
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
kalok



註冊時間: 2010-08-26
文章: 284


第 8 樓

發表發表於: 星期一 五月 11, 2015 6:58 am    文章主題: 引言回覆

請問如用 run 及 ping, VFP 如何接收結果?
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 9 樓

發表發表於: 星期一 五月 11, 2015 8:04 am    文章主題: 引言回覆

用ICMP協議API示例
代碼:
PARAMETERS szParam

IF (_VFP.StartMode == 4) AND (VARTYPE(szParam) != "C")
    ASTACKINFO(aPrg)
    oApp = CREATEOBJECT("Shell.Application")
    oApp.ShellExecute(aPrg[2], "以管理員身份運行", "", "runas", 1)
    QUIT
ENDIF

CLEAR
DECLARE LONG WSAStartup          IN Ws2_32 LONG, STRING@
DECLARE LONG WSACleanup          IN Ws2_32
DECLARE LONG socket              IN Ws2_32 LONG, LONG, LONG
DECLARE LONG closesocket         IN Ws2_32 LONG
DECLARE LONG inet_addr           IN Ws2_32 STRING@
DECLARE LONG inet_ntoa           IN Ws2_32 LONG
DECLARE LONG setsockopt          IN Ws2_32 LONG, LONG, LONG, LONG@, LONG
DECLARE LONG sendto              IN Ws2_32 LONG, STRING@, LONG, LONG, STRING@, LONG
DECLARE LONG recvfrom            IN Ws2_32 LONG, STRING@, LONG, LONG, STRING@, LONG@
DECLARE LONG WSAGetLastError     IN Ws2_32
DECLARE LONG GetCurrentProcessId IN Kernel32
DECLARE LONG GetTickCount        IN Kernel32
DECLARE LONG Sleep               IN Kernel32 LONG

_Ping("180.97.33.107")
*_Ping("127.0.0.1")
? "按任一鍵結束"
INKEY(0, "HM")
CLEAR DLLS
RETURN

FUNCTION _Ping(cDestIP)
    LOCAL WsaData, IcmpHdr, SockAddr_Dest, SockAddr_From
    LOCAL i, hSocket, nTimeout, cRecvBuf, cIP, nVal, nTime
    WsaData  = REPLICATE(0h00, 398)
    WSAStartup(0x202, @WsaData)
    hSocket = socket(2, 3, 1)
    IF hSocket != -1
        nTimeout = 1000
        setsockopt(hSocket, 0xFFFF, 0x1006, @nTimeout, 4)
        cRecvBuf = REPLICATE(0h00, 1024)
        SockAddr_From = REPLICATE(0h00, 16)
        SockAddr_Dest = 0h02000000 + BINTOC(inet_addr(@cDestIP), "4RS") + 0h0000000000000000
        FOR i = 1 TO 4
            IcmpHdr = 0h08000000;    && 請求應答
                    + LEFT(BINTOC(GetCurrentProcessId(), "4RS"), 2);
                    + BINTOC(i-1, "2RS");
                    + BINTOC(GetTickCount(), "4RS")
            IcmpHdr = STUFF(IcmpHdr, 3, 2, LEFT(BINTOC(_CheckSum(IcmpHdr, LEN(IcmpHdr)), "4RS"), 2))
            IF sendto(hSocket, @IcmpHdr, LEN(IcmpHdr), 0, @SockAddr_Dest, LEN(SockAddr_Dest)) != -1
                nVal = LEN(SockAddr_From)
                nVal = recvfrom(hSocket, @cRecvBuf, LEN(cRecvBuf), 0, @SockAddr_From, @nVal)
                nTime = GetTickCount()
                IF nVal != -1
                    IF nVal >= (20 + LEN(IcmpHdr))
                        cIP = SYS(2600, inet_ntoa(CTOBIN(SUBSTR(cRecvBuf, 13, 4), "4RS")), 16)
                        cIP = LEFT(cIP, AT(0h00, cIP) - 1)
                        IF (ASC(SUBSTR(cRecvBuf, 10, 1)) == 1) AND ;    && 是ICMP協議
                           (cIP == cDestIP) AND ;                       
                           (ASC(SUBSTR(cRecvBuf, 21, 1)) == 0) AND ;    && 響應應答
                           (CTOBIN(SUBSTR(cRecvBuf, 25, 2), "2RS") == GetCurrentProcessId())
                            nTime = nTime - CTOBIN(SUBSTR(cRecvBuf, 29, 4), "4RS")
                            ? "來自 " + cIP
                            ?? " 的回復: 字節=" + TRANSFORM(nVal)
                            ?? " 時間" + IIF(nTime < 1, "<1", "=" + TRANSFORM(nTime)) + "ms"
                            ?? " TTL=" + TRANSFORM(ASC(SUBSTR(cRecvBuf, 9, 1)))    && IP頭ip_ttl
                            Sleep(1000)
                        ENDIF
                    ENDIF
                ELSE
                    nVal = WSAGetLastError()
                    IF nVal == 10060
                        ? "请求超时"
                    ELSE
                        ? "Error: " + TRANSFORM(nVal)
                    ENDIF
                ENDIF
            ENDIF
        ENDFOR
    ELSE
        nVal = WSAGetLastError()
        IF nVal == 10013
            ? "�]權限被拒,可嚐試以管理員身份運行主�{序。"
        ELSE
            ? "Error: " + TRANSFORM(nVal)
        ENDIF
    ENDIF
    closesocket(hSocket)
    WSACleanup()
ENDFUNC

FUNCTION _CheckSum(cBuffer, nSize)
    LOCAL i, nCheckSum
    i = 1
    nCheckSum = 0
    DO WHILE nSize > 1
        nCheckSum = nCheckSum + CTOBIN(SUBSTR(cBuffer, i, 2) + 0h0000, "4RS")
        i = i + 2
        nSIze = nSIze - 2
    ENDDO
    IF nSize == 1
        nCheckSum = nCheckSum + ASC(SUBSTR(cBuffer, i, 1))
    ENDIF
    DO WHILE BITRSHIFT(nCheckSum, 16) > 0
        nCheckSum = BITRSHIFT(nCheckSum, 16) + BITAND(nCheckSum, 0x0000FFFF)
    ENDDO
    RETURN BITAND(BITNOT(nCheckSum), 0x0000FFFF)
ENDFUNC


oldbb 在 星期二 五月 12, 2015 2:40 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
kalok



註冊時間: 2010-08-26
文章: 284


第 10 樓

發表發表於: 星期二 五月 12, 2015 6:42 am    文章主題: 引言回覆

謝謝, 收下來試試
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作