wsfda 发表于 2011-1-17 20:28:33

【已解决】au3如何获取outlook当前使用的pst的位置?

本帖最后由 wsfda 于 2011-5-7 18:16 编辑

各位大哥!小弟这里拜托大家了,请问au3如何获取outlook当前使用的pst的位置?请问可以使用注册表吗?还是有其他的方法,实在想不出,请大家帮帮忙吧?或者使用批处理行吗?
谢谢各位了!

wsfda 发表于 2011-1-18 10:15:50

我在作品展览里面看见了一个大哥写的用户文件备份工具,但是不知道他怎么获取outlook邮件存储位置的,因为每个人的邮件储存位置可能不一样,有人改到D、E盘去了

kodin 发表于 2011-1-18 10:52:41

注册表吧,仅供参考。

smartzbs 发表于 2011-1-18 11:35:23

#include <Array.au3>

$asPSTPath = _GetPSTPath()

If IsArray($asPSTPath) Then _ArrayDisplay($asPSTPath)

Func _GetPSTPath()
    Local $sFolderSubString, $sPath, $asPathSearch, $sReturn
    Local $oOutlook = ObjCreate("Outlook.Application")
    Local $oNS = $oOutlook.GetNamespace("MAPI")

    If IsObj($oNS) Then
      For $objFolder In $oNS.Folders
            $sPath = ""
            For $i = 1 To StringLen($objFolder.StoreID) Step 2
                $sFolderSubString = StringMid($objFolder.StoreID, $i, 2)
                If $sFolderSubString <> "00" Then $sPath &= Chr(Dec($sFolderSubString))
            Next

            $asPathSearch = StringRegExp($sPath, "(?i)\w(:\\|\\\\)\w.*", 2)

            If IsArray($asPathSearch) Then $sReturn &= $asPathSearch & Chr(28)
      Next
      Return StringSplit(StringTrimRight($sReturn, 1), Chr(28))
    Else
      SetError(1)
      Return 0
    EndIf
EndFunc

wsfda 发表于 2011-1-18 17:43:07

非常感谢你的回复,我先研究下,由衷的感谢!!!

wsfda 发表于 2011-1-18 18:37:55

大概都看懂了,查了很多资料,真的太谢谢你了,但是技术实在有限,数组返回后,如何把数组的内容使用变量来显示呢?谢谢帮忙,真的由衷的感谢!
我自己也在继续努力去尝试,但是还是希望您能提供方法来转换,谢谢

小A 发表于 2011-1-18 19:54:41

回复 6# wsfda


    #include <Array.au3>
$asPSTPath = _GetPSTPath()

If $asPSTPath > 1 Then MsgBox(0,'',$asPSTPath) ;路径 1
If $asPSTPath > 2 Then MsgBox(0,'',$asPSTPath) ;路径 2
If $asPSTPath >= 3 Then MsgBox(0,'',$asPSTPath) ;路径 3

;If IsArray($asPSTPath) Then _ArrayDisplay($asPSTPath)

Func _GetPSTPath()
       
    Local $sFolderSubString, $sPath, $asPathSearch, $sReturn
       
    Local $oOutlook = ObjCreate("Outlook.Application")
       
    Local $oNS = $oOutlook.GetNamespace("MAPI")

    If IsObj($oNS) Then
               
      For $objFolder In $oNS.Folders
                       
            $sPath = ""
                       
            For $i = 1 To StringLen($objFolder.StoreID) Step 2
                               
                $sFolderSubString = StringMid($objFolder.StoreID, $i, 2)
                               
                If $sFolderSubString <> "00" Then $sPath &= Chr(Dec($sFolderSubString))
                       
                        Next

            $asPathSearch = StringRegExp($sPath, "(?i)\w(:\\|\\\\)\w.*", 2)

            If IsArray($asPathSearch) Then $sReturn &= $asPathSearch & Chr(28)
                       
        Next
       
      Return StringSplit(StringTrimRight($sReturn, 1), Chr(28))
               
    Else
               
      SetError(1)
               
      Return 0
               
    EndIf
       
EndFunc

wsfda 发表于 2011-1-19 10:17:38

非常给力的代码,谢谢A哥,以后好好学习

wsfda 发表于 2011-1-23 15:42:13

小弟还有一事请求,获得outlook Express的数据库路径呢,好像和office outlook是不一样的,
帮帮忙,十分感谢各位了

wsfda 发表于 2011-1-26 11:55:14

嘿嘿,OE的好像注册表里就有,

heruowen 发表于 2014-1-4 11:15:40

我也想了解这个

cm84n7281 发表于 2016-5-10 13:00:06

我测试了一下,非常给你。感谢共享!我在问一个问题,如何知道outlook邮箱的版本和安装路径。

cm84n7281 发表于 2016-5-16 13:04:05

@小A:你写的代码为什么在有的机器是可以获得到PST安装位置路径,有的不行。

salaminder 发表于 2018-8-15 13:50:34

本来也想分享的,但是看到前面几位已经分享出来了{:face (72):}
页: [1]
查看完整版本: 【已解决】au3如何获取outlook当前使用的pst的位置?