- - PR -
VB.Net メールボックス作成
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-15 17:49
いつもお世話になっております。
VB6.0 から VB.Net2003 にバージョンアップしたもので、 Active Directory にユーザーを追加し、 Exchange サーバにメールボックスを作成する処理を行っているところなのですが。 Dim adsUser As ActiveDs.IADsUser Dim objMailbox As CDOEXM.IMailboxStore Dim gstrMailboxStore As String gstrMailboxStore = "LDAP://" + Servername + _ ・・・(長いので略) (中略:adsUser.EmailAddress 等セット) adsUser.AccountDisabled = False adsUser.SetInfo() objMailbox = adsUser objMailbox.CreateMailbox(gstrMailboxStore) adsUser.SetInfo() 以上のような処理を行っております。 objMailbox = adsUser のところで、VB6.0では objMailbox の値が変わったのですが、 VB.Net では Nothing のまま変わらず、メールボックスが作成されませんでした。 .Netでは以上のような感じでは駄目なのでしょうか? 別のサンプルを参考にもう一度組みなおしたほうが良いかとも思うのですが、 できるだけ変換されたコードをそのまま使えたらと思い、相談させていただきました。 宜しくお願いします。 | ||||||||
|
投稿日時: 2006-03-15 18:27
こんにちは。
あい昧な答え方ですが、
この部分で adsUser を IMailboxStore型にキャストしてやれば通る気がします。 | ||||||||
|
投稿日時: 2006-03-16 10:54
ueさん、ご回答ありがとうございます。
objMailbox = CType(adsUser, CDOEXM.IMailboxStore) objMailbox = DirectCast(adsUser, CDOEXM.IMailboxStore) をそれぞれ試してみましたが、Err.Number=13(型が違う)のエラーとなりました。 日本語ページのみでyahoo検索して調べていたのですが、 IMailboxStore についての説明しているサイトがほとんどないので、 これから辞書片手に、海外のサイトも見て回ろうかと思います。 また何かヒントになりそうなものをいただけたら幸いです。 | ||||||||
|
投稿日時: 2006-03-16 11:01
現状、実行できていることを考えると遅延バインディングになっているっぽいので、 明示的にキャストしても結果は変わらないでしょう。 adsUser インスタンスの状態自体がまずいようにも考えられるのですが、 とりあえず、objMailbox の型を教えてください。> art さん _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-16 12:12
じゃんぬねっとさん、ご回答ありがとうございます。
objMailBoxの型は書いてあるとおり、「CDOEXM.IMailboxStore」です。 ただし、 objMailBox = New CDOEXM.IMailboxStore のようにはできませんでした。(コンパイルエラーになります) > adsUser インスタンスの状態自体がまずいようにも考えられるのですが、 これはたしかに気になっている点ではあります。 ただ、VB6.0と同様に各インスタンスに値をセットできているので、 ひとまず問題はなさそうと思っています。 | ||||||||
|
投稿日時: 2006-03-16 12:33
ごめんなさい... 見てませんでした。
objMailBox.CreateMailBox([CNStrings]) です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-16 13:26
じゃんぬねっとさん、ご回答ありがとうございます。
> objMailBox.CreateMailBox([CNStrings]) これは objMailbox.CreateMailbox(gstrMailboxStore) で行っておりますが、その前行の objMailbox = adsUser で、objMailbox が Nothing のままなため、このまま実行すると、 Err.Number=91(オブジェクト参照がオブジェクトインスタンスに設定されていません。)のエラーになります。 処理の流れのイメージとしては、 (1)ActiveDirectoryにユーザ追加 (2)追加したユーザ情報を、これから追加するメールボックスのユーザ情報としてセット (3)メールボックス追加処理 といった感じだと思います。 また、(1)でActiveDirectoryにユーザが追加されているのは、 「objMailbox = adsUser」の前にブレークを貼って確認しています。 | ||||||||
|
投稿日時: 2006-03-16 13:32
ueです。
じゃんぬねっとさんフォローありがとうございます。 artさん、こちらの [Here is my VB.NET Code that works] から始まる発言に VB.net のコードがあります。ヒントになるかもしれません。 http://www.dotnet247.com/247reference/msgs/18/92050.aspx GetObject 関数がミソなんでしょうか。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vblr7/html/vafctgetobject.asp |