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

WSH在VFP中的简单应用

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



註冊時間: 2006-03-11
文章: 43


第 1 樓

發表發表於: 星期一 三月 20, 2006 10:43 pm    文章主題: WSH在VFP中的简单应用 引言回覆

WSH语言简单介绍:
WSH是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境,
在这个环境中,预定义了一些对象,同时也可以使用COM里的其他对象。
他使用一种脚本引擎来对脚本解释执行,微软自己支持VBSCRIPT和JSCRIPT,
第三方也可以开发自己的脚本引擎。
具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),
然后用一个程序对他解释执行,这个程序就叫Windows Scripting Host,程序
的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器
里有没有这两个文件,就知道有没有WSH了。(win2000是在winnt/system32/下)
这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。

WSHSHELL对象常用的几个对象:
限于篇幅,WSH的常用对象的使用请参阅:
http://www.99inf.net/Article/aspjc/khdxg/2005-05-24/15970.html

WSH在VF中的应用:

应用1:在VFP中调用DOS命令
大家知道,在VFP中调用dos命令常令人苦恼的事情就湿那个可恶的黑框给
大家造成的不爽,虽然VFP的RUN/N命令有时候可以通过设置N参数来达到去掉
黑框的目的,但碰到一些需要时间来返回信息的DOS命令,如一些网络等,此
类问题的解决大家可以在网上搜索到N条通过调用API来实现完美调用DOS的代
码,但全部湿代码冗长晦涩,而通过调用WSH来实现此功能同样能达到API所
达到的效果:
示例1:
owsh=createobject("wscript.shell")&&调用WSH
owsh.run("command.com /c ping 192.170.170.170 -w 2 >ftp.txt",0,.t.)&&执行
gnfilehandle = fopen('ftp.txt')
if gnfilehandle >0
do while !feof(gnfilehandle)
strFile = alltrim(fget(gnfilehandle))
if strFile = 'Request timed out.'
=messagebox('线路不通')
endif
enddo
endif
fclose(gnfilehandle)
此示例的功能是检测一个远程主机的连接情况,如果用run/N命令来直接调用ping命令,要么
黑框去不掉,要么加参数N去掉黑框命令得不到执行得结果(强行加N参数一般不会得到结果,因为网络命令需要时间来执行)。

应用2:在VFP中修改注册表
修改注册表往往是VFP开发后期经常碰到的问题,在VFP环境中无法直接修改注册表,往往
是利用API函数来进行相关操作,但用API操作注册表非常繁琐:
WSH修改注册表:功能是保存一个键值到一个文件
owsh=createobject("wscript.shell")
reg=OWSH.regread('HKEY_LOCAL_MACHINE\Hardware\description\system\systembiosversion')
&&reg即为得到的键值


应用3:模拟键盘输入
大家经常看到一些论坛注水机等小工具,其实就是模拟键盘操作来实现的,而VFP本身提供的
几个键盘函数应用限制比较多,如不能向VFP以外的活动窗口输入字符等缺陷,我曾经看到一
个用VF写的论坛注水程序,其代码部分居然有3K之多,而WSH可以轻松帮我们实现此功能:

示例3: QQ消息轰炸
Declare Sleep IN kernel32 INTEGER dwMilliseconds
owsh=createobject("wscript.shell")
=sleep(3000)&&延时3秒中用来打开QQ窗口
FOR i=1 TO 10&&轰炸的次数
=sleep(1000)&&1秒钟发送一次轰炸信息
OWSH.SendKeys("^V")&&把轰炸内容复制到QQ窗口
OWSH.SendKeys("%s")&&发送轰炸消息
endf

使用方法:随便建立个按钮,把上面代码写进去,复制一段文字,再使QQ窗口获得焦点就可以
自动发送了。(别干坏事哦!^_^)

顺便再举个自动登陆QQ的代码:

Declare Sleep IN kernel32 INTEGER dwMilliseconds
owsh=createobject("wscript.shell")
QQPath="E:\程序\IPQQ\qq\CoralQQ.exe" &&你的QQ.exe路径
owsh.run(QQPath)
=Sleep(3000)&&给程序打开的时间
owsh.SendKeys("+{TAB}")
owsh.SendKeys("123456789")&&QQ帐号
=sleep(200)
owsh.SendKeys("{TAB}")
owsh.SendKeys("123456789")&&QQ密码
=sleep(500)
owsh.SendKeys("{ENTER}")

应用4:获取桌面目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("desktop")
应用5:获取系统字体目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("fonts")
应用6:获取程序菜单目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("programs")
应用7:获得程序启动目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("startup")
应用8:获得最近使用文件目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("recent")
应用9:获得收藏夹目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("FAVORITES")
应用10:获得发送到目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("sendto")
应用11:获得网络邻居目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("nethood")
应用12:获得微软程序数据目录
owsh=createobject("wscript.shell")
? owsh.SpecialFolders("appdata")


本期由于时间不够,先写到这里,大家如感兴趣,下期再给大家介绍VFP借助WSH实现网络黑客编程。

行者孙(原创贴,专贴请注明出处)



未完待续..........

时间仓促,如有错误之处请多包含,近期将陆续上传

欢迎光临VFP*讨论群 (10668478)
VFP高级应用程式算法群(12787940)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
Jimsun



註冊時間: 2006-03-21
文章: 11


第 2 樓

發表發表於: 星期二 三月 21, 2006 11:01 am    文章主題: 引言回覆

好文章
回頂端
檢視會員個人資料 發送私人訊息
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 3 樓

發表發表於: 星期二 三月 21, 2006 12:26 pm    文章主題: 引言回覆

受教了,值得推 … 謝謝。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
impotence



註冊時間: 2005-02-21
文章: 135
來自: Hong Kong

第 4 樓

發表發表於: 星期二 三月 21, 2006 5:58 pm    文章主題: 引言回覆

THX FOR YOUR TEACHING ~~~
_________________
一個常常忘記 Command 的人 !
回頂端
檢視會員個人資料 發送私人訊息
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 5 樓

發表發表於: 星期五 三月 24, 2006 11:55 am    文章主題: 引言回覆

謝謝啦!
請問將dbf資料套入word文件內,是否有類似excel的方法
因為excel為儲存格型態很容易與vfp駕馭
但word卻是排版型態,故查了一些貼文,都說很困難
而有此一問
Smile
回頂端
檢視會員個人資料 發送私人訊息
nipei



註冊時間: 2005-09-01
文章: 6


第 6 樓

發表發表於: 星期二 五月 23, 2006 11:05 am    文章主題: 引言回覆

太好了
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 7 樓

發表發表於: 星期二 五月 23, 2006 10:20 pm    文章主題: 引言回覆

3q
_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
goto-dream



註冊時間: 2004-05-11
文章: 909


第 8 樓

發表發表於: 星期一 二月 02, 2009 10:42 pm    文章主題: 引言回覆

好文章
run/n 可以改用了....害我想好久

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

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

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


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