OS:Windows 98 Second Edition
タスクバーの「スタート」→「プログラム」→「スタートアップ」という項目で、ここへパソコン起動時に自動起動させたいアプリケーションやそのショートカットを配置しておけば、自動的に起動してくれますが、このフォルダはWindowsでどのように定義されているのですか? (Windowsのバージョンによって使用で着たり使用できなかったりというのがありますか? また、レジストリなどで「スタートアップ」フォルダの機能を果たすフォルダ名などが登録されているのでしょうか?)
VBとは、直接的な関係がなくて申し訳ありませんが、ご教授よろしくお願いします。
APIのSHGetSpecialFolderLocationとSHGetPathFromIDListで
スタートアップのパスを取得できますよ。
Win95以上ならスタートアップはあったと思います。
Win3.1は覚えてません。
一応ソース載せときますね。
Option Explicit
'SHGetSpecialFolderLocation=>特殊フォルダの位置を取得する
'<引数>
'hWndOwner:ウインドウのハンドル
'nFolder:定数(CSIDL_××参照)
'ppidl:IDが入る変数
'<戻り値>
'正常終了0
Private Declare Function SHGetSpecialFolderLocation Lib "SHELL32" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
ppidl As Long) As Long
'SHGetPathFromIDList=>特殊フォルダのIDをパスに変換する
'<引数>
'pIDL :特殊フォルダのID
'pszPath:パス名を格納するバッファ
'<戻り値>
'正常終了0
Private Declare Function SHGetPathFromIDList Lib "SHELL32" _
(ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Const CSIDL_STARTUP = &H7 '[スタートアップ]
Private Sub Command1_Click()
Dim lngRet As Long '戻り値
Dim ID As Long 'フォルダのID
Dim strPath As String '取得したパス名を格納する変数
'特殊フォルダの位置(ID)を取得する
lngRet = SHGetSpecialFolderLocation(ByVal Me.hWnd, ByVal CSIDL_STARTUP, ID)
'バッファを確保
strPath = String$(256, vbNullChar)
'IDからパス名へ変換する
lngRet = SHGetPathFromIDList(ID, strPath)
If strPath <> vbNullString Then
Text1.Text = Left$(strPath, InStr(strPath, vbNullChar) - 1)
End If
End Sub
レジストリはわかりません。
コード例までいただいて、丁寧なお返事、どうもありがとうございます。おかげで取得できました。
ツイート | ![]() |