Visual Basic - 获取有关另一个程序的基本信息

时间:2016-11-13 18:51:44

标签: vba

好吧,我目前正在开发一个更新器,它正在更新多个文件,例如可执行文件和驱动程序。每次推送更新时我都不想替换每个文件,而只是替换实际更新的文件。一个简单的方法是阅读该程序的版本,但我不知道如何阅读所需的信息。我浏览了IO.File,但没有找到任何有用的东西。

2 个答案:

答案 0 :(得分:0)

您可以创建一个单独的文件,指明您要更新的每个文件的版本。这通常是我做事的方式。

假设你有一个文件,我们称之为“version.txt”。理想情况下,你可以像这样设置它:(你可以做一个行格式或javascript,无论你感觉最舒服)

    Dim alatestVersion As Double
    alatestVersion = 2.2

因此,在updater方法中,您可以将最新版本设置为2.2。

template<template<class...>class element_hash=std::hash>
struct symmetric_range_hash {
  template<class T>
  std::size_t operator()( T const& t ) const {
    std::size_t r = element_hash<int>{}(0); // seed with the hash of 0.
    for (auto&& x:t) {
      using element_type = std::decay_t<decltype(x)>;
      auto next = element_hash<element_type>{}(x);
      r = r + next;
    }
    return r;
  }
};

然后,您可以解析文本文件并创建一个方法来检查该组件是否是最新版本。在此之后,如果mainapplicationVersion!= alatestVersion然后[更新]。

希望这有帮助。

答案 1 :(得分:0)

尝试此操作来循环浏览文件夹的文件。

Option Explicit

Sub Macro1()

Dim varFile As Variant
Dim i As Integer
Dim objShell
Dim objDir

Set objShell = CreateObject("Shell.Application")
Set objDir = objShell.Namespace("C:\DIRECTORY_OF_FILES_HERE\")

For Each varFile In objDir.Items
   Debug.Print objDir.GetDetailsOf(varFile, 156) ' 156 = File Version
Next

' Use this to see the numbers of all the attributes, e.g. 156 = File Version
'For i = 0 To 300
'   Debug.Print i, objDir.GetDetailsOf(objDir.Items, i)
'Next

End Sub