| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1777 人关注过本帖, 2 人收藏
标题:VFP反回自身可执行文件名的函数是什么?
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26906
注 册:2012-2-5
收藏
得分:0 
以下是引用hrer在2012-3-14 18:41:33的发言:

   DIMENSION bdFiles[1]
   AGETFILEVERSION(bdFiles,"xxxx.exe") &&"xxxx.exe"是VFP编译后的exe文件,如果不默认路径下,加上路径。
   version_=ALLTRIM(bdFiles[4])&&version_就是版本号

*我只是想知道在自身程序中如何获取"xxxx.exe",即使是将"xxxx.exe"改名为"yyyy.exe"。
文件版本要手工输入,不要自动生成。
搜索路径就是整个硬盘,先小范围搜索,比如在D:\AA 下
看下项目管理器,连编信息中的版本信息的7项内容(所有内容都要输入,要有特征性的内容)对应于AGETFILEVERSION()15个元素的那些元素,下一步就好办了。

[ 本帖最后由 sdta 于 2012-3-14 19:15 编辑 ]

坚守VFP最后的阵地
2012-03-14 19:03
hrer
Rank: 2
等 级:论坛游民
帖 子:36
专家分:20
注 册:2010-4-20
收藏
得分:0 
回复 11楼 sdta
我在程序中做了一个"关于...."的表单,名称:version.scx

其中标签控件“Label1”方法init如下:

IF FILE("fpss.exe") &&"fpss.exe"我编译后的程序名。
   DIMENSION bdFiles[1]
   AGETFILEVERSION(bdFiles,"fpss.exe")
   bd_bbh=ALLTRIM(bdFiles[4])
ELSE
   bd_bbh="2012.1"
ENDIF
this.caption="版本:V"+bd_bbh

现状:运行"fpss.exe"后,点击菜单中的"关于....",在弹出的窗口中,控件“Label1”位置显示:“版本:V2012.1.1035”
      如果"fpss.exe"把名称修改后,则在弹出的窗口中,控件“Label1”位置显示:“版本:V2012.1”


我想知道,有没有一个函数或其他方法,自取获取编译后的程序名?就是把"fpss.exe"把名称修改后,能够自动获取运行程序名,达到显示程序的实际版本号“版本:V2012.1.1035”。

2012-03-15 13:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26906
注 册:2012-2-5
收藏
得分:0 
回复 12楼 hrer
反正我是不知道有这类函数。
可以遍历所有文件夹,用ADIR(),将文件导入数据表,从而找出EXE文件。
再加入一个:
bd_bbh8=ALLTRIM(bdFiles[8])
可以用PRG文件,不一定要用表单。

[ 本帖最后由 sdta 于 2012-3-15 14:34 编辑 ]

坚守VFP最后的阵地
2012-03-15 14:32
hrer
Rank: 2
等 级:论坛游民
帖 子:36
专家分:20
注 册:2010-4-20
收藏
得分:0 
回复 13楼 sdta
*我找到了,代码如下:

Declare INTEGER GetModuleFileName IN kernel32;
    INTEGER  hModule,;
    STRING @ lpFilename,;
    INTEGER  nSize

lpFilename = SPACE(250)
lnLen = GetModuleFileName (0, @lpFilename, LEN(lpFilename))
wjm=ALLTRIM(LEFT(lpFilename, lnLen)) &&变量“wjm”就是VFP自身可执行文件名,编译后改名也能获取,测试通过。
谢谢sdta版主的帮助。
2012-03-15 18:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26906
注 册:2012-2-5
收藏
得分:0 
以下是引用hrer在2012-3-15 18:05:54的发言:

*我找到了,代码如下:

Declare INTEGER GetModuleFileName IN kernel32;
    INTEGER  hModule,;
    STRING @ lpFilename,;
    INTEGER  nSize

lpFilename = SPACE(250)
lnLen = GetModuleFileName (0, @lpFilename, LEN(lpFilename))
wjm=ALLTRIM(LEFT(lpFilename, lnLen)) &&变量“wjm”就是VFP自身可执行文件名,编译后改名也能获取,测试通过。
谢谢sdta版主的帮助。
汗颜
是WIN32API函数?我在WIN32API函数大全中未查到这个函数。该函数的出处。上传一个学习,就挂在贴子里就行。谢谢了。


[ 本帖最后由 sdta 于 2012-3-15 18:43 编辑 ]

坚守VFP最后的阵地
2012-03-15 18:20
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:987
专家分:4946
注 册:2013-2-16
收藏
得分:0 
谢谢楼主分享,我接到此问题的第一反应是:用API能够解决此类问题,但具体怎么用,我没有现成的答案。
另外有个问题想请教一下,比如我打开“C:\abced.dbf”,别名为“CC”,假设我事先不知道文件名是什么,有没有什么现成的函数,可以从别名“CC”,返回真实的文件名“C:\abced.dbf”?找了一些帮助文件,没有查到想要的答案。
2014-03-31 17:21
bhyysjh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-1-16
收藏
得分:0 
if   right(sys(16,1),3) ='EXE'
    ******
endif
2020-03-16 20:14
快速回复:VFP反回自身可执行文件名的函数是什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023866 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved