Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" _
(ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
Me.hwnd, "explore", "C:\WINDOWS", "", "", 1&
'もしくは
'CreateObject("Shell.Application").Open CVar("C:\WINDOWS")
End Sub
上記の方法でフォルダーをVB6から開いています。ですが実際VBのアプリケーションはメタフレームを使い、サーバで動うごかし個々のPCで操作しているためなのか、サーバーのフォルダーを開けようとします。操作側の個々のPCのフォルダーを開きたいのですがどのようにすればよろしいでしょうか。
補足です。
ローカルで起動すると問題なく起動するのですが、サーバにUPしてメタフレームからフォルダーを開こうとすると下記のようなメッセージが表示されます。
ファイル'/e,/idlist,C\'(または構成ファイル)が見つかりません。パスおよびファイル名が正しいか、必要なライブラリがすべて利用可能か、確認してください。
簡単に説明すると下記のような関係です。
サーバ(VBのEXEはここに格納)
↑↓
メタフレーム
↑↓
操作するPC(このPCのフォルダーを開きたい)
サーバとかメタフレームとか関係なく…
あるコンピュータで動いてるEXEが『C:\のフォルダを開け!』って
命令受けたら自分のおなかの中のフォルダを開くのは当然に
思いますが?
自分以外のコンピュータのフォルダを開くなら、コンピュータ名から
指定してあげないと開きようが無いのでは?それを一般的には
ネットワークパスと呼んで、\\コンピュータ名\フォルダパス
の形になってますよねぇ?
メタフレームの場合、
CreateObject("Shell.Application").Open CVar("\\Client\C:\WINDOWS")
を試してみてください。
返答していいただきありがとうございます。
フォルダパスのところに \\コンピュータ名\フォルダパス で起動するとエラーメッセージは出ませんでしたが、フォルダも開かれずになにも起きませんでした。
そこでフォルダパスの箇所を \\IPアドレス\フォルダパス にしてみたのですが同じでなにも起きませんでした。
申し訳ないのですがご助力お願いします。
コボルさん返答ありがとうございます。
CreateObject("Shell.Application").Open CVar("\\Client\C:\WINDOWS")
を試してみたのですが、やはりサーバを探しにいってしまいます。
勘違いしてました。
アプリケーションを公開してるんですね。
Citrixへ問い合わせた方が良いと思います。
調査している時間が私にはないので悪しからず。
>コボル さん
>SETU さん
>CreateObject("Shell.Application").Open CVar("\\Client\C:\WINDOWS")
を試してみてください。
ではなく、
CreateObject("Shell.Application").Open CVar("\\Client\C$\WINDOWS")
で開けます。
ネットワーク共有をかけていないドライブにアクセスする場合は、
\\IP\ドライブ$\フォルダ
という形じゃないとダメみたいです。
日付を見るともう遅いようですが、未来に来るかも知れぬ誰かのためにレスです^^;
>誰かのためにレスです
nonameさん、お心遣い感謝です。
ツイート | ![]() |