当前位置: 代码迷 >> VFP >> vfp 修改了菜单运行主界面 发现却没有更行,该怎么解决
  详细解决方案

vfp 修改了菜单运行主界面 发现却没有更行,该怎么解决

热度:6331   发布时间:2013-02-26 00:00:00.0
vfp 修改了菜单运行主界面 发现却没有更行
修改主菜单后,添加了一个功能,重新连编后却发现主界面并没有更新,还是原来的界面。怎么解决呢?
另有一个问题:如何在vfp中调用系统自带的excel,word,记事本功能。只要进入它们的语句,比如调用计算器 run / calc。

------解决方案--------------------------------------------------------
修改主菜单后,添加了一个功能,重新连编后却发现主界面并没有更新,还是原来的界面。怎么解决呢?
确认菜单已经修改,且已经放入项目中

另有一个问题:如何在vfp中调用系统自带的excel,word,记事本功能。只要进入它们的语句,比如调用计算器
excel,word要安装,不是系统自带的
_ole_excel = CreateObject("Excel.Application") 
_ole_excel.VISIBLE=.T.
_ole_excel.WorkBooks.add

oWord=Createobject("Word.Application")
oWord.Documents.Open('D:\hyxz.doc')
oWord.Visible=.t.
------解决方案--------------------------------------------------------
第一个问题:修改菜单完成后,必需重新生成一次菜单!
第二个问题:同意楼上
------解决方案--------------------------------------------------------
修改菜单完成后,必需重新生成一次菜单,然后再重新编译!

------解决方案--------------------------------------------------------
即:修改完菜单后,点击VFP菜单中的“菜单”(Menu)->“生成”(Generate)->出现窗口后,点击“生成”(Generate)。

注:此菜单要添加到你的工程中
------解决方案--------------------------------------------------------
在VFP中如何调用其它程序 
-------------------------------------------------------------

Declare Long WinExec In kernel32 String,Long
=WinExec("notepad.exe",1)
Clear Dlls

WinExec(one.exe,SW_SHOW); 
里面的SW_SHOW意思是什么 
WinExec()函数第二个参数是什么意思 
如果我想以无参数运行one.exe应该怎么办?? 
SW_SHOW表示以当前大小激活运行后的程序窗口并显示它。 
第二个参数是控制程序主窗口的显示方式 
第二个参数可能的取值为 : 
************************* 窗口指定可视性定义 **********************************API函数ShellExecute中最后一个参数及wscript.shell方法中的第2个参数也是这样定义的。
0 SW_HIDE 隐藏窗口,活动状态为原调用窗口 
6 SW_MINIMIZE 最小化窗口,活动状态为原调用窗口 
9 SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 
5 SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 
3 SW_SHOWMAXIMIZED 最大化窗口,并将其激活 
2 SW_SHOWMINIMIZED 最小化窗口,并将其激活 
7 SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 
8 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 
4 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 
1 SW_SHOWNORMAL 与SW_RESTORE相同 
****************************************************************************
一般情况下,第二个参数取SW_SHOWNORMAL即可,这样就是无参数运行App.exe 
WinExec("App.exe -参数" , SW_SHOWNORMAL);第二个参数只是WinExec函数的参数,不是AppName.exe的参数。



ox=Createobject("wscript.shell")
ox.Run("notepad.exe",1) &&第2个参数参考上面《窗口指定可视性定义》
Release ox




在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式:
run c:\..\*.exe

当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。
一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下:
RUN/n C:\Windows\Winmine.exe
下面运行一个更复杂一点的程序。用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下:
run /n3 C:\Program Files\Microsoft Office\Office\Winword.exe C:\mlx.doc
参数:参考上面《窗口指定可视性定义》
n 在运行时隐藏VFP的黑色窗口。
3 表示以最大化的方式运行程序。1正常方式、2最小化方式、3最大化方式

在这种情况下,虽然可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。比如,在上例中,我们无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。再如,一个.gif文件,有的用户喜欢用ACD See来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,……
为了解这种情况我们可以调用Windows的文件关连来打开文件。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32 API函数。调用方式如下:

DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING lpszOP,STRING lpszFile,STRING lpszParams,STRING lpszDir,INTEGER fsshowcmd 
DECLARE INTEGER GetDesktopWindow IN win32api 
HWND = GetDesktopWindow() 
lpszOP = "open" 
* 指定要打开的文件名
lpszFile ="c:\mlx.doc"
lpszParams = "" 
lpszDir = "c:\temp" 
fsshowcmd = 1
* 执行ShellExecute命令 
LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lpszParams, lpszDir,fsshowcmd)

可以用任意的文件名来替换上文中的 c:\mlx.doc 。如果指定的文件名Windows无法找到相应的关连程序,这时程序将不会做出反应。有关的参数可以自行偿试进行修改,以达到最佳效果。
  相关解决方案