ADezii 8,834
Recognized Expert Expert
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: -
On Error GoTo ErrorHandler
-
On Error Resume Next 'Critical Line of code
-
-
'Must set a Reference to the Microsoft Scripting Runtime Library (Scrrun.dll)
-
-
'declare appropriate Object Variables
-
Dim fso As FileSystemObject, drv As Drive, drvSingle As Drive
-
-
'Create an Instance of the FileSystemObject using 1 of 2 Methods
-
Set fso = New Scripting.FileSystemObject
-
'OR
-
'Set fso = CreateObject("Scripting.FileSystemObject")
-
-
Debug.Print "--------------------------------------------"
-
'Loop through all Drives on the PC
-
For Each drv In fso.Drives
-
Debug.Print "Drive Letter: " & drv.DriveLetter
-
Debug.Print " Available Space: " & Format$(drv.AvailableSpace, "#,#,#,#") & " bytes"
-
Debug.Print " Drive Type: " & fDetermineDriveType(drv.DriveType)
-
Debug.Print " File System: " & drv.FileSystem
-
Debug.Print " Free Space: " & Format$(drv.FreeSpace, "#,#,#,#") & " bytes"
-
Debug.Print " Is Drive Ready?: " & IIf(drv.IsReady, "Yes", "No")
-
Debug.Print " Drive Path: " & drv.Path
-
Debug.Print " Root Folder: " & drv.RootFolder
-
Debug.Print " Drive Serial Number: " & drv.SerialNumber
-
Debug.Print " Drive Share Name: " & drv.ShareName & IIf(Nz(drv.ShareName) = "", _
-
"Unavailable", drv.ShareName)
-
Debug.Print " Total Size of Drive: " & Format(drv.TotalSize, "#,#,#,#") & " bytes"
-
Debug.Print " Volume Name of Drive: " & IIf(Nz(drv.VolumeName) = "", "Unavailable", _
-
drv.VolumeName)
-
Debug.Print "--------------------------------------------"
-
Next
-
-
'For a Single Drive, from this point on
-
Set drvSingle = fso.Drives("C:")
-
-
Debug.Print "--------------------------------------------"
-
Debug.Print "Drive Letter: " & drvSingle.DriveLetter & " (Single Drive)"
-
Debug.Print " Available Space: " & Format$(drvSingle.AvailableSpace, "#,#,#,#") & _
-
" bytes"
-
Debug.Print " Drive Type: " & fDetermineDriveType(drvSingle.DriveType)
-
Debug.Print " File System: " & drvSingle.FileSystem
-
Debug.Print " Free Space: " & Format$(drvSingle.FreeSpace, "#,#,#,#") & " bytes"
-
Debug.Print " Is Drive Ready?: " & IIf(drvSingle.IsReady, "Yes", "No")
-
Debug.Print " Drive Path: " & drvSingle.Path
-
Debug.Print " Root Folder: " & drvSingle.RootFolder
-
Debug.Print " Drive Serial Number: " & drvSingle.SerialNumber
-
Debug.Print " Drive Share Name: " & drvSingle.ShareName & _
-
IIf(Nz(drvSingle.ShareName) = "", "Unavailable", drvSingle.ShareName)
-
Debug.Print " Total Size of Drive: " & Format(drvSingle.TotalSize, "#,#,#,#") & _
-
" bytes"
-
Debug.Print " Volume Name of Drive: " & IIf(Nz(drvSingle.VolumeName) = "", "Unavailable", _
-
drvSingle.VolumeName)
-
Debug.Print "--------------------------------------------"
-
Private Function fDetermineDriveType(intDriveType As Integer) As String
-
'Interprets the Numeric Value returned by the Type Property and
-
'returns a String representing the Drive Type
-
Select Case intDriveType
-
Case 0
-
fDetermineDriveType = "Unknown"
-
Case 1
-
fDetermineDriveType = "Removable"
-
Case 2
-
fDetermineDriveType = "Fixed"
-
Case 3
-
fDetermineDriveType = "Remote"
-
Case 4
-
fDetermineDriveType = "CD ROM"
-
Case 5
-
fDetermineDriveType = "RAM Disk"
-
Case Else
-
fDetermineDriveType = "Unknown"
-
End Select
OUTPUT: - --------------------------------------------
-
Drive Letter: A
-
Available Space: 833,536 bytes
-
Drive Type: Removable
-
File System: FAT
-
Free Space: 833,536 bytes
-
Is Drive Ready?: Yes
-
Drive Path: A:
-
Root Folder: A:\
-
Drive Serial Number: 1284401684
-
Drive Share Name: Unavailable
-
Total Size of Drive: 1,457,664 bytes
-
Volume Name of Drive: Unavailable
-
--------------------------------------------
-
Drive Letter: C
-
Available Space: 49,298,620,416 bytes
-
Drive Type: Fixed
-
File System: NTFS
-
Free Space: 49,298,620,416 bytes
-
Is Drive Ready?: Yes
-
Drive Path: C:
-
Root Folder: C:\
-
Drive Serial Number: 350880761
-
Drive Share Name: Unavailable
-
Total Size of Drive: 61,483,933,696 bytes
-
Volume Name of Drive: Dezii
-
--------------------------------------------
-
Drive Letter: D
-
Drive Type: CD ROM
-
Is Drive Ready?: No
-
Drive Path: D:
-
Drive Share Name: Unavailable
-
--------------------------------------------
-
Drive Letter: E
-
Drive Type: CD ROM
-
Is Drive Ready?: No
-
Drive Path: E:
-
Drive Share Name: Unavailable
-
--------------------------------------------
-
Drive Letter: F
-
Available Space: 10,195,968 bytes
-
Drive Type: Fixed
-
File System: FAT
-
Free Space: 10,195,968 bytes
-
Is Drive Ready?: Yes
-
Drive Path: F:
-
Root Folder: F:\
-
Drive Serial Number: -2137813243
-
Drive Share Name: Unavailable
-
Total Size of Drive: 32,472,576 bytes
-
Volume Name of Drive: FlashDisk
-
--------------------------------------------
-
--------------------------------------------
-
Drive Letter: C (Single Drive)
-
Available Space: 49,298,620,416 bytes
-
Drive Type: Fixed
-
File System: NTFS
-
Free Space: 49,298,620,416 bytes
-
Is Drive Ready?: Yes
-
Drive Path: C:
-
Root Folder: C:\
-
Drive Serial Number: 350880761
-
Drive Share Name: Unavailable
-
Total Size of Drive: 61,483,933,696 bytes
-
Volume Name of Drive: Dezii
-
--------------------------------------------
7 8824 FishVal 2,653
Recognized Expert Specialist
Hello, ADezii.
IMHO "Windows Script Host Object Model" library (\WINDOWS\syste m32\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
ADezii 8,834
Recognized Expert Expert
Hello, ADezii.
IMHO "Windows Script Host Object Model" library (\WINDOWS\syste m32\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).
dima69 181
Recognized Expert New Member
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.
ADezii 8,834
Recognized Expert Expert
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?
dima69 181
Recognized Expert New Member
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.
FishVal 2,653
Recognized Expert Specialist
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
ADezii 8,834
Recognized Expert Expert
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.
Sign in to post your reply or Sign up for a free account.
Similar topics |
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
won't be broken when my app is opened with those versions.
Also is the Scripting Runtime included as part of the A2000 Runtime Engine
which some of...
|
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
won't be broken when my app is opened with those versions.
Also is the Scripting Runtime included as part of the A2000 Runtime Engine
which some of...
|
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 the equivalent of a "CompareMethod" for the Collection
object as for the Dictionary object?
|
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.
Got this error when I tried to run a very basic page... code:
<%@ LANGUAGE=vbscript %>
<%
|
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.
From an IE browser, you can access the virtual directory without a problem.
However, when referencing the virtual diretory in an asp page, the...
| |
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 environment using Microsoft Application Center.
This was working before and starting throwing this error about 15 days ago.
any help would be much...
|
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 methods to retrieve information from and how to manipulate them. The code should be self explanatory and basically documents itself. Should there be...
|
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 various Methods to Copy, Move, and Delete them. The code is self explanatory, so I'll jump right in:
Dim fso As FileSystemObject, fil As File
'Set fso...
|
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 time, the Scripting Library cannot deal with the opening and manipulation of Files in Binary Mode, so we will only demonstrate this functionality as it...
|
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, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
|
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 effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
|
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 presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes...
|
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 then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |