List all environment variables on a computer

Script from Microsoft. Lists all environment variables on a computer.

import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Environment")
for objItem in colItems:
    print "Caption: ", objItem.Caption
    print "Description: ", objItem.Description
    print "Install Date: ", objItem.InstallDate
    print "Name: ", objItem.Name
    print "Status: ", objItem.Status
    print "System Variable: ", objItem.SystemVariable
    print "User Name: ", objItem.UserName
    print "Variable Value: ", objItem.VariableValue

Getting environment variables from registry

This script comes from ASPN (posted from Denis Barmenkov) and prints the environment variables got from the Windows registry (\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment).

# -*- coding: Windows-1251 -*-
'''
getenv_system.py

Get SYSTEM environment value, as if running under Service or SYSTEM account

Author: Denis Barmenkov 

Copyright: this code is free, but if you want to use it, 
           please keep this multiline comment along with function source. 
           Thank you.

2006-01-28 15:30
'''

import os, win32api, win32con

def getenv_system(varname, default=''):
    v = default
    try:
        rkey = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment')
        try:
            v = str(win32api.RegQueryValueEx(rkey, varname)[0])
            v = win32api.ExpandEnvironmentStrings(v)
        except:
            pass
    finally:
        win32api.RegCloseKey(rkey)
    return v

print 'SYSTEM.TEMP => %s' % getenv_system('TEMP')
print 'USER.TEMP   => %s' % os.getenv('TEMP')
print 'USER.PATH   => %s' % os.getenv('PATH')

Two instances of Windows Explorer side by side

A Python receipt from Activestate which run two copies of Windows Explorer, resize them to fit each of them to half the desktop size and place them side by side to facilitate file management between two directories or disk drives.

from win32gui import EnumWindows, SetWindowPos, GetDesktopWindow, \
     GetWindowRect, FindWindow, GetClassName, ShowWindow
import os, time
import pywintypes

def enumWinProc(h, lparams):
    
    if GetClassName(h) == 'ExploreWClass':
        lparams.append(h)

winList = []
EnumWindows(enumWinProc,winList)
winCnt = len(winList)
if winCnt == 0: # No Explorer running
    os.system('explorer.exe')
    while 1:
        try:
            FindWindow('ExploreWClass',None) #Wait for first instance to run
        except pywintypes.error,e:
            pass
        else:
            break
        time.sleep(0.1) # Sleep for a while before continuing
    os.system('explorer.exe') # Start second instance
elif winCnt == 1:
    os.system('explorer.exe') # Start second instance
time.sleep(2) # Wait for Explorer to run
winList = []
EnumWindows(enumWinProc,winList) # Get handles of running Explorer
hDesk = GetDesktopWindow()
(dLeft,dTop,dRight,dBottom) = GetWindowRect(hDesk) # Get desktop size
SetWindowPos(winList[0],0,dRight/2,0,dRight/2,dBottom,0) # Set the windows sizes
SetWindowPos(winList[1],0,0,0,dRight/2,dBottom,0)
ShowWindow(winList[0],1) #Show the windows
ShowWindow(winList[1],1)

Find out the “My Pictures” folder

A Python script to find out the “My Pictures” folder on Windows with Python.

from win32com import shell, shellcon
mypict = shell.SHGetFolderPath(0, shellcon.CSIDL_MYPICTURES, 0, 0)
print mydict

Find out My Documents folder

A script to find the user’s My Documents folder on Windows with Python

from win32com.shell import shell
df = shell.SHGetDesktopFolder()
pidl = df.ParseDisplayName(0, None,  
    "::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]
mydocs = shell.SHGetPathFromIDList(pidl)

Dialup Connection with Windows RAS (win32ras)

Example for connect to Internet via Modem, ISDN, ADSL, …

import win32ras

# Dialup with a RAS entry
win32ras.Dial (
    None, 
    None, 
    ("windows_ras_entry_name", "", "", "username", "password", ""), 
    None
  )

# Hangup the connection
win32ras.HangUp ()

List infos about printers connected to a printserver

#Lists information about all the printers connected to a print server.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Printer")
for objItem in colItems:
    print "Attributes: ", objItem.Attributes
    print "Availability: ", objItem.Availability
    z = objItem.AvailableJobSheets
    if z is None:
        a = 1
    else:
        for x in z:
            print "Available Job Sheets: ", x
    print "Average Pages Per Minute: ", objItem.AveragePagesPerMinute
    z = objItem.Capabilities
    if z is None:
        a = 1
    else:
        for x in z:
            print "Capabilities: ", x
    z = objItem.CapabilityDescriptions
    if z is None:
        a = 1
    else:
        for x in z:
            print "Capability Descriptions: ", x
    print "Caption: ", objItem.Caption
    z = objItem.CharSetsSupported
    if z is None:
        a = 1
    else:
        for x in z:
            print "Char Sets Supported: ", x
    print "Comment: ", objItem.Comment
    print "Config Manager Error Code: ", objItem.ConfigManagerErrorCode
    print "Config Manager User Config: ", objItem.ConfigManagerUserConfig
    print "Creation Class Name: ", objItem.CreationClassName
    z = objItem.CurrentCapabilities
    if z is None:
        a = 1
    else:
        for x in z:
            print "Current Capabilities: ", x
    print "Current Char Set: ", objItem.CurrentCharSet
    print "Current Language: ", objItem.CurrentLanguage
    print "Current Mime Type: ", objItem.CurrentMimeType
    print "Current Natural Language: ", objItem.CurrentNaturalLanguage
    print "Current Paper Type: ", objItem.CurrentPaperType
    print "Default: ", objItem.Default
    z = objItem.DefaultCapabilities
    if z is None:
        a = 1
    else:
        for x in z:
            print "Default Capabilities: ", x
    print "Default Copies: ", objItem.DefaultCopies
    print "Default Language: ", objItem.DefaultLanguage
    print "Default Mime Type: ", objItem.DefaultMimeType
    print "Default Number Up: ", objItem.DefaultNumberUp
    print "Default Paper Type: ", objItem.DefaultPaperType
    print "Default Priority: ", objItem.DefaultPriority
    print "Description: ", objItem.Description
    print "Detected Error State: ", objItem.DetectedErrorState
    print "Device ID: ", objItem.DeviceID
    print "Direct: ", objItem.Direct
    print "Do Complete First: ", objItem.DoCompleteFirst
    print "Driver Name: ", objItem.DriverName
    print "Enable BIDI: ", objItem.EnableBIDI
    print "Enable Dev Query Print: ", objItem.EnableDevQueryPrint
    print "Error Cleared: ", objItem.ErrorCleared
    print "Error Description: ", objItem.ErrorDescription
    z = objItem.ErrorInformation
    if z is None:
        a = 1
    else:
        for x in z:
            print "Error Information: ", x
    print "Extended Detected Error State: ", objItem.ExtendedDetectedErrorState
    print "Extended Printer Status: ", objItem.ExtendedPrinterStatus
    print "Hidden: ", objItem.Hidden
    print "Horizontal Resolution: ", objItem.HorizontalResolution
    print "Install Date: ", objItem.InstallDate
    print "Job Count Since Last Reset: ", objItem.JobCountSinceLastReset
    print "Keep Printed Jobs: ", objItem.KeepPrintedJobs
    z = objItem.LanguagesSupported
    if z is None:
        a = 1
    else:
        for x in z:
            print "Languages Supported: ", x
    print "Last Error Code: ", objItem.LastErrorCode
    print "Local: ", objItem.Local
    print "Location: ", objItem.Location
    print "Marking Technology: ", objItem.MarkingTechnology
    print "Max Copies: ", objItem.MaxCopies
    print "Max Number Up: ", objItem.MaxNumberUp
    print "Max Size Supported: ", objItem.MaxSizeSupported
    z = objItem.MimeTypesSupported
    if z is None:
        a = 1
    else:
        for x in z:
            print "Mime Types Supported: ", x
    print "Name: ", objItem.Name
    z = objItem.NaturalLanguagesSupported
    if z is None:
        a = 1
    else:
        for x in z:
            print "Natural Languages Supported: ", x
    print "Network: ", objItem.Network
    z = objItem.PaperSizesSupported
    if z is None:
        a = 1
    else:
        for x in z:
            print "Paper Sizes Supported: ", x
    z = objItem.PaperTypesAvailable
    if z is None:
        a = 1
    else:
        for x in z:
            print "Paper Types Available: ", x
    print "Parameters: ", objItem.Parameters
    print "PNP Device ID: ", objItem.PNPDeviceID
    print "Port Name: ", objItem.PortName
    z = objItem.PowerManagementCapabilities
    if z is None:
        a = 1
    else:
        for x in z:
            print "Power Management Capabilities: ", x
    print "Power Management Supported: ", objItem.PowerManagementSupported
    z = objItem.PrinterPaperNames
    if z is None:
        a = 1
    else:
        for x in z:
            print "Printer Paper Names: ", x
    print "Printer State: ", objItem.PrinterState
    print "Printer Status: ", objItem.PrinterStatus
    print "Print Job Data Type: ", objItem.PrintJobDataType
    print "Print Processor: ", objItem.PrintProcessor
    print "Priority: ", objItem.Priority
    print "Published: ", objItem.Published
    print "Queued: ", objItem.Queued
    print "Raw Only: ", objItem.RawOnly
    print "Separator File: ", objItem.SeparatorFile
    print "Server Name: ", objItem.ServerName
    print "Shared: ", objItem.Shared
    print "Share Name: ", objItem.ShareName
    print "Spool Enabled: ", objItem.SpoolEnabled
    print "Start Time: ", objItem.StartTime
    print "Status: ", objItem.Status
    print "Status Info: ", objItem.StatusInfo
    print "System Creation Class Name: ", objItem.SystemCreationClassName
    print "System Name: ", objItem.SystemName
    print "Time Of Last Reset: ", objItem.TimeOfLastReset
    print "Until Time: ", objItem.UntilTime
    print "Vertical Resolution: ", objItem.VerticalResolution
    print "Work Offline: ", objItem.WorkOffline
    print "-------------------------------------------------------"

List printer capabilities

#Lists properties and capabilities for all the printers installed on a computer.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_PrinterConfiguration")
for objItem in colItems:
    print "Bits Per Pel: ", objItem.BitsPerPel
    print "Caption: ", objItem.Caption
    print "Collate: ", objItem.Collate
    print "Color: ", objItem.Color
    print "Copies: ", objItem.Copies
    print "Description: ", objItem.Description
    print "Device Name: ", objItem.DeviceName
    print "Display Flags: ", objItem.DisplayFlags
    print "Display Frequency: ", objItem.DisplayFrequency
    print "Dither Type: ", objItem.DitherType
    print "Driver Version: ", objItem.DriverVersion
    print "Duplex: ", objItem.Duplex
    print "Form Name: ", objItem.FormName
    print "Horizontal Resolution: ", objItem.HorizontalResolution
    print "ICM Intent: ", objItem.ICMIntent
    print "ICM Method: ", objItem.ICMMethod
    print "Log Pixels: ", objItem.LogPixels
    print "Media Type: ", objItem.MediaType
    print "Name: ", objItem.Name
    print "Orientation: ", objItem.Orientation
    print "Paper Length: ", objItem.PaperLength
    print "Paper Size: ", objItem.PaperSize
    print "Paper Width: ", objItem.PaperWidth
    print "Pels Height: ", objItem.PelsHeight
    print "Pels Width: ", objItem.PelsWidth
    print "Print Quality: ", objItem.PrintQuality
    print "Scale: ", objItem.Scale
    print "Setting ID: ", objItem.SettingID
    print "Specification Version: ", objItem.SpecificationVersion
    print "TT Option: ", objItem.TTOption
    print "Vertical Resolution: ", objItem.VerticalResolution
    print "X Resolution: ", objItem.XResolution
    print "Y Resolution: ", objItem.YResolution
    print "---------------------------------------------------"

List print job infos

#Returns information for each print job on a computer.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_PrintJob")
for objItem in colItems:
    print "Caption: ", objItem.Caption
    print "Data Type: ", objItem.DataType
    print "Description: ", objItem.Description
    print "Document: ", objItem.Document
    print "Driver Name: ", objItem.DriverName
    print "Elapsed Time: ", objItem.ElapsedTime
    print "Host Print Queue: ", objItem.HostPrintQueue
    print "Install Date: ", objItem.InstallDate
    print "Job Id: ", objItem.JobId
    print "Job Status: ", objItem.JobStatus
    print "Name: ", objItem.Name
    print "Notify: ", objItem.Notify
    print "Owner: ", objItem.Owner
    print "Pages Printed: ", objItem.PagesPrinted
    print "Parameters: ", objItem.Parameters
    print "Print Processor: ", objItem.PrintProcessor
    print "Priority: ", objItem.Priority
    print "Size: ", objItem.Size
    print "Start Time: ", objItem.StartTime
    print "Status: ", objItem.Status
    print "Status Mask: ", objItem.StatusMask
    print "Time Submitted: ", objItem.TimeSubmitted
    print "Total Pages: ", objItem.TotalPages
    print "Until Time: ", objItem.UntilTime

Automating Windows Media Player

I found this Windows Media Player example on a website:

You can automate  Microsoft Media Player with win32com without
starting the GUI.This example opens and plays some media files:

# this program will play MP3, WMA, MID, WAV files via the WindowsMediaPlayer
from win32com.client import Dispatch
mp = Dispatch("WMPlayer.OCX")
# use an mp3 file you have ...
#tune = mp.newMedia("C:/Program Files/Common Files/HP/Memories Disc/2.0/audio/Swing.mp3")
# or copy one to the working folder ...
#tune = mp.newMedia("Bier1.mp3")

# you can also play wma files, this cool sound came with XP ...
tune = mp.newMedia("C:/WINDOWS/system32/oobe/images/title.wma")
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
# to stop playing use
raw_input("Press Enter to stop playing")

mp.controls.stop()