本人目前想做一个软件管理VBP及VBG文件,采用文件流形式对VBP及VBG文件进行操作.具体思路是:建立一个TAB,其中一个TAB中放置要加入的FRM等文件,第二个TAB中放入要加入的DLL或OCX文件,第三个TAB进行工程管理.但目前碰到的问题是:
1.在VBP文件中,管理DLL等文件的有一个什么REFRENCE=什么的,后面好像是接的GUID值吧,但我怎么取啊。
2.路径是..\winnt\什么什么的,据说是相对路径,但怎么判断
3.还有什么FORM=什么的,那个值好像并不是文件名,那怎么从文件名中判断。
4.应当注意点什么啊极为重要的是第一个问题,请大家帮忙了。急用!

解决方案 »

  1.   

    1,
    dim lsarr() as string 
    dim iMax as long
    dim ls as string ls ="Reference=*\G{AC3B8B4C-B6CA-11D1-9F31-00C04FC29D52}#2.6#0#F:\Program Files\Common Files\System\ADO\msjro.dll#Microsoft Jet and Replication Objects 2.6 Library"
    lsarr= split(ls)
    imax =ubound(lsarr,"#")msgbox lsarr(imax)
    2,
    Form,Module,Class 类型都是用;分割,用split取最后部分,去掉路径就是文件名字
    直接判断有无..\ 没有,就在app.path加上路径;有,就去掉最后那段,加上..\后面的3,那是窗体名字,不是文件名字,打开frm文件就可以看到4,没做过,不知道
      

  2.   

    1. 在注册表里,HKEY_CLASSES_ROOT 下,HKEY_CLASSES_ROOT\CLSID 和 HKEY_CLASSES_ROOT \Interface 等。
    2. 用 ChDir 函数设置当前路径为工程文件的路径,然后就可以直接打开那些文件了。
      

  3.   

    Type=OleDll
    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\StdOle2.tlb#OLE Automation
    Reference=*\G{00000205-0000-0010-8000-00AA006D2EA4}#2.5#0#C:\PROGRAM FILES\COMMON FILES\SYSTEM\ADO\msado25.tlb#Microsoft ActiveX Data Objects 2.5 Library
    Object={4932CEF1-2CAA-11D2-A165-0060081C43D9}#2.0#0; ACTBAR2.OCX
    Reference=*\G{602014D4-B5ED-11D6-914B-0050BAD091AB}#7.0#0#..\BeautyInterface\BInterface.dll#Beauty Interface Type Library
    Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
    Object={0ECD9B60-23AA-11D0-B351-00A0C9055D8E}#6.0#0; MSHFLXGD.OCX
    Object={95559FD0-8A4C-11D3-905E-00A04B0669E7}#1.1#0; SMARTUI.OCX
    Object={86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX
    Object={BDC217C8-ED16-11CD-956C-0000C04E4C0A}#1.1#0; TABCTL32.OCX
    Object={F856EC8B-F03C-4515-BDC6-64CBD617566A}#6.0#0; FPSPR60.OCX
    Class=Application; Class\Application.cls
    Class=SToolbar; Class\SToolbar.cls
    Form=Form\DCTCForm.frm
    Form=Form\LookCoursesForm.frm
    Class=ComboEx; Class\ComboEx.cls
    Form=Form\SelTextForm.frm
    Module=ControlEx; Module\ControlEx.bas
    Form=Form\SortProductForm.frm
    Module=PublicSub; Module\PublicSub.bas
    Module=APIModule; Module\APIModule.bas
    Module=SelectFiles; Module\SelectFiles.bas
    Class=BDCData; Class\BDCData.cls
    Module=PublicVar; Module\PublicVar.bas
    Form=Form\LookProductForm.frm
    Module=GuidBh; Module\GuidBh.bas
    Module=SMsfEx; Module\SMsfEx.bas
    Form=Form\SmallObjectForm.frm
    Class=SpeadEx; Class\SpeadEx.cls
    Form=Form\SmallSelectForm.frm
    Class=QuickKeySer; Class\QuickKeySer.cls
    Form=Form\BMainForm.frm
    Form=Form\AddBookingForm.frm
    Form=Form\LookBookingForm.frm
    Form=Form\TCForm.frm
    Form=Form\CoursesForm.frm
    Form=Form\SkinTypeForm.frm
    Form=Form\BDSkinTypeForm.frm
    Form=Form\DCProductForm.frm
    ResFile32="..\..\Standard\SToolbar.RES"
    Module=TcNumber; Module\TcNumber.bas
    Form=Form\ProductForm.frm
    Form=Form\XTCForm.frm
    Startup="(None)"
    HelpFile=""
    Title="BDCustomized"
    ExeName32="BDCustomized.dll"
    Command32=""
    Name="BDCustomized"
    HelpContextID="0"
    Description="Beauty DataCustomized Type Library"
    CompatibleMode="2"
    CompatibleEXE32="BDCustomized.dll"
    VersionCompatible32="1"
    MajorVer=1
    MinorVer=0
    RevisionVer=903
    AutoIncrementVer=0
    ServerSupportFiles=0
    DllBaseAddress=&H8ae0000
    VersionComments="Program Design By CDK "
    VersionCompanyName="szlcsoft"
    VersionFileDescription="Beauty DataCustomized Type Library"
    VersionLegalCopyright="CopyRight 1999-2002"
    VersionProductName="Beauty DataCustomized Type Library"
    CompilationType=0
    OptimizationType=0
    FavorPentiumPro(tm)=-1
    CodeViewDebugInfo=0
    NoAliasing=0
    BoundsCheck=0
    OverflowCheck=0
    FlPointCheck=0
    FDIVCheck=0
    UnroundedFP=0
    StartMode=1
    Unattended=0
    Retained=0
    ThreadPerObject=0
    MaxNumberOfThreads=1
    ThreadingModel=1
    DebugStartupOption=0内容可是有些多咯,建议你做好一个模板,工程参数什么的就可以实现多了,至于部件与引用的Dll自己得处理一下,建议你对VB工程文件内容进行仔细的研究一下,呵呵呵
      

  4.   

    可能大家误会了我的意思了我现在是做测试,目前测试情况是测程序员提供过来的FRM等文件,至于VBP文件,不能用程序员提供的(因为程序员那里可能有新的FRM但没有测试),要求我们自己添加,所以我就在想着判断一个FRM是否在现存的VBP文件中存在,如果不存在,就用代码往VBP文件中写入一句就行了。但管理VBP文件不仅是FRM,而且还有着DLL.OCX等文件,我可能知道某一个DLL的文件路径,但怎么通过这个DLL文件得知GUID呢,以及往里面写入呢我查看了一下注册表,注册表里面有相关的信息,但就是不知道怎么取值了。