vfp调用dos怎么解决黑屏停顿问题

文件(夹)问题 | 2015-03-11 14:26:36 | 阅读 2357 次 | 评论(0)

把以下 notepad.exe 换成你的 DOS命令即可

来源:http://bbs.csdn.net/topics/340256503
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,0)	 &&第2个参数参考上面《窗口指定可视性定义》,第3个参数0表示调用后马上将控件权返回原调用程序,1表示直接被调用程序结束后才将控件权返回原调用程序(调用外部文件时让系统一直等待,直到运行结束才返回控制权就可以了)。
Release ox

或

Declare Integer ShellExecute In "Shell32.dll" Integer HWnd,String lpVerb,String lpFile,String lpParameters,String lpDirectory,Long nShowCmd

=Shellexecute(0,"Open","DOS命令","参数[可为空]","",1) && 最后1个参数:0隐藏窗口、1正常方式、2最小化方式、3最大化方式 


-------------------------------- 以下内容补充于 2017-02-13 21:53:04 --------------------------------

oWsh.Run('cmd /c COPY &cpath1 &cfile_s', 0, .T.)

-------------------------------- 以下内容补充于 2017-02-13 21:59:49 --------------------------------

CLEAR
cpath="d:\sl\"
n=ADIR(afile,cpath+"*.*","D")
cfile=""
cspace=" "
FOR i=1 TO n
    IF "D"$afile[i,5] AND AT(".",afile[i,1])=0
        cfile=cfile+afile[i,1]+cspace
    ENDIF
ENDFOR
=ALINES(afiles,cfile,cspace)
cfile_s=cpath+"XXX文件夹"
IF DIRECTORY(cfile_s)=.F.
    MD &cfile_s
ENDIF
oWsh = CreateObject("wscript.shell") &&解决VFP下调用DOS命令黑屏的缺陷
FOR i=1 TO ALEN(afiles,1)
    IF ADIR(afile,cpath+afiles[i]+"\*.bmp")>0
        cpath1=cpath+afiles[i]+"\*.bmp"
*        RUN /7 COPY &cpath1 &cfile_s
        oWsh.Run('cmd /c COPY &cpath1 &cfile_s', 0, .T.)
    ENDIF 
ENDFOR 
RELEASE oWsh
文章评论,共0条
游客请输入验证码
浏览268183次
最新评论
  • cstdio:ooooooo
  • sdta:从VFP入手也不错
  • yuanhouwen:尊敬的sdta大神:作为一个编程外行,看到你关于操控EXCEL的编程程序我觉得特别神奇,想向你...