こんにちは、生まれて初めてVBの質問するので緊張しています。
今、文書ファイルを扱うアプリを開発しているのですが
どうしてもフォルダの共有化がうまくいきません。
現在、APIの「NetShareAdd」を使って、NT・XPにはうまく共有化
されるのですが、98・MEには動作しません。
あるHPでは、「OSを判断して98・MEの場合は、NetShareAddとは
別のAPIを使えばよい」とまでは書いてあったのですが、肝心なAPIが
書かれていませんでした。
どうか、私に力を貸して下さい。こころよりお願い致します。m_ _m
Declare Function NetShareAdd Lib "svrapi" (servername As String,ByVal level As Long,buf As Byte,parm_err As Long) As Long
でいきませんか?
DotLさん、返事が遅れてすみませんでした。本当にありがとうござます。
さて共有化の件ですが、98環境でAPIの宣言で"svrapi"を使ってみたのですが
これって、宣言だけ変えても意味ないですよねー?エラーでした。(^c^;)
私のは下に書きましたが、全部、本に書いてあったものです。
もしかして使わない方がいいのでは?(+_+;)
ただ、98.MEとNT.XPは、「DLL」が違う事だけは知っているのですが…。
DotLさん、どうか、なにとぞ、どこをどう変えたらいいのか教えて下さい。
お願いします。m(ф)m
Declare Function NetShareAdd Lib "netapi32.dll" (ByVal servername As String, ByVal level As Long, buf As Any, parm_err As Long) As Long
'共有情報
Type SHARE_INFO_2
shi2_netname As Long
shi2_type As Long
shi2_remark As Long
shi2_permissions As Long
shi2_max_uses As Long
shi2_current_uses As Long
shi2_path As Long
shi2_passwd As Long
End Type
Public Const STYPE_DISKTREE = 0
'------------------------------------------------------------
Dim strServerName As String
Dim udtShareInfo2 As SHARE_INFO_2
Dim lngReturn As Long
Dim lngParmErr As Long
'サーバ名を設定(空文字の場合はローカルコンピュータ)
strServerName = StrConv("", vbUnicode)
'共有情報を設定
With udtShareInfo2
'共有名
.shi2_netname = StrPtr("NOTHING")
.shi2_type = STYPE_DISKTREE
'コメント
.shi2_remark = StrPtr("")
.shi2_permissions = 0
.shi2_max_uses = 7
.shi2_current_uses = 0
.shi2_path = StrPtr(App.Path)
.shi2_passwd = StrPtr("")
End With
'指定したリソースを共有
lngReturn = NetShareAdd(strServerName, _
2, _
udtShareInfo2, _ -----①
lngParmErr)
If lngReturn = NERR_Success Then
MsgBox "共有化に成功しました", _
vbInformation
Else
MsgBox "共有化に失敗しました", _
vbExclamation
End If
DLLが見つからないエラーはでないと思います。
一部違ってましたが、98は
Declare Function NetShareAdd Lib "svrapi" (ByVal servername As String, ByVal level As Long, buf As Any, parm_err As Long) As Long
でいきました。ただ共有化失敗してしまうエラーのほうでしたらちょっと分かりません。(すみません。)
こんにちは、DotLさん。お手数かけます。m_ _m
DotLさんのお陰で、新たに "svrapi" 文のところだけを書き換えましたら
「ファイルが見つかりません」のメッセージは、なくなりました。
ありがとうございます。
ただ、やはり「共有化に失敗しました」となります。
DotLさん、最後に1つだけ質問させて下さい。
もし、このフォルダが共有化されているかどうか調べることってできます?
やっぱり、これもOSで違うんでしょうか?
勝手なことばかりですみません。お願いします。
定かではありませんが、指定したサーバがすでに使用されていると、関数は2018を返します。
おそらくNetShareAddは123を返していませんか?
サーバー名やパラメータの文字列によるエラーです。
早速、お返事ありがとうございました。
OSに対応したフォルダの共有化は、もう少しテストしながらじっくり
やって行こうと思います。
また、lngReturn の返しは「XP」では、成功 = "0" 失敗 = "2118" でした。
これも、別のOSごとにチェックして行こうと思います。
DotLさん、ここ何日かのお付き合い、本当にありがとうございました。
また、ひょっこり伺いますので、その時はまたよろしくお願いします。
それじゃ、また…。m_ _m NOTHINGより
ツイート | ![]() |