DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ショートカットからアプリを起動

環境/言語:[win7 VB.NET Framework4.0]
分類:[.NET]

初めて投稿させていただきます。

いつもいろいろと参考させていただいています。
さっそく質問させていただきます。

こちらのサイトを参考にさせていただいて、指定のブラウザ(chrome)で指定のURLを開くことはできました。
さらに踏み込んで以下のことをやりたいと思ってます。

Chromeのユーザデータディレクトリを指定して指定のURLを開く。
試みとして以下を試してみましたができませんでした。

デスクトップにショートカットを作成し、そのリンク先の中にユーザディレクトリをの指定を埋め込んでショートカットを起動する。

上の方法ですと、ショートカットから起動するとユーザディレクトリを指定して起動はできるのですが、Process.Startでショートカットを指定してもChromeを起動できませんでした。(実行ファイルじゃないから当然かもしれませんが・・・)

このように、ディスクトップ上のショートカットからブラウザを開く方法はあるのでしょうか?
もしくは、Process.Startのコマンドでユーザディレクトリの指定をできるような方法はあるのでしょうか?

もし、知っている方がいましたらご教授お願いします。
> 上の方法ですと、ショートカットから起動するとユーザディレクトリを指定して起動はできるのですが、Process.Startでショートカットを指定してもChromeを起動できませんでした。(実行ファイルじゃないから当然かもしれませんが・・・)

  ショートカットを指定して実行できますので、どのように書いたか
  その部分のコードを掲載して下さい。

以上。
>>オショウさん

デスクトップにあるchrome.exeというショートカットを実行しようとしたとき

Process.Start("C:\Users\ユーザ名\Desktop\chrome.exe")

というコードを入れたところ、同箇所でWin32Exceptionのエラーが発生しました。

以上、よろしくお願いします。

■No30162に返信(オショウさんの記事)
>>上の方法ですと、ショートカットから起動するとユーザディレクトリを指定して起動はできるのですが、Process.Startでショートカットを指定してもChromeを起動できませんでした。(実行ファイルじゃないから当然かもしれませんが・・・)
>
>   ショートカットを指定して実行できますので、どのように書いたか
>   その部分のコードを掲載して下さい。
>
> 以上。
"chrome.exe"と言う名前を付けたショートカットなら、そのショートカットのファイル名は"chrome.exe.lnk"になります。
■No30164に返信(jijiさんの記事)
> "chrome.exe"と言う名前を付けたショートカットなら、そのショートカットのファイル名は"chrome.exe.lnk"になります。

>>jijiさん

返信ありがとうございます。
Process.Start("C:\Users\ユーザ名\Desktop\chrome.exe.lnk")
にしたところ、起動することができました。
しかし問題も発生しました。
Startの第二引数としてURLを入れてやったところ、URLを指定して起動しなくなりました。
ショートカットから起動した場合はURLの指定はできなくなってしまうのでしょうか?


Dim strF AS String "http://www.yahoo.co.jp"

Process.Start("chrome.exe", strF)
↑の場合はアドレス指定で起動できる

Process.Start("C:\Users\ユーザ名\Desktop\chrome.exe.lnk", strF)
↑の場合はアドレス指定できず、デフォルトのサイトが開かれる。
> しかし問題も発生しました。
> Startの第二引数としてURLを入れてやったところ、URLを指定して起動しなくなりました。
> ショートカットから起動した場合はURLの指定はできなくなってしまうのでしょうか?

  ショートカットの中身が優先されますので、起動したいURLを
  設定したショートカットを作成し、そのショートカットを起動す
  ると言うことですネ!

以上。
■No30165に返信(voidさんの記事)

WScript.Shell
CreateShortCut
TargetPath
でショートカットの情報を取得して
起動するというやり方も一応あります。
>>オショウさん

返答ありがとうございます。
プログラムからURLを取得するような構造なのでその方法はちょっと難しいですね。

>>shuさん

返答ありがとうございます。
この方法を調べてみたいと思います。

■No30177に返信(shuさんの記事)
> ■No30165に返信(voidさんの記事)
>
> WScript.Shell
> CreateShortCut
> TargetPath
> でショートカットの情報を取得して
> 起動するというやり方も一応あります。
>
shuさんのやり方でURLを含めたショートカットを作成し、Process.Startでそのショートカットを実行することで、私のやりたいことが完全に実装できました。

Const REG_DESKTOP = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop"
Dim objWshShell
objWshShell = CreateObject("WScript.Shell")
Dim strF As String = "http://www.yahoo.co.jp"
Dim objShortcut
objShortcut = objWshShell.CreateShortcut(objWshShell.RegRead(REG_DESKTOP) & "\chrome.exe.lnk") 'コマンド・プロンプト.lnkのショートカットを取得
With objShortcut
.TargetPath = "C:\Users\ユーザ名\AppData\Local\Google\Chrome\Application\chrome.exe" '起動パス
.Arguments = strF & "&1332825704433 --user-data-dir=""C:\Users\ユーザ名\AppData\Local\Google\Chrome\User Data""" '引数
.WorkingDirectory = "C:\Users\ユーザ名\AppData\Local\Google\Chrome\Application" '作業ディレクトリ=初期カレント・ディレクトリ
.Save() 'ショートカットを保存(新規作成)
End With

objShortcut = Nothing
objWshShell = Nothing

Process.Start("C:\Users\ユーザ名\Desktop\chrome.lnk")

返答くださった皆様、本当にありがとうございました。
以上で〆させていただきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板