With the help of Dropbox, you can easily print files from mobile phones. This is the VBS code that makes it happen – it watches your Print Queue folder in Dropbox and sends it to the default printer as soon as it discovers a new file in that watched folder.
'Remote Printing through Dropbox 'Written by Amit Agarwal http://www.labnol.org/ Option Explicit On Error Resume Next Const WAIT_TIME = 5000 '5 seconds Const PRINT_TIME = 5000 '5 seconds Dim WshShell, fso, configFile, objReadFile, str64, strPath, ApplicationData Dim dbWatchDir, attFolder, objShell, objFolder, colItems, objItem, dbLogDir, logFolder, doneFolder Set WshShell = CreateObject("Wscript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") ApplicationData = WshShell.ExpandEnvironmentStrings("%APPDATA%") 'Find the Dropbox Folder Location configFile = ApplicationData & "\Dropbox\host.db" If fso.FileExists( configFile ) Then Set objReadFile = fso.OpenTextFile( configFile, 1) Do Until objReadFile.AtEndOfStream str64 = objReadFile.ReadLine Loop strPath = Base64Decode(str64) 'WScript.Echo "Your Dropbox folder is located at " & strPath Else WScript.Echo "Looks like Dropbox is not installed on this computer." & VbCrLf & "Please install Dropbox and run this script again." WScript.Quit() End If dbWatchDir = strPath & "\Attachments" If Not fso.FolderExists (dbWatchDir) Then Set attFolder = fso.CreateFolder (dbWatchDir) WScript.Echo "Created a folder to hold your new print jobs - " & dbWatchDir End If dbLogDir = dbWatchDir & "\Print_Log" If Not fso.FolderExists (dbLogDir) Then Set logFolder = fso.CreateFolder (dbLogDir) WScript.Echo "Created a folder to hold processed jobs - " & dbLogDir End If Do While True Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(dbWatchDir) Set colItems = objFolder.Items doneFolder = dbLogDir & "\" & DateDiff("s", "1/1/2010", Now) For Each objItem in colItems If Not objItem.IsFolder Then If Not fso.FolderExists (doneFolder) Then Set logFolder = fso.CreateFolder (doneFolder) WScript.Echo "Created a folder to save processed jobs - " & doneFolder End If objItem.InvokeVerbEx("Print") WScript.Echo "Now printing: " & objItem.Name WScript.Sleep(PRINT_TIME) fso.MoveFile dbWatchDir & "\" & objItem.Name & "*", doneFolder end if Next WScript.Sleep(WAIT_TIME) Set objShell = nothing Set objFolder = nothing Set colItems = nothing Loop ' Decodes a base-64 encoded string (BSTR type). ' 1999 - 2004 Antonin Foller, http://www.motobit.com Function Base64Decode(ByVal base64String) Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" Dim dataLength, sOut, groupBegin base64String = Replace(base64String, vbCrLf, "") base64String = Replace(base64String, vbTab, "") base64String = Replace(base64String, " ", "") dataLength = Len(base64String) If dataLength Mod 4 <> 0 Then Err.Raise 1, "Base64Decode", "Bad Base64 string." Exit Function End If For groupBegin = 1 To dataLength Step 4 Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut numDataBytes = 3 nGroup = 0 For CharCounter = 0 To 3 thisChar = Mid(base64String, groupBegin + CharCounter, 1) If thisChar = "=" Then numDataBytes = numDataBytes - 1 thisData = 0 Else thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1 End If If thisData = -1 Then Err.Raise 2, "Base64Decode", "Bad character In Base64 string." Exit Function End If nGroup = 64 * nGroup + thisData Next nGroup = Hex(nGroup) nGroup = String(6 - Len(nGroup), "0") & nGroup pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _ Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _ Chr(CByte("&H" & Mid(nGroup, 5, 2))) sOut = sOut & Left(pOut, numDataBytes) Next Base64Decode = sOut End Function