Jump to content
storme

Compress PST (MS Outlook) files

Recommended Posts

storme

G'day all

I'm trying to update this script so it works with Office 2007 and hopfully 2010.

I've modified it so that it'll find mlcfg32.cpl instead of hard coding it.

BUT when I get to the main screen it used to have a standard listview containing the list of files but it's been changed and I can't access it anymore. :graduated:

I've added a message box to stop the script before the faulty section.

If anyone has a method of getting access to the list and can tell me what the control is, then this script can be usefull again. ;)

(I can't get the AUTOIT tag to work on the forum... the window comes up but the OK/cancel buttons don't work.

<autoit>

#include <GUIListView.au3>

;~ BlockInput(1)

SplashTextOn("Compacting now", "This may take hours...", 250, 40)

;//Runs the mail application that is in control panel.

$Path = FileGetShortName(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls","mlcfg32.cpl"))

Run(@SystemDir & "\control.exe " & $Path)

Opt("WinTitleMatchMode", 4)

WinWait("Mail Setup - Outlook","Setup e-mail accounts and dire")

ControlClick("Mail Setup - Outlook","Setup e-mail accounts and dire","Button2")

WinWait("Account Settings","AcctMgr Tab")

;//Gets list of data files listed

$sTitle = "Account Settings"

$hWnd = WinGetHandle($sTitle)

If @error Then

MsgBox(0,"Error","Unable to find window")

EndIf

WinActivate($hWnd)

MsgBox(0,"ERROR", "Everything works till here" & @CR & "But the controls have changed so I can't get thie listview")

$hlist = ControlGetHandle($hWnd, "", "SysListView321")

If @error Then Exit

$arraycount = _GUICtrlListView_GetItemCount($hlist)

Local $ltext[$arraycount]

$i = 0

Do

$ltext[$i] = _GUICtrlListView_GetItemText($hlist, $i)

$i = $i + 1

Until $i = $arraycount

_ArrayDisplay($ltext)

Exit

;//Goes into each listed Data file and compresses them

$b = 0

Do

_GUICtrlListView_ClickItem($hlist, $b, "left", False, 2)

Sleep(1000)

ControlClick("Personal Folders", "", "[CLASS:Button; INSTANCE:2]") ; click Compact Now

Sleep(1200)

If WinExists("Compact Now") Then WinWaitClose("Compact Now")

WinClose("Personal Folders")

$b = $b + 1

Until $b = $arraycount

WinClose("Outlook Data Files")

WinClose("Mail Setup")

;~ BlockInput(0)

<\autoit>

Thanks for the help!

John

Share this post


Link to post
Share on other sites
taietel

storme, I have modified this line:

$hlist = ControlGetHandle($hWnd, "", "SysListView321")

with this:

$hlist = ControlGetHandle($hWnd, "", "[CLASS:SysListView32; INSTANCE:2]")

and I can get the values into array.

See if it works for you.

Regards,

taietel

[edit] There are changes also in the last part of the script, if you want it with Outlook 2010:

#include <GUIListView.au3>
SplashTextOn("Compacting now", "This may take hours...", 250, 40)
;//Runs the mail application that is in control panel.
$Path = FileGetShortName(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls", "mlcfg32.cpl"))
Run(@SystemDir & "\control.exe " & $Path)
Opt("WinTitleMatchMode", 4)
WinWait("Mail Setup - Outlook", "Setup e-mail accounts and dire")
ControlClick("Mail Setup - Outlook", "Setup e-mail accounts and dire", "Button2")
WinWait("Account Settings", "AcctMgr Tab")
;//Gets list of data files listed
$sTitle = "Account Settings"
$hWnd = WinGetHandle($sTitle)
If @error Then
 MsgBox(0, "Error", "Unable to find window")
EndIf
WinActivate($hWnd)
$hlist = ControlGetHandle($hWnd, "", "[CLASS:SysListView32; INSTANCE:2]")
If @error Then Exit
$arraycount = _GUICtrlListView_GetItemCount($hlist)
Local $ltext[$arraycount]
$i = 0
Do
 $ltext[$i] = _GUICtrlListView_GetItemText($hlist, $i)
 $i = $i + 1
Until $i = $arraycount
;//Goes into each listed Data file and compresses them
$b = 0
Do
 _GUICtrlListView_ClickItem($hlist, $b, "left", False, 2)
 Sleep(1000)
 WinWaitActive("Outlook Data File")
 ControlClick("Outlook Data File", "", "[CLASS:Button; INSTANCE:2]") ; click Compact Now
 Sleep(1200)
 If WinExists("Compact Now") Then WinWaitClose("Compact Now")
 WinClose("Outlook Data File")
 $b = $b + 1
Until $b = $arraycount
WinClose("Outlook Data Files")
WinClose("Account Settings")
WinClose("Mail Setup - Outlook")
SplashOff()
MsgBox(64, "Outlook", "All accounts were processed." & @CRLF & "Closing in 5 seconds...", 5)
Exit
Edited by taietel

Share this post


Link to post
Share on other sites
Eliezer

<snip>

Edited by Melba23
Advertising removed

Share this post


Link to post
Share on other sites
water

Advertising commercial products isn't allowed here.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-01-27 - Version 1.3.3.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
Melba23

Eliezer,

We do not accept adverts for payware - please do not do it again. :naughty:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
water

Advertising commercial products isn't allowed here.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-01-27 - Version 1.3.3.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×