Jump to content

Compress PST (MS Outlook) files


storme
 Share

Recommended Posts

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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • 2 years later...

Advertising commercial products isn't allowed here.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

  • Moderators

Eliezer,

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

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
Share on other sites

  • 2 years later...

Advertising commercial products isn't allowed here.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...