
VisualBasic2005にてプログラムをしているのですが、
指定されたアクションをトリガにして、外部アプリを最小化で起動したいのですが、最小化されずに起動してしまいます。
外部アプリは、WEBブラウザ(safari)です。
以下に、処理部分を記載します。
Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.StartInfo.FileName = 'safariのパス'
p.StartInfo.Arguments = '指定したURL'
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
p.StartInfo.CreateNoWindow = True
p.Start()
上記で実行すると、指定したURLでSafariが起動するのですが、
最小化で起動しません。
通常のウィンドウサイズで起動します。
どなたか、アドバイスをお願いします。
No.6ベストアンサー
- 回答日時:
Win32 API を使って強制的に最小化。
(但し、一瞬通常表示になる 表示しないとハンドルが取得できないので)
<System.Runtime.InteropServices.DllImport("user32.dll", _
CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function FindWindowEx( _
ByVal hWnd1 As IntPtr, _
ByVal hWnd2 As IntPtr, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As IntPtr
End Function
<System.Runtime.InteropServices.DllImport("user32.dll", _
CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function CloseWindow( _
ByVal hwnd As IntPtr) As Integer
End Function
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.StartInfo.FileName = "C:\Program Files\Internet Explorer\iexplore.exe"
p.StartInfo.Arguments = "http://hanatyan.sakura.ne.jp/index.html"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
p.StartInfo.CreateNoWindow = True
p.Start()
p.WaitForExit(1000)
Dim localByName As Process() = Process.GetProcessesByName("iexplore")
Dim p1 As Process
For Each p1 In localByName
Dim hwnd As IntPtr = FindWindowEx(IntPtr.Zero, _
IntPtr.Zero, vbNullString, p1.MainWindowTitle)
If hwnd <> IntPtr.Zero Then
Dim Ret As Integer = CloseWindow(hwnd)
End If
Next
End Sub
ありがとうございます。
IEだと理想の動作をするようになりました。
しかし、Safariだとやはり通常ウィンドウでの起動となってしまいます。
ここまでアドバイスをいただきまして、ありがとうございます。
Safariでの最小化を指定しての起動は難しそうなので、IEでの起動を視野に入れて検討してみます。
何度も、ありがとうございました。
No.5
- 回答日時:
WindowsXP VB2005 IE8 で動作確認
(但し、複数起動不可)
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim localByName As Process() = Process.GetProcessesByName("iexplore")
Dim p As Process
For Each p In localByName
p.CloseMainWindow()
Next
System.Threading.Thread.Sleep(500)
Dim Mypro As Process
Dim startInfo As New ProcessStartInfo("IExplore.exe")
startInfo.WindowStyle = ProcessWindowStyle.Minimized
startInfo.CreateNoWindow = False
startInfo.Arguments = "http://hanatyan.sakura.ne.jp/index.html"
Mypro = Process.Start(startInfo)
End Sub
No.4
- 回答日時:
IE8 ですか。
一度、IE が1個も起動していない状態でコードを試して見て下さい。
複数のIE が起動していると、このコードでも通常サイズで起動する
ようです。
Win32 API 等を使って、起動したウィンドウのハンドルを取得して
最小化するしかないかも。
IE に限定するなら、他にも方法はありますが、Safari には使えないかも。
No.3
- 回答日時:
因みに、メモ帳でも、私のコードと貴方のコードで試しましたが
私にコードは、最小化で表示されます。
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim p As Process
Dim si As New ProcessStartInfo("Notepad")
si.WindowStyle = ProcessWindowStyle.Minimized
si.CreateNoWindow = True
si.Arguments = "c:\test.txt"
p = Process.Start(si)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.StartInfo.FileName = "Notepad"
p.StartInfo.Arguments = "c:\test.txt"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
p.StartInfo.CreateNoWindow = True
p.Start()
End Sub
メモ帳での確認ありがとうございます。
私の環境だと、Button3(上)のコードだとメモ帳は最小化で起動しました。
Button4のコードだと、通常サイズで起動しました。
Button3のコードをSafariとIE8で起動してみると、やはり通常サイズで起動しました。
No.2
- 回答日時:
>記載していただいた内容をそのまま転載して実行してみたのですが、
>「通常のサイズ」で起動しました。
IExplore.exe を起動されたのでしょうか?
それなら、OS と IE のバージョンを教えて下さい。
Windows Vista IE 7.0 で動作確認
Windows XP IE6.0 で動作確認
VB2005(EE)
この回答への補足
環境は以下のとおりです。
OS:WindowsXP Pro SP3
ブラウザ:IE8
開発環境:Visual Studio 2005 Standard
ブラウザの影響なのでしょうか?
No.1
- 回答日時:
Safari は使った事がないので、未確認ですが、多分 IE でも同じかと思います。
IE なら下記で最小化で起動しますので、"IExplore.exe" の部分を
Safari のフルパスに置き換えれば起動するのではないでしょうか?
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim Mypro As Process
Dim startInfo As New ProcessStartInfo("IExplore.exe")
startInfo.WindowStyle = ProcessWindowStyle.Minimized
startInfo.CreateNoWindow = True
startInfo.Arguments = "http://www.hanatyan.sakura.ne.jp/"
Mypro = Process.Start(startInfo)
End Sub
アドバイスありがとうございます。
記載していただいた内容をそのまま転載して実行してみたのですが、
「通常のサイズ」で起動しました。
同じ記述で、vbhanatyanさんは最小化で起動したということでしたらこれは、私の環境の設定の問題なんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- ルーター・ネットワーク機器 Wifi速度低下で困ってます。 5 2023/01/23 10:19
- CPU・メモリ・マザーボード パソコン動作遅いです。スペックは、2014年に買った dell i54460 tg705 メモリー8 11 2023/04/06 10:05
- Visual Basic(VBA) 起動中のアプリ、ソフトの取得 3 2022/12/28 11:13
- 数学 領域の問題について質問です。 実数s, tは,s^2+t^2≦1, s≧0, t≧0 を同時に満たし 3 2023/05/18 20:59
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) pythonでDepixを起動 5 2022/12/18 08:04
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBで実行中のEXEファイルの情報...
-
UWSCで起動時の関する質問
-
VBSでExcelのUserFormをエクス...
-
EclipseとTomcat使用時、すぐに...
-
VBからExcelに書き込む方法
-
アウトルックが起動しているか...
-
バーコードリーダーを起動する...
-
VBAでOutlookを終了させたい Ex...
-
ACCESS VBAで別のACCESS(mdb)を...
-
VBSで起動したアプリが前面表示...
-
MSDOS(バッチファイル)でプロセ...
-
Vba アプリケーションが立ち上...
-
excel vbaから実行するexe実行...
-
意味不明の実行時エラーで困っ...
-
Designer.vbは直接コードをいじ...
-
VC++6.0のプロジェクトをVS2005...
-
androidで.exeを実行できますか?
-
フォント色つけ
-
数式が消える
-
C#で実行可能なdllの作成方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
VBで実行中のEXEファイルの情報...
-
Windows上のプログラム。「予め...
-
キー操作 (WSH:コピー&ペー...
-
exeファイルを実行するとすぐに...
-
VBSで起動したアプリが前面表示...
-
EXCEL VBAから他アプリケーショ...
-
VBSから別のVBS起動するとき変...
-
VB6で呼び出し元の情報を取得す...
-
フォームの最前面が効かない
-
gccプログラムで複数の実行ファ...
-
ウィンドウを終了させたい・・・
-
C# 他のアプリケーションを優先...
-
MSDOS(バッチファイル)でプロセ...
-
64bitで作ったEXEを32bitで起動...
-
VBAでSeleniumからChromeを起動...
-
VB6.0からエクセルを起動
-
VBSでExcelのUserFormをエクス...
おすすめ情報