473,416 Members | 1,837 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes and contribute your articles to a community of 473,416 developers and data experts.

Microsoft Scripting Runtime #1

ADezii
8,834 Expert 8TB
The next series of Tips will involve the Microsoft Scripting Runtime Library (Scrrun.dll). This Library is, in my humble opinion, one of the most useful and practical Libraries ever created. With the Scripting Runtime Library, you can retrieve information related to Drives, Folders, Files, and Text Files and set/retrieve certain Attributes of Drives, Folders, Files, and Text Files. Through Methods exposed by this Library, you can also manipulate these Objects. Because of the extensive functionality exposed by this Library, I have broken it down into several Components which will be the subject matter for the next series of Tips. Our first related Tip will show you how to retrieve specific and vital information for all Drives on your PC, or for a single Drive of your choosing. The code is fairly intuitive, and I have inserted Comments wherever I thought they would be appropriate. This code was used on a Pentium 4 PC with a CD ROM Drive, DVD Drive, Floppy Drive, a single non-partitioned Fixed Disk, and a small Flash Drive in a USB Port. Should you have any questions concerning this Tip, please feel free to ask. Without further adieu, the Scripting Runtime Library Tip #1:
Expand|Select|Wrap|Line Numbers
  1. On Error GoTo ErrorHandler
  2. On Error Resume Next    'Critical Line of code
  3.  
  4. 'Must set a Reference to the Microsoft Scripting Runtime Library (Scrrun.dll)
  5.  
  6. 'declare appropriate Object Variables
  7. Dim fso As FileSystemObject, drv As Drive, drvSingle As Drive
  8.  
  9. 'Create an Instance of the FileSystemObject using 1 of 2 Methods
  10. Set fso = New Scripting.FileSystemObject
  11.                 'OR
  12. 'Set fso = CreateObject("Scripting.FileSystemObject")
  13.  
  14. Debug.Print "--------------------------------------------"
  15. 'Loop through all Drives on the PC
  16. For Each drv In fso.Drives
  17.   Debug.Print "Drive Letter: " & drv.DriveLetter
  18.   Debug.Print "  Available Space: " & Format$(drv.AvailableSpace, "#,#,#,#") & " bytes"
  19.   Debug.Print "  Drive Type: " & fDetermineDriveType(drv.DriveType)
  20.   Debug.Print "  File System: " & drv.FileSystem
  21.   Debug.Print "  Free Space: " & Format$(drv.FreeSpace, "#,#,#,#") & " bytes"
  22.   Debug.Print "  Is Drive Ready?: " & IIf(drv.IsReady, "Yes", "No")
  23.   Debug.Print "  Drive Path: " & drv.Path
  24.   Debug.Print "  Root Folder: " & drv.RootFolder
  25.   Debug.Print "  Drive Serial Number: " & drv.SerialNumber
  26.   Debug.Print "  Drive Share Name: " & drv.ShareName & IIf(Nz(drv.ShareName) = "", _
  27.                                    "Unavailable", drv.ShareName)
  28.   Debug.Print "  Total Size of Drive: " & Format(drv.TotalSize, "#,#,#,#") & " bytes"
  29.   Debug.Print "  Volume Name of Drive: " & IIf(Nz(drv.VolumeName) = "", "Unavailable", _
  30.                                        drv.VolumeName)
  31.   Debug.Print "--------------------------------------------"
  32. Next
  33.  
  34. 'For a Single Drive, from this point on
  35. Set drvSingle = fso.Drives("C:")
  36.  
  37. Debug.Print "--------------------------------------------"
  38.   Debug.Print "Drive Letter: " & drvSingle.DriveLetter & " (Single Drive)"
  39.   Debug.Print "  Available Space: " & Format$(drvSingle.AvailableSpace, "#,#,#,#") & _
  40.                                       " bytes"
  41.   Debug.Print "  Drive Type: " & fDetermineDriveType(drvSingle.DriveType)
  42.   Debug.Print "  File System: " & drvSingle.FileSystem
  43.   Debug.Print "  Free Space: " & Format$(drvSingle.FreeSpace, "#,#,#,#") & " bytes"
  44.   Debug.Print "  Is Drive Ready?: " & IIf(drvSingle.IsReady, "Yes", "No")
  45.   Debug.Print "  Drive Path: " & drvSingle.Path
  46.   Debug.Print "  Root Folder: " & drvSingle.RootFolder
  47.   Debug.Print "  Drive Serial Number: " & drvSingle.SerialNumber
  48.   Debug.Print "  Drive Share Name: " & drvSingle.ShareName & _
  49.                  IIf(Nz(drvSingle.ShareName) = "", "Unavailable", drvSingle.ShareName)
  50.   Debug.Print "  Total Size of Drive: " & Format(drvSingle.TotalSize, "#,#,#,#") & _
  51.               " bytes"
  52.   Debug.Print "  Volume Name of Drive: " & IIf(Nz(drvSingle.VolumeName) = "", "Unavailable", _
  53.                                        drvSingle.VolumeName)
  54.   Debug.Print "--------------------------------------------"
Expand|Select|Wrap|Line Numbers
  1. Private Function fDetermineDriveType(intDriveType As Integer) As String
  2. 'Interprets the Numeric Value returned by the Type Property and
  3. 'returns a String representing the Drive Type
  4. Select Case intDriveType
  5.   Case 0
  6.     fDetermineDriveType = "Unknown"
  7.   Case 1
  8.     fDetermineDriveType = "Removable"
  9.   Case 2
  10.     fDetermineDriveType = "Fixed"
  11.   Case 3
  12.     fDetermineDriveType = "Remote"
  13.   Case 4
  14.     fDetermineDriveType = "CD ROM"
  15.   Case 5
  16.     fDetermineDriveType = "RAM Disk"
  17.   Case Else
  18.     fDetermineDriveType = "Unknown"
  19. End Select
OUTPUT:
Expand|Select|Wrap|Line Numbers
  1. --------------------------------------------
  2. Drive Letter: A
  3.   Available Space: 833,536 bytes
  4.   Drive Type: Removable
  5.   File System: FAT
  6.   Free Space: 833,536 bytes
  7.   Is Drive Ready?: Yes
  8.   Drive Path: A:
  9.   Root Folder: A:\
  10.   Drive Serial Number: 1284401684
  11.   Drive Share Name: Unavailable
  12.   Total Size of Drive: 1,457,664 bytes
  13.   Volume Name of Drive: Unavailable
  14. --------------------------------------------
  15. Drive Letter: C
  16.   Available Space: 49,298,620,416 bytes
  17.   Drive Type: Fixed
  18.   File System: NTFS
  19.   Free Space: 49,298,620,416 bytes
  20.   Is Drive Ready?: Yes
  21.   Drive Path: C:
  22.   Root Folder: C:\
  23.   Drive Serial Number: 350880761
  24.   Drive Share Name: Unavailable
  25.   Total Size of Drive: 61,483,933,696 bytes
  26.   Volume Name of Drive: Dezii
  27. --------------------------------------------
  28. Drive Letter: D
  29.   Drive Type: CD ROM
  30.   Is Drive Ready?: No
  31.   Drive Path: D:
  32.   Drive Share Name: Unavailable
  33. --------------------------------------------
  34. Drive Letter: E
  35.   Drive Type: CD ROM
  36.   Is Drive Ready?: No
  37.   Drive Path: E:
  38.   Drive Share Name: Unavailable
  39. --------------------------------------------
  40. Drive Letter: F
  41.   Available Space: 10,195,968 bytes
  42.   Drive Type: Fixed
  43.   File System: FAT
  44.   Free Space: 10,195,968 bytes
  45.   Is Drive Ready?: Yes
  46.   Drive Path: F:
  47.   Root Folder: F:\
  48.   Drive Serial Number: -2137813243
  49.   Drive Share Name: Unavailable
  50.   Total Size of Drive: 32,472,576 bytes
  51.   Volume Name of Drive: FlashDisk
  52. --------------------------------------------
  53. --------------------------------------------
  54. Drive Letter: C (Single Drive)
  55.   Available Space: 49,298,620,416 bytes
  56.   Drive Type: Fixed
  57.   File System: NTFS
  58.   Free Space: 49,298,620,416 bytes
  59.   Is Drive Ready?: Yes
  60.   Drive Path: C:
  61.   Root Folder: C:\
  62.   Drive Serial Number: 350880761
  63.   Drive Share Name: Unavailable
  64.   Total Size of Drive: 61,483,933,696 bytes
  65.   Volume Name of Drive: Dezii
  66. --------------------------------------------
Jan 31 '08 #1
7 8803
FishVal
2,653 Expert 2GB
Hello, ADezii.

IMHO "Windows Script Host Object Model" library (\WINDOWS\system32\wshom.ocx) is even more useful.
It has all (or almost all) useful classes of "Microsoft Scripting Runtime" as well as a bunch of other very useful ones.
  • network
  • windows registry functions
  • a very useful shell exec method allowing to run an application and get access to its stdin/stdout/stderr as well as to terminate it
  • creating shortcuts
  • etc

Regards,
Fish
Jan 31 '08 #2
ADezii
8,834 Expert 8TB
Hello, ADezii.

IMHO "Windows Script Host Object Model" library (\WINDOWS\system32\wshom.ocx) is even more useful.
It has all (or almost all) useful classes of "Microsoft Scripting Runtime" as well as a bunch of other very useful ones.
  • network
  • windows registry functions
  • a very useful shell exec method allowing to run an application and get access to its stdin/stdout/stderr as well as to terminate it
  • creating shortcuts
  • etc

Regards,
Fish
Hello FishVal and thanks for the info, I never realized that it was quite that extensive. When I am done with this series of Tips relating to the Scripting Runtime could I perhaps interest you in creating a Tip(s) relating to the implementation of the "Windows Script Host Object Model"? I'm sure that it would generate a lot of interest. If you agree, I'll even show you the Top Secret 'Tip Creator Handshake' that only Mary, NeoPa, and I are privy to. (LOL).
Feb 1 '08 #3
dima69
181 Expert 100+
Just one drawback from using Scripting. There are some antivirus programs (like Kaspersky AV) that have an ability to block scripting in Access. In such case, Access application just stops running. So if you intend to distribute your application, you would rather consider not using Scripting, as powerful as it is, unless there is no other option.
Feb 2 '08 #4
ADezii
8,834 Expert 8TB
Just one drawback from using Scripting. There are some antivirus programs (like Kaspersky AV) that have an ability to block scripting in Access. In such case, Access application just stops running. So if you intend to distribute your application, you would rather consider not using Scripting, as powerful as it is, unless there is no other option.
Excellant point dima69, one that I was not aware of, and one to definately consider should you decide to use it. Within these AV Utilities, is there an option to specifically turn off the Component that would normally block Scripting?
Feb 2 '08 #5
dima69
181 Expert 100+
Excellant point dima69, one that I was not aware of, and one to definately consider should you decide to use it. Within these AV Utilities, is there an option to specifically turn off the Component that would normally block Scripting?
I know that in Kaspersky AV there is an option that can be changed to enable Scripting. Don't remember about the others.
Feb 2 '08 #6
FishVal
2,653 Expert 2GB
Hello, ADezii

Hello FishVal and thanks for the info, I never realized that it was quite that extensive. When I am done with this series of Tips relating to the Scripting Runtime could I perhaps interest you in creating a Tip(s) relating to the implementation of the "Windows Script Host Object Model"?
You certainly could. Just let me know, please, in advance when "Runtime Scripting" saga will come to a head. :)

Regards,
Fish
Feb 2 '08 #7
ADezii
8,834 Expert 8TB
Hello, ADezii



You certainly could. Just let me know, please, in advance when "Runtime Scripting" saga will come to a head. :)

Regards,
Fish
Thanks FishVal, I figure 4 more Tips involving the Scripting Runtime, namely: Folders, Files, Text File manipulation, and the File System Object itself. This should give you plenty of time for the 'Grandaddy of all Tips'! (LOL). See you around and thanks for the assistance.
Feb 3 '08 #8

Sign in to post your reply or Sign up for a free account.

Similar topics

17
by: Karl Irvin | last post by:
To use the Textstream object, I had to set a Reference to the Microsoft Scripting Runtime. This works good with A2000 Is the Scripting Runtime included with A2002 and A2003 so the Reference...
1
by: Karl Irvin | last post by:
To use the Textstream object, I had to set a Reference to the Microsoft Scripting Runtime. This works good with A2000 Is the Scripting Runtime included with A2002 and A2003 so the Reference...
8
by: Howard Kaikow | last post by:
Historically, auntie virus software has issued false positives against code using the Scripting Runtime. Does .NET have a native replacement for the Scripting runtime? For example, is there...
1
by: PaulieS | last post by:
Hi all. Am migrating a customer from IIS5 on W2K server to IIS6 on W2K3. Zipped all the websites and unzipped them to the identical locations on new server. Used IISMT to migrate metabase. ...
4
by: john d | last post by:
I have an IIS 5.0 server with a Virtual Directory called test. This virtual directory points to a share on the network, \\server1\share\ and uses a valid domain account in the "Connect As" field....
2
by: anidmarty | last post by:
Hey I'm a Sysadmin and my users are getting this error on my production box. It works fine on the dev box. There is a script that is run that generates this error. Production is clustered...
0
ADezii
by: ADezii | last post by:
This is the 2nd Tip in a series of Tips on the Microsoft Scripting Runtime Library. The 1st Tip related to Drives, while this Tip will concentrate on the Folders (Directories) in your PC and various...
0
ADezii
by: ADezii | last post by:
This is the 3rd in a series of Tips dealing specifically with the Microsoft Scripting Runtime Library. In this Tip, we'll show you how to return specific Properties relating to Files, as well as...
0
ADezii
by: ADezii | last post by:
This is the last in a series of Tips involving the Microsoft Scripting Runtime Library and deals with creating, opening, writing to, reading from, and closing Text Files via this Library. At this...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.