在Visual FoxPro中操作MSN

原创 2006年05月29日 15:29:00
在Visual FoxPro中操作MSN
作者:张洪举 Microsoft Visual FoxPro MVP
 
注:此文章摘自作者的〈Visual FoxPro 6.0-9.0解决方案与范例大全〉图书
目录
概述
Messenger注册
Messenger注销
获取Messenger中的联系人信息
打开与指定联系人的对话窗口
打开MSN Messenger窗口
打开邮件窗口
发送文件
获得当前MSN Messenger设置
使用Windows Scripting Host向活动窗口发送指令
概述
该示例演示了使用Messenger API和Windows Scripting Host对MSNMessenger进行操作的方法。
Messenger注册
可以使用“Messenger.UIAutomation.1”字符串建立对Messenger的对象引用。进行Messenger注册分为自动注册和按指定用户注册两种形式,参考下列代码:
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oMSN.AutoSignin() &&自动注册
oMSN.Signin(0,"tom@hotmail.com","mypassword") &&按指定用户tom@hotmail.com进行注册,密码为“mypassword”
Messenger注销
可以使用Signout方法注销当前用户,参考下列代码:
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oMSN.Signout() &&注销当前用户
获取Messenger中的联系人信息
在Messenger的MyContacts.Count中保存着当前用户的联系人数目,可以通过Item属性来检索每个联系人的信息,参考下列代码:
ACTIVATE SCREEN
CLEAR
?"显示名称 注册名称 当前状态 家庭电话 工作电话 移动的话"
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
nCount = oMSN.MyContacts.Count
FOR i = 0 TO nCount -1 &&查找所有联系人的信息 lcUserName = 
MSN.MyContacts.Item(i).FriendlyName &&在MSN中的显示名称
lcEmailName = oMSN.MyContacts.Item(i).SignInName &&进行MSN注册时的用户名称,应当是一个邮箱地址
lnStatus = oMSN.MyContacts.Item(i).Status &&用户状态:1-脱机、2-正常连机、10-忙碌、18-离开
lcHomePh = oMSN.MyContacts.Item(i).PhoneNumber(0) &&家庭电话
lcWorkPh = oMSN.MyContacts.Item(i).PhoneNumber(1) &&工作电话
lcMobilePh = oMSN.MyContacts.Item(i).PhoneNumber(2) &&移动电话
?lcUserName+" | "+lcEmailName+" | "+STR(lnStatus)+" | "+lcHomePh+" | "+lcWorkPh+" 
| "+lcMobilePh 
ENDFOR
打开与指定联系人的对话窗口
可以使用InstantMessage( )方法打开与指定联系人的对话窗口,打开对话窗口后,还可以使用AddContact()邀请其他联系人加入对话,参考下列代码:
oWindow = oMSN.InstantMessage("tom@hotmail.com") &&打开与tom@hotmail.com的对话窗口 
oWindow.AddContact("ken@msn.com") &&邀请其他联系人加入对话
?oWindow. Contacts.Count &&返回对话联系人的数目
oWindow.Close() &&关闭对话窗口
打开MSN Messenger窗口
可以通过Messenger的Window属性来获得对MSN Messenger窗口的引用,并通过Show( )方法来显示窗口,参考下列代码:
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oWindow = oMSN.Window
oWindow.Show() &&显示MSN Messenger窗口
?oWindow.Height &&返回窗口的高度 oWindow.Close() &&关闭窗口
打开邮件窗口
可以使用Messenger的SendMail( )和OpenInbox( )方法在浏览器中分别打开发送邮件和收件箱窗口,参考下列代码:
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oMSN.SendMail("tom@hotmail.com") &&指定向tom@hotmail.com发送邮件 oMSN.OpenInbox() 
&&打开收件箱
发送文件
可以使用Messenger的SendFile( )方法向指定联系人发送一个文件,参考下列代码:
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oWindow = oMSN.SendFile('tgrong@hotmail.com','c:/1.txt')
oWindow.Close()
获得当前MSN Messenger设置
下面的代码可以获得当前用户在MSN Messenger中的服务名称、注册用户名称和显示名称信息。
oMSN = CREATEOBJECT("Messenger.UIAutomation.1")
oService = oMSN.Services
oPrimserv = oService.PrimaryService
?oPrimserv.ServiceName &&获得服务名称
?oPrimserv.MySigninName &&当前注册用户名称,应当是一个邮箱地址
?oPrimserv.MyFriendlyName &&当前在MSN中显示的名称
使用Windows Scripting Host向活动窗口发送指令
Windows Scripting Host(WSH)是一个用于Windows平台的脚本语言工具,使用该工具可以进行诸如建立快捷方式、打开或重命名文件夹等操作。 使用WSH的SendKeys(String)方法可以将一个或多个键击指令发送到活动窗口中,就像在键盘上击键一样。其中的String参数是一个代表按键的字符串。 要发送单个键盘字符,可以直接把字符本身作为String参数发送(要发送空格,字符为" ")。要同时发送多个键击,可以按键击顺序把字符排列在一起。例如,要发送键击a、b和c,则需要发送字符串“abc”。 SendKeys方法将某些字符用作字符的修饰符,包括圆括号、中括号、大括号,以及加号、插入记号(^)、百分号和“非”符号(~)。这些字符需要使用大括号“{}”括起才可以发送,例如,要发送加号,需要发送字符串“{+}”。 此外,要发送左中括号字符,需要发送字符串“{[]”;要发送右中括号字符,需要发送字符串“{]}”;要发送左大括号字符,需要发送字符串“{{}”;要发送右大括号字符,需要发送字符串“{}}”。 对于某些仅是执行一个操作而不产生字符的键击(如ENTER和TAB),需要使下表中列出的参数进行发送。
要发送由常规键击和SHIFT、CTRL或ALT组合而成的键盘字符,则需要在常规键击之前添加一个或多个特殊字符来建立组合键。其中SHIFT使用“+”表示,CTRL使用“^”表示,ALT使用“%”表示。如果在按住e和c的同时按下SHIFT键,则发送的字符串应当为“+(ec)”。如果在按住e时只按下c(而不按下SHIFT),则发送的字符串应当为“+ec”。 例如,图1是一个发送邮件的表单。

图1
下面是图1所示表单的自定义方法SendMail的代码,通过“发送”按钮调用。用于打开MSN的新邮件窗口,并通过WSH向窗口中的“抄送”、“密件抄送”等文本框发送所需要的信息。
LPARAMETERS cContact, cCCAddress, cBCCAddress, cSubject, cMessage
*!* cContact-收件人
*!* cCCAddress-抄送
*!* cBCCAddress-密件抄送
*!* cSubject-邮件主题
*!* cMessage-邮件正文

LOCAL loExc as Exception
LOCAL llRetVal as Boolean 
llRetVal = .F.
TRY
Thisform.oMessenger.SendMail(cContact) &&使用MSN Messenger发送邮件,将在浏览器中打开新邮件窗口
*-- 进行时间延迟,等待浏览器窗口出现 
FOR i = 1 TO 20
Sleep (1000) &&Sleep是一个API函数,用于进行时间延迟,请参考MSDN
*--查找标题为“MSN Hotmail - 新邮件 - Microsoft Internet Explorer”的窗口
wHandle = FindWindow(0, thisform.cComposeEmailWindowTitle)
IF wHandle > 0
EXIT
ENDIF
ENDFOR

IF wHandle > 0 &&找到了窗口 *-- 将浏览器窗口放置在前面 SetForegroundWindow(whandle) 
&&这是一个API函数,请参考MSDN
Sleep (1000) &&延迟1s

Thisform.SendKeys("{tab}") &&第一次发送TAB键,将焦点移动到“抄送”文本框
IF NOT EMPTY(cCCAddress) THEN
Sleep (1000)
Thisform.SendKeys(cCCAddress, .T.) &&向“抄送”文本框中发送信息 ENDIF

Thisform.SendKeys("{tab}") &&第二次发送TAB,将焦点移动到“密件抄送”文本框
IF NOT EMPTY(cBCCAddress) THEN
Thisform.SendKeys(cBCCAddress, .T.)
ENDIF
Thisform.SendKeys("{tab}") &&第三次发送TAB,将焦点移动到“主题”文本框
IF NOT EMPTY(cSubject) THEN
Thisform.SendKeys(cSubject, .T.)
ENDIF
Thisform.SendKeys("{tab}") &&第四次发送TAB,将焦点移动到正文编辑框
sleep (1000)
Thisform.SendKeys("^{home}")
Thisform.SendKeys(cMessage, .T.)
Thisform.SendKeys("{tab}")
sleep (1000)
Thisform.SendKeys("{enter}")
sleep (1000)
*-- 最小化窗口
CloseWindow(whandle)

llRetVal = .T.

ENDIF

CATCH TO loExc
Thisform.GetOleError(loExc) 
ENDTRY 
RETURN llRetVal

Visual Foxpro 6.0教程

下载地址:网盘下载          本书从培养应用型、技能型人才的角度出发,系统地介绍了Visual FoxPro 6.0数据库系统的基础理论及应用系统及应用系统开发知识。全书共11章,其中第1章-...
  • cf406061841
  • cf406061841
  • 2017年08月31日 01:13
  • 214

Visual foxpro 命令大全和函数大全

Visual foxpro 命令大全和函数大全 ? 在下一行显示表达式串 ?? 在当前行显示表达式串 @... 将数据按用户设定的格式显示在屏幕上或在打印机上打印 ACCEPT 把一个字符...
  • mrwu9902
  • mrwu9902
  • 2010年03月17日 15:25
  • 2779

Visual FoxPro数据库加密算法的研究与实现

摘  要:对于最初给定的随机种子,随机函数都会生成一个相同的数列。数据库数据随机加密,是一种利用随机函数的随机数序列与数据库数据进行异或等运算、实现数据库数据加密的方法。本文对数据库数据随机加密算法进...
  • feiyafei2008
  • feiyafei2008
  • 2010年05月25日 15:22
  • 1011

5.如何处理“不能退出FoxPro”的情况

5如何处理“不能退出FoxPro”的情况难度系数 êêê人气指数 90%问题详述为什么在程序连编后,单击Visual FoxPro的主窗口关闭按钮,提示“不能退出FoxPro”呢?专家解答由于在Vis...
  • zhanghongju
  • zhanghongju
  • 2009年07月14日 19:40
  • 4224

Visual FoxPRO 更新两表的语句

因工作需要,需使用VF对两表更新其中某(几)个字段中的数据,很久没用了,经测试成功,语句如下:select 1use 2008gzzk.067inde on l2 to aselect 2use bo...
  • _NET2004
  • _NET2004
  • 2008年12月25日 14:06
  • 2187

数据导入:VFP(visual foxpro)表文件导入SQL

关键字:.dbf,SQL2000,visual foxpro 6.0,数据导出,数据导入            近日,遇到一visual foxpro 6.0数据库中.dbf格式数据导入到SQL200...
  • hylang
  • hylang
  • 2008年02月25日 11:42
  • 1904

Visual FoxPro权威指南写作原稿及光盘下载

自从微软宣布停止开发Visual FoxPro之后,此类图书的出版也成了难题,但是至今仍有许多VFP的坚守者,到处搜罗这本7年前的图书。故放上本书的写作原稿,以飨读者。下载地址:http://down...
  • zhanghongju
  • zhanghongju
  • 2014年08月22日 03:58
  • 5122

C#数据库连接字符串——Visual FoxPro

ODBC DSN ODBC without DSN -- Database container (dbc) ODBC without DSN -- Free table directory OleDb...
  • mymhj
  • mymhj
  • 2010年05月07日 14:33
  • 1102

Visual FoxPro9.0构建管理系统图解

开发者网络 > 开发工具 > 开发专栏 > VFP > 正文   Visual FoxPro是一个有着广泛用户基础的著名数据库管理系统软件。过去,人们传说自6.0版本以后不会再发行新的版本了,可微软公...
  • ark1111
  • ark1111
  • 2005年03月02日 11:19
  • 1142

在Visual Foxpro中对数据库的内容进行删除!

       在Visual Foxpro中对数据库的内容进行删除!这是对一个学生情况表进行删除,包括了按学号删除、寝室号、系别进行删除!这是替一个同学做的一份作作业!有源码!想要的请留言,留下你的联...
  • hqok
  • hqok
  • 2006年05月26日 11:54
  • 4513
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Visual FoxPro中操作MSN
举报原因:
原因补充:

(最多只允许输入30个字)