vb遍好vb.net 等待程序运行怎么运行

已解决问题
vb如何运行命令提示符的命令?
Shell &cmd copy 路径 路径& , vbHide我运行了上面的命令之后为什么没有在后一个路径那里多出一个我要复制的文件呢?
浏览次数:1433
用手机阿里扫一扫
最满意答案
你直接调用CMD是不对的,你需要指定CMD的路径比如:c:\windows\system32\cmd.exe&然后要给出指定的参数比如:shell&&c:\windows\system32\cmd.exe&/c&copy&文件&文件&,vbHide如果单纯要复制文件,请用Filecopy命令FileCopy&source,&destination&----------------------------------执行CMD命令的方法Shell&&c:\windows\system32\cmd.exe&/c&命令行命令&,vbHidecmd.exe&/c&是用于直接执行一个命令行命令并在执行完之后关闭窗口的调用方式如果保留窗口则使用/k比如cmd.exe&/c&dir&*.*/b/s/a
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is okHi~ o(* ̄▽ ̄*)ブ
怎样让VB6程序只能运行一次
If App.PrevInstance Then
Call MsgBox("对不起本程序已在运行中, 不得重复加载!!", vbCritical)
优点:简单方便、
缺点:针对性不强、随意复制一份即可再次运行、
方法二:创建互斥体(个人比较喜欢)
Private Declare Function CreateMutex Lib "kernel32" Alias
"CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal
bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function ReleaseMutex Lib "kernel32" (ByVal
hMutex As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal
hObject As Long) As Long
Dim ret As Long
Private Sub Form_Load()
ret = CreateMutex(ByVal 0, 1, "FORM1") '这里改成程序的标题
If Err.LastDllError = 183 Then
ReleaseMutex ret
CloseHandle ret
MsgBox "程序只能运行一次!",
vbCritical, ""
优点:只要窗体的标题不变,无论如何无法双开
缺点:和优点一样、只要其他程序历遍得到本窗体的句柄、然后sendmessage让窗体的标题(caption)改变就可以多开
方法三:全局原子、(02.09补上代码)
Private Declare Function GlobalAddAtom% Lib "kernel32" Alias
"GlobalAddAtomA" (ByVal AtomName As String)
Private Declare Function GlobalFindAtom% Lib "kernel32" Alias
"GlobalFindAtomA" (ByVal AtomName As String)
Private Declare Function GlobalDeleteAtom% Lib "kernel32"
(ByVal AtomName As Integer)
Private Atom As Long
Private Sub IsAtom()
If GlobalFindAtom(App.EXEName) = 0 Then Atom =
GlobalAddAtom(App.EXEName) Else unlaod Me
Private Sub Form_Load()
Private Sub Form_Unload(Cancel As Integer)
GlobalDeleteAtom Atom
优点显而易见、非常规手段绝对不可能达到多开的目的、缺点么、、一旦程序被强制或非常规手段结束、就无法再次运行、原因很简单、当程序运行时会创建全局原子、一般情况下在程序退出时(unload事件)会删除全局原子、而强制结束程序则造成无法删除全局原子、所以就造成了无法打开的情况、、如果对这个情况你有好的解决方法、希望得到你的帮助、、
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!VB做成软件后如何打包?
做了一个VB程序,涉及数据库,但是不会打包,不知道要怎样打包?用什么软件?打包后的程序要能在别的目标计算机上运行,我这个新手,麻烦告诉详细过程,谢谢了!
09-11-16 &
你到开始程序中的VB工具里有个打包的精灵软件,这是VB自带的,我也经常用它.你找到那个打包精灵,那是有提示的,一步一步来,有详细提示,很好上手
请登录后再发表评论!
 一般来说,用VB开发完成的软件在开发环境所在计算机上运行是不会有什么问题的,但拷贝到其它计算机上就不能保证软件仍能正常运行,原因很简单:软件运行需要特写的动态链接库(包括控件)文件支持,并不是所有计算机上都会具备软件运行所需要的这些环境库文件。正因为如此,软件开发完成一般都需要制作安装程序,以便在目标计算机上安装这些环境库文件。  VB集成开发软件提供了一个叫“Package & Deployment 向导”的安装程序制作工具,可以直接把编写完成的软件打包为安装程序,但这个安装程序本身就有BUG,有时无法完成安装程序的制作,有时制作好的安装程序无法在目标计算机上完成软件安装,另外,用该向导制作的安装程序包体积普遍偏大(向导常将软件并不需要的链接库文件打包其内),有时体积会超过软件运行所需要文件体积的数倍以至更多,所以很少有人直接使用这个工具来制作安装程序。  其实为VB开发的软件制作安装程序关键是取得软件真正需要的动态链接库文件列表。只要有了这个列表,即可以手工制作安装程序,也可以用第三方安装程序制作软件来制作软件的安装程序。一、用VB开发的软件对不同操作系统的不同要求  目前Windows操作系统主要有95/98/Me/NT /2000/XP/2003,软件应该在全部七种操作系统下都能正常运行。考虑到目前Windows95已彻底退出操作系统舞台,所以软件可以不考虑 Windows95环境下的运行支持(增加对Windows95的支持安装包体积要增加近1M且安装完成后必须重新启动计算机)。下面就软件在其它六种操作系统下的运行情况作一简要分析。  1、在Windows98环境下开发完成的软件不一定能在所有 Windows98计算机上正常运行,在WindowsMe/NT/2000/XP/2003下也不一定能正常运行。所以在Windows98环境下开发完成的软件至少应该在最小Windows98系统(安装最小规模的操作系统且不安装任何其它软件,以下同)上测试运行情况。  2、在最小Windows98计算机上能正常运行的软件就能在WindowsMe上正常运行,但在WindowsNT/2000/XP/2003下不一定能正常运行。所以软件还需要在WindowsNT/2000/XP/2003等系统下测试运行情况。  3、在常规Windows2000环境下能正常运行的软件在WindowsXP下不一定能正常运行,反之亦然。所以软件应该分别在最小Windows2000和最小WindowsXP环境下测试运行情况。  3、在最小Windows2000和XP环境下都能正常运行的软件在Windows2003下也能正常运行。所以,软件可以不必单独在Windows2003环境下测试运行情况。  4、在最小Windows2000的XP环境下都能正常运行的软件在安装了SP3或更高版本的补丁包程序的WindowsNT40计算机上也能正常运行。所以可以不必单独在WindowsNT环境下测试软件的运行情况。  由此可以得出,软件开发的计算机上应该安装Windows98/2000/XP三个系统,软件最好能在Windows98环境下开发,然后在其它环境下测试。二、操作系统的安装要求  先在C:盘安装好最小Windows98系统,然后用GHOST作一克隆文件备份这个最小系统。这个系统用于软件开发完成后测试软件在Windows98环境下所需的链接库文件用。  在最小Windows98系统下安装VB开发工具、SP5中文版补丁包程序及必要的各类辅助软件,完成后同样用GHOST作一克隆文件备份。这个系统用于软件的开发。  把完整的Windows98系统目录(System)目录拷贝一份到其它分区下备用。该目录用于软件在最小Windows98系统下测试软件运行缺少链接库文件时从中选取复制用。  在其它两个分区内分别安装最小Windows2000和XP系统。这两个系统用于软件的运行测试用。  在WindowsXP系统下设置只保留对Windows2000和XP所在分区开通自动还原功能。启用这两个系统分区的自动还原功能可以在需要进行软件测试时随时恢复这两个系统为最小系统。  软件完成开发后分别在最小Windows98/2000/XP下检测运行,全部通过后的软件才真正适用于Windows全系列的操作系统。三、提取软件在Windwos98下运行所必须的动态链接库文件  现在假设您已完成了一个在Windows98环境下制作完成的软件。  请用GHOST将C:盘恢复为Windows98最小系统。  在最小Windows98系统下运行软件,记录软件运行提示所缺少的动态链接库文件名。从备份的Windows98系统目录下找到提示缺少的动态链接库文件拷贝到最小Windows98的系统目录System内,再次试运行软件,直到运行完全正常为止。  如果把所需的动态链接库文件拷贝到系统目录下运行软件时提示该文件未注册,请按如下方法完成该文件的注册:  从“开始”菜单启动“运行”对话框,在“打开”框内输入“Regsvr32 c:\windows\system\链接库文件名”(不包括双引号)后确定。  至此,你已经找到在软件在Windows98环境下所需要的动态链接库文件列表及哪些链接库需要注册了。  用GHOST将C:盘恢复为Windows98的常规系统。三、制作Windows98下的动态链接库专用安装程序  inf文件为Windows系统使用的安装程序,不存在兼容性问题,适用于全部Windows系统。下面的专用安装程序就是以inf为脚本编写的。  1、编写inf文件。  以下为安装MSVBVM60.DLL、COMCAT.DLL、VB6CHS.DLL、GAPI32.DLL并注册前两个文件的inf文件完整示例:[DefaultInstall]CopyFiles=install.filesRegisterOCXs=RegisterFiles[DestinationDirs]install.files=11[install.files]MSVBVM60.DLL,,MSVBVM60.DLL,32;COMCAT.DLL,,COMCAT.DLL,32;VB6CHS.DLL,,VB6CHS.DLL,32;GAPI32.DLL,,GAPI32.DLL,32;[RegisterFiles]%11%\MSVBVM60.DLL%11%\COMCAT.DLL[MSVBVM60.DLL]file-win32-x86=thiscabRegisterServer=YesFileVersion=6,0,89,64[COMCAT.DLL]file-win32-x86=thiscabRegisterServer=YesFileVersion=4,71,1460,1[VB6CHS.DLL]file-win32-x86=thiscabRegisterServer=NoFileVersion=6,0,8988,1[GAPI32.DLL]file-win32-x86=thiscabRegisterServer=NoFileVersion=4,0,994,25[version]signature=&$CHICAGO$&AdvancedINF=2.0[SourceDisksNames]1=&default&,,1  文件中的前两节[DefaultInstall]和[DestinationDirs]以及后两节[version]和[SourceDisksNames]的内容都是固定不变的。  第三节[install.files]的内容为需要安装的动态链接库文件列表。每个文件的文件名各占一行,每行格式相同:第一部分和第三部分为链接库文件名,大小写均可,第二部分为空,第四部分为32(32位系统文件),各部分用半角逗号隔开。  第四小节[RegisterFiles]内容为需要注册的链接库文件,每个文件占用一行,每行格式相同:%11%指文件安装到系统目录中。  接下来的各节为安装链接库文件,每个文件占用四行:第一行为一对用[]括起来的链接库文件名,第二行内容所有文件相同,第三行指明该文件是否需要注册:Yes注册;No不注册,第四行为该文件的版本号,可以通过右击该文件从属性窗口中获得。  完成后可以取任何合法的文件名(扩展名必须是.inf)保存在一个专用目录下备用。  2、安装《连接管理器管理工具包》  下面使用《连接管理器管理工具包》中的iexpress.exe配合inf文件制作动态链接库专用安装程序来安装软件的动态链接库文件。  A、找一张OFFICE2000安装光盘(或5.0以上版本的IE安装光盘),定位到光盘根目录下Ie5\CN文件夹中,双击Ieak5.exe安装《连接管理器管理工具包》。  B、简易安装程序只使用其中的iexpress.exe,可以从《连接管理器管理工具包》默认安装目录C:\Program Files\IEAK\tools\下找到这个文件。  3、制作简易安装程序  A、启动iexpress.exe,选择“创建新的自解压文件指令文件”(默认)后按下一步;  B、选择“展开文件并运行安装命令”(默认)按下一步;  C、在压缩包标题框内输入“安装...”后按下一步;  D、选择“没有提示”(默认)按下一步;  E、选择“不显示许可协议”(默认)按下一步  F、按下添中按钮添加上面创建的inf文件,再添加全部需要安装的动态链接库文件(在windows\system目录内都可以找到),按下一步;  G、在“安装程序”框内选择上述inf文件按下一步;  H、选择“默认”按下一步;  I、选择“没有提示”(默认)按下一步;  J、输入安装程序文件保存到的路径和文件名按下一步;  K、选择“仅在需要时重新启动”(默认)按下一步;  L、按两次下一步,按下“完成”完成安装程序的制作。  制作好的专用安装程序保存在“J”步中选择的路径下,双击此安装程序文件即可自动完成软件动态链接库的安装和注册。四、在Windows2000下检测软件的运行  启动最小Windows2000,运行上述生成的动态链接库专用安装程序。  启动软件试运行,检测软件在Windows2000下的运行,如果运行有问题,根据提示对上述动态链接库安装程序作相应的修改。  注:在Windows2000下检测软件还可以把在Windows98下运行时未被发现的软件本身的BUG检测出来。五、在WindowsXP下检测软件的运行  启动最小WindowsXP,运行上述生成的动态链接库专用安装程序。  启动软件试运行,检测软件在WindowsXP下的运行,如果运行有问题,根据提示对上述动态链接库安装程序作相应的处理。  至此,软件运行所需的动态链接库文件就全部找到了。如果您想发布您的软件,只需要把上述制作好的动态链接库专用安装程序与软件放在一起,在软件说明中告诉使用者先运行此安装程序即可。当然,找到了软件的动态链接库列表,还可以利用第三方安装程序制作软件来制作软件的安装程序,这里不作此介绍。
请登录后再发表评论!温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
●适用于VB
●用法:传回值 = App.属性
--------------------------------------------------------------------------------
●得知程序的说明
字符串 = App.Comments
●得知程序的公司名称
字符串 = App.CompanyName
●得知程序的原始名称
字符串 = App.EXEName
●得知程序的文件描述
字符串 = App.FileDescription
●得知程序的说明文件名称
字符串 = App.HelpFile
●得知程序的版权
字符串 = App.LegalCopyright
●得知程序的商标
字符串 = App.LegalTrademarks
●得知程序的版本
字符串 = App.Major
字符串 = App.Minor
●得知程序的路径
字符串 = App.Path
●得知程序是否重覆执行。
If App.PrevInstance Then
MsgBox &程序不得重覆执行&, vbokonly '值为True时,程序重覆执行
MsgBox &程序第一次执行&, vbokonly
●得知程序的产品名称
字符串 = App.ProductName
====================================================================
灵活使用vb的app对象:
在visual basic 的编程实践中,app 是非常重要的全局对象。合理使用该对象开发程序可以大大节约开发时间,并且能实现用其他方法很难达到的目标。下面便是作者在用visual basic 开发应用程序时得到的一些技巧和体会。
一、避免重复运行同一个程序实例
app 对象的previnstance 属性返回一个逻辑值,该值指示是否已经有前一个应用程序实例在运行。有时我们开发的程序每次只想运行一个实例,当用户重复运行该程序时,能提醒用户该程序已经运行,并自动退出。要实现上述功能,只需在应用程序中添加一个模块,在该模块中加入启动过程sub main,将如下代码加到sub main 中即可。
if app.previnstance then
msg = & 系统正在运行,请在下面任务栏寻找系统的最小化图标。&
style = vbokonly + vbexclamation + vbdefaultbutton2
title = &警告!&
response = msgbox(msg, style, title)
exit sub &结束本次运行
二、在系统任务列表中隐藏应用程序
app 对象的t a s k v i s i b l e 属性返回或设置一个值(boolean 布尔表达式的值),用来确定应用程序是否出现在系统任务列表中。缺省值为true,表示应用程序出现在任务列表窗口中;若设置为false,则应用程序不出现在任务列表窗口中。利用该属性可以使应用程序的标题不出现在alt+ctrl+del 弹出的任务列表窗口中,从而避免应用程序被用户强行终止。
注意:应用程序启动并显示其界面后,taskvisible 属性就会被自动设置为默认值true。另外,可以通过设置title属性来改变应用程序在任务列表窗口显示的名称,否则将显示工程名。举个例子:在form上建立一个commandbutton控件command1,加入如下代码:
private sub form_load()
app.title = &这是一个演示如何隐藏应用程序的示例&
private sub command1_click()
if app.taskvisible then
app.taskvisible = false
app.taskvisible = true
运行该程序,并用alt+ctrl+del 弹出任务列表窗口观察,然后不断点击command1,看有何变化。
三、实现与具体路径无关的应用程序
开发程序时往往希望程序无论copy 到哪个目录下都能正常运行,也就是程序与具体的应用程序所在的路径无关。你可以这样做:在应用程序中添加一个模块,在该模块中加入启动过程sub main,将如下代码加到模块中。
public mypass as string &声明为全局变量
sub main()
mypath = app.path
.. &其余程序部分
在程序中凡是涉及到路径的地方,用mypath 代替绝对路径。例如:假设需要通过data 控件data1 来操作应用程序目录下的localdatabase 子目录下的user.mdb,user.mdb 包含有test 表。将如下代码加入该控件所在的form的load事件中,就可实现对user.mdb 的操作与绝对路径无关。
data1.databasename = mypath + &\localdatabase\user.mdb&
data1.recordsource = &select * from test&
data1.refresh
四、应用程序的版本管理
与应用程序版本有关的属性有:revision 属性、major属性、minor 属性。revision 属性返回工程的修订版本号,该属性在运行时是只读的;major 属性返回工程的主版本号,该属性在运行时是只读的;minor 属性返回工程的小版本号,该属性在运行时是只读的。要设置工程的有关版本,可以在设计时用位于&工程属性&对话框中的&生成&选项卡上相对应的框设置这些属性。
&修订版本号&反应的是对工程的修改信息,如果将&工程属性&对话框中的&生成&选项设置为&自动加&,则每当工程编译一次(编译为.exe 文件),revision 属性的值自动累加1。而major 属性、minor 属性才是我们通常提到的应用软件的版本。例如要设置软件的版本号为3.4,只需在工程设计时,将major 属性设置为3,minor 属性设置为4。软件运行时如果要显示版本号,可参考如下语句:msgbox &系统版本为:&+str(app.major) + &.& + trim(str(app.minor))运行该语句,将弹出一消息对话框显示&系统版本为:3.4&。
五、应用程序的日志操作
a p p 对象支持应用程序日志的操作,与此相关的有logmode 属性、l o g p a t h 属性、l o g e v e n t 方法和startlogging 方法。下面说说这些属性和方法的功能及日志操作的步骤。
1.首先用startlogging方法对某个操作的日志目标及日志模式进行设置。
语法格式:app.startlogging logtarget, logmodelogtarget 是一个字符串,用于指定一个用于记录日志的文件名。logmode 是一个整数值,它决定如何记入日志,一般将其置为vblogauto。另外,logpath 属性、logmode 属性在设计阶段不可用,且在运行阶段为只读,因此不能直接对这两个属性进行赋值,只能通过startlogging 方法改变。
2 . 用l o g e v e n t 方法把某个事件记入日志。在windowsnt 平台上,该方法会把内容写到nt 的event 日志中。在windows9x平台上,该方法会把内容写到logpath属性指定的文件中。按照缺省规定,如果不指定文件,事件将被写入vbevents.log 文件中。
语法格式:app.logevent logbuffer, eventtype
其中:logbuffer 是要写入到日志中的信息;eventtype是可选的,它指定了事件的类型。下面是eventtype 的设置值:
常量名常数值描述
vblogeventtypeerror 1 错误
vblogeventtypewarning 2 警告
vblogeventtypeinformation 4 信息
3 . 程序运行过程中如果需要了解日志文件路径及文件名、日志写入模式,你可以读取logmode 属性和logpath属性的值。下面是一个简单的程序示例:
app.startlogging app.path + &\mylog.log&, vblogauto
app.logevent &一切正常&, vblogeventtypeinformation
msgbox app.logpath
msgbox app.logmode
需要注意的是,对日志操作的方法和属性只有在程序被编译为exe 文件后才能发挥作用,在visual basic 调试环境下无效。
阅读(3046)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'vb怎么防止一个程序运行多次?',
blogAbstract:'怎么防止一个程序运行多次?If App.PrevInstance Then&&&&&&&
MsgBox &该程序已经运行!&&&&&&&&
Unload Me&&&&&&&
End IfVB APP对象属性一览表+灵活使用VB的APP对象
●适用于VB
●用法:传回值 = App.属性
--------------------------------------------------------------------------------
●得知程序的说明
字符串 = App.Comments
●得知程序的公司名称 ',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:2,
mainCommentCount:2,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 vb程序怎么运行 的文章

 

随机推荐