• 締切済み

EXPLORERからフォルダショートカットを正しく起動させる方法。

いつもお世話になっております。 空のフォルダtestを作成し、そのショートカットを作ります。 それをVB/VBAよりEXPLORERにて開こうとしています。 下記内容にて記述。 ShellExecute(0, "Open", "EXPLORER.EXE", "/n,/e,C:\test.lnk", " ", SW_SHOW) しかしながら「ファイルのダウンロード、セキュリティーの警告」と言うメッセージが出てしまいます。その後は正常です。 そこで、このメッセージを無くしたいと考えています。 パラメータなどがあるのではないかと思っていますが、ご存知の方宜しくお願い致します。 環境:VB6.0 VBA-Excel2000/2003

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。KenKen_SP です。 > 只今ショートカットからリンク先を取得して... その後どうなりましたか? API で取得関数があるかな...と思いましたが、どうも非常に難しいよう ですね。一応 LNK ファイルのフォーマットが非公式ながら公開されている ので、バイナリ解析によるパス取得関数は作れそうですよ。ただ、結構 面倒くさいので、やはり WSH を使うのが楽なんですよね。 > 条件としてWSHは使いたくなかったんです。 その理由も良かったら教えて下さい。

i_september
質問者

お礼

度々のご回答有難う御座います。 WSHを使いたくなかったのはユーザーにwin98/2000と 古いPCがあるためインストールの手間を省きたいからです。 別件で時間が取れなくなったため、取り敢えずはWSHを使って 以下の記述にて対応しています。 Set fs = CreateObject("Wscript.Shell") ’リンク先文字の取得 Set fsObj = fs.CreateShortcut("c:\test.lnk") Result = fs.Run(fsObj.TargetPath, 1) XP/2000であればマイコンピュータもマイネットワークも開きました。 参考になる情報ありましたら今後とも宜しくお願い申し上げます。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 直接フォルダを Shell で開けば良いだけな気がしますが.... Shell "explorer.exe " & Chr(34) & "C:\sample" & Chr(34), vbNormalFocus ショートカットを開く形にしたいなら、 ' Run strCommand, [intWindowStyle], [blnWaitOnReturn] CreateObject("Wscript.Shell").Run "C:\test.lnk", 1 てな感じでどうですか?

i_september
質問者

お礼

ご回答有難う御座います。 すみません、言い忘れました。 条件としてWSHは使いたくなかったんです。 只今ショートカットからリンク先を取得して shellで開こうかと考えています。

関連するQ&A

  • Acrobat Readerのショートカットが起動できません

    スタートメニュー内のショートカットを起動するアプリを作っているのですが「Acrobat Reader」と「MSN Messenger 6.1」のショートカットだけ起動してくれません。 他のアプリは起動できます。 起動はShellExecuteを使っています。 ShellExecute(m_hWnd, "open", "C:\\Documents and Settings\\All Users\\スタート メニュー\\プログラム\\Adobe Reader 6.0.lnk", NULL, NULL, SW_SHOW); ShellExecuteの戻り値は以下のようになっています。 SE_ERR_ACCESSDENIED : 「オペレーティングシステムが、指定されたファイルへのアクセスを拒否しました。」 エクスプローラでショートカットのプロパティを開いてみると、うまくいかないショートカットは他のショートカットのようにEXEファイルにリンクしているのではなく、何か別のものにリンクしているようです。 このタイプのショートカットの起動の方法を教えてください。 よろしくお願いします。

  • Visual basic6.0からショートカット(.lnk)を起動したい。

    Visual basic6.0からショートカット(.lnk)を起動したいと思っています。 "TEST.EXE"から"TEST.txtへのショートカット"のlnkファイルを作って、 VBからはこのショートカット側を指定して、TEST.EXEを起動させたいのですが、 出来ないことなのでしょうか? 宜しくお願い致します。

  • ショートカット(.lnk)

    外付けハード内のフォルダーが、すべてショートカット(.lnk)になってしまい、 開くことが出来なくなりました。 元に戻す方法を、教えてください。 リンク先は、「%windir%\system32\cmd.exe/c"start%cd%AdobeReader\DSCI3202.jpg-us&&%windir%\explorer.exe%cd%ファイル名」となっています。

  • NTのDドライブのショートカットエラー

    VB4(32BIT).EXE が あります。 NTのCドライブに入れ ショートカットを作成すると ちゃんと起動します。 これを Dドライブに入れます。 エクスプローラでクリックすると 起動しますが ショートカットだと起動しません。 何故でしょうか?

  • DOSからエクスプローラーを起動したときの復帰値

    コマンドプロンプトから explorer c:\z のようにパラメータ付でエクスプローラを起動した場合、 「パス'c:\z'は存在しないか、ディレクトリではありません。」 と警告のメッセージボックスが表示され起動できませんが、 echo %errorlevel% とすると0が帰ります(存在するパスで成功した場合も0が帰る)。 成功/失敗の判定を行うにはどのようにしたらよいでしょうか。 よろしくお願いします。

  • ShellExecuteのコマンドについて

    すみません、どなたか教えてください。 下記のコマンドですが、 ShellExecute(null,"open","cmd.exe","実行したいもの",NULL,SW_HIDE); "実行したいもの" の書き方なんですが、 "/c c:\\work\\test.bat" のように書くと、cmd.exeにtest.batを実行させることができたんですが、 実行したいtest.batが指定できず、変数でセットする場合の書き方が分かりません。 ShellExecute(null,"open","cmd.exe","/c c:\\work\\test.bat",NULL,SW_HIDE); ↓ ShellExecute(null,"open","cmd.exe","/c c:\\work\\ "" & 変数 & "",NULL,SW_HIDE); こんな感じだと思うのですが、変数をダブルクォーテーションで囲むときに、ダブルクォーテーションをいくつ重ねるのかが分かりません。ググっているのですが、どこを調べていいのか分からず、はまっています。どなかたアドバイスお願いします。C++です。

  • PATHを効かせてコマンド実行したい

    コンソールコンパイラランチャのアプリケーションを作っているのですが、 command.comの設定でつまずいてしまいました。 やりたいことは 1.コンパイラのパスを設定する 2.コンパイルコマンドをパラメータ付きで実行する の2ステップなんですが、ShellExecuteを使って別々なら出来るんですけど、 下記の方法では1.のパス設定が2回目のShellでは無効になってしまいます。 なにか良い方法はないでしょうか? ShellExecute(NULL,"open","command.com", "/c set PATH=%PATH%"+m_strCompPath,NULL,SW_SHOW); ShellExecute(NULL,"open","command.com", "/k "+CommandString,NULL,SW_SHOW); 環境はVC++6.0,MFCです。

  • ショートカットの右クリックエラーについて

    いろいろ調べて試行したつもりですが回復できません。どうかよろしくお願いします。 (1)ショートカットは正常に作成できます。 (2)作成したショートカットを右クリックするとエラーになります。 (3)すべてのショートカットで右クリックエラーになります。 (4)エラーメッセージは「問題が発生したためExplorerを終了します。」で、デバッグをクリックすると今度はdrntsw32.exe(MSのシステムプログラム:ワトソン博士)から同じメッセージが出ます。 (5)このエラーはデスクトップ上でも、Explorerで表示ファイルの状態 (xxxのショートカット.lnk) でも例外なく発生します。 (6)この症状は1ヶ月ほど前からで今からシステムの復元処理は難しい状態です。 (7)この症状についてMicrosoftを調べましたが検索の仕方が悪いのか どうしてもたどり着けません。 (8)導入アプリケーションの影響とも考えられますが、タスクマネージャーで怪しいものをつぶして見ましたが改善できません。 (9)私の環境は次の通りです。   ・Windows XP Home Edition SP2 CPU 2.8GHZ メモリ:1GB   ・なお、複雑でなければレジストリは何度か加工した経験はあり   ます。 ※どうか、よろしくお願いします。

  • VBAでフォルダを開く

    Excel2003で、VBAで指定フォルダを開く場合に myFol = "D:\aaa" Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus これで開きますが、環境変数HOMEを指定することはできないでしょうか?

  • VC++ で.bat起動

    また、こちらを使わせていただきます。 VC++で.batファイルを起動しようとしていますが、cmdはあくのですが、.batが起動しません。他の参考にしてますが、なかなかたどり着きません。どなたか、アドバイスお願いいたします。 .bat fileは次のとおりです。 cd\Program Files\Wireshark> tshark -i.2 greater 170 -a duration:2 -w.... tshark -v-r e:\Test\test5.pcap.... VC++は次のとおり void CStartupapplicationView::OnBnClickedButtontest() { //cmdは、ShellExecuteでも、CreateProcessでも開けられますが、 //bat fileの起動がうまくいきません。 HINSTANCE ret = ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files\\Wireshark",SW_SHOWNORMAL); ShellExecute(m_hWnd,"open","c:Program Files\\Wireshark\\test.bat",SW_SHOW); //.batファイルは、c:Program Files\Wiresharkの下に入っています。//が、.Batは起動しません。 if (ret <= (HINSTANCE)32) AfxMessageBox("can not Shell.",MB_OK); //別の方法 STARTUPINFO sinfo; PROCESS_INFORMATION pinfo; ZeroMemory(&sinfo,sizeof(STARTUPINFO)); ZeroMemory(&pinfo,sizeof(PROCESS_INFORMATION)); sinfo.cb=sizeof (STARTUPINFO); sinfo.dwFlags=STARTF_USESHOWWINDOW; sinfo.wShowWindow=SW_SHOWNORMAL; if(!CreateProcess(NULL,_T("cmd.exe c:\\test2.bat "), // test2.batは、Document and settings/----------- //Startup applicationの下にはいっていますが、起動しません。 NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)); {//起動失敗 } //

専門家に質問してみよう