| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		行者孙
 
  
  註冊時間: 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')
 
       &®即为得到的键值
 
    
 
 
    应用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卻是排版型態,故查了一些貼文,都說很困難
 
而有此一問
 
   | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		nipei
 
 
  註冊時間: 2005-09-01 文章: 6
 
  第 6 樓
  | 
		
			
				 發表於: 星期二 五月 23, 2006 11:05 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 太好了 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		nelsonchuang
 
 
  註冊時間: 2003-09-04 文章: 564 來自: 臺灣
  第 7 樓
  | 
		
			
				 發表於: 星期二 五月 23, 2006 10:20 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				3q _________________ 大家好,請多指教 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 8 樓
  | 
		 | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |