tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル同じフォルダなら一つだけ開く
記事No14539
投稿日: 2010/03/11(Thu) 11:56
投稿者こんどう
下のコードを実行すると、いくつも同じフォルダを表示しますが、同じフォルダが開いていれば
表示しない様にしたいのです。
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()
Call Shell("explorer " & "C:\tmp\", vbNormalFocus)
End Sub

[ツリー表示へ]
タイトルRe: 同じフォルダなら一つだけ開く
記事No14540
投稿日: 2010/03/11(Thu) 14:16
投稿者魔界の仮面弁士
> Private Declare Function ShellExecute Lib
ここで、API を宣言してはいますが、

> Private Sub Command1_Click()
>     Call Shell("explorer " & "C:\tmp\", vbNormalFocus)
> End Sub
その API が使われている様子がありませんが…。


> 同じフォルダが開いていれば表示しない様にしたいのです。
当方では、同じフォルダが複数開かれることは無く、
すでに開かれているフォルダがアクティブになるだけでした。

エクスプローラーの設定によるのかな…。

[ツリー表示へ]
タイトルRe^2: 同じフォルダなら一つだけ開く
記事No14541
投稿日: 2010/03/11(Thu) 16:02
投稿者スクリプトプログラマ
> > 同じフォルダが開いていれば表示しない様にしたいのです。
> 当方では、同じフォルダが複数開かれることは無く、
> すでに開かれているフォルダがアクティブになるだけでした。
>
> エクスプローラーの設定によるのかな…。

当方では複数開きました。

RunDll32.exe url.dll,FileProtocolHandler c:\temp
にすると一つでした。

[ツリー表示へ]
タイトルRe^3: 同じフォルダなら一つだけ開く
記事No14542
投稿日: 2010/03/11(Thu) 17:01
投稿者花ちゃん
> > エクスプローラーの設定によるのかな…。
>
> 当方では複数開きました。
>
> RunDll32.exe url.dll,FileProtocolHandler c:\temp
> にすると一つでした。

OS によるようです。
WindowsXP     複数開かない。
Windows Vista  複数開く(エクスプローラーの設定を変更しても変わらず)

VB6.0 風に書くなら 
Call Shell("RunDll32.exe url.dll, FileProtocolHandler c:\temp", vbNormalFocus)

元質問者 さん、質問される場合は、環境を書くようにしましょう。

[ツリー表示へ]