掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CreateProcessからのウィンドウのハンドルの取得について (ID:107980)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 今XPとVB6でファイル操作のプログラムを書いているのですが > VBからエクスプローラを起動した時にエクスプローラのウィンドウの > ハンドルがなぜか取得できません^^; エクスプローラウインドウのハンドルを得てから、その後、 最終的に何をしたいのかにもよりますが、APIでエクスプローラの ウィンドウハンドルを取得し、それをAPIで操作する替わりに、 エクスプローラをCreateObjectで起動し、それを操作するという 手法もあります。 # あるいは、CreateObjectで新規に起動するのではなく、 # 起動済みのエクスプローラを、ShellWindowsオブジェクトで # 列挙して使う事もできます。 たとえば、このような事もできます。 Option Explicit Private Sub Command1_Click() Dim obj As Object Dim fis As Object Dim sfv As Object Dim S As String 'エクスプローラを起動し、Cドライブを開く Set obj = CreateObject("InternetExplorer.Application", "localhost") obj.Navigate2 "C:\", CVar(&H20) '画面左上に、画面の3/4の大きさで表示 obj.Left = 0 obj.Top = 0 obj.Width = (Screen.Width / Screen.TwipsPerPixelX) * 0.75 obj.Height = (Screen.Height / Screen.TwipsPerPixelY) * 0.75 obj.ShowBrowserBar "{EFA24E64-B078-11D0-89E4-00C04FC9E26E}", True obj.Visible = True Set sfv = obj.document Set fis = sfv.Application.NameSpace("C:\").Items() '"C:\Program Files"フォルダを選択させた状態にする sfv.SelectItem fis.Item("Program Files"), 3& '"C:\Documents and Settings"にフォーカスをあてる(選択はしない) sfv.SelectItem fis.Item("Documents and Settings"), 16& Set fis = Nothing Set sfv = Nothing 'エクスプローラのウィンドウハンドルを取得 S = Right(String(8, "0") & Hex(obj.hWnd), 8) '終了処理 S = "エクスプローラ(0x" & S & ")を閉じます。" If MsgBox(S, vbOKCancel Or vbSystemModal Or vbInformation, "Sample") = vbOK Then obj.Quit End If Set obj = Nothing End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.