- 締切済み
VS2008 VB.NETでのWindowsサービスアプリケーションに
VS2008 VB.NETでのWindowsサービスアプリケーションについて VS2008 VB.NET でプログラムの勉強と思いWindowsサービス アプリケーションを作っています。 機能は、自分が起動したら指定された別のアプリケーションを 起動するという簡単なものです。 試しに別アプリケーションとしてメモ帳を指定してみました。 XPでは、メモ帳の画面が表示されたのですが、Vistaでは 「対話型サービスアプリケーションの検出」という画面が表示さ れメモ帳の画面が表示されませんでした。 起動の方法は以下のとおりです。 Dim psi As New System.Diagnostics.ProcessStartInfo() psi.FileName=<メモ帳のファイル名> psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal System.Diagnostics.Process.Start(psi) Vistaではこの方法ではいけないのでしょうか。 よろしくお願いいたします。
- mlc56724
- お礼率40% (6/15)
- Visual Basic
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17068)
VB.NETの新しいプロジェクトで コンソールアプリケーションを択んで、そこで Module Module1 Sub Main() ' メモ帳を起動する System.Diagnostics.Process.Start("Notepad") ' ファイルを指定してメモ帳を起動する System.Diagnostics.Process.Start("Notepad", "C:\Documents and Settings\XXXX\My Documents\IF文.txt") End Sub End Module としてデバッグ開始で、メモ帳が開き、上記テキストファイルが開きました。 ーー Googleで「VB.NET メモ帳 起動」で照会すると関連の記事が相当多数出てきたが。 上記はそこから。 質問のコードには、メモ帳というソフトの指定(Notepad)が出てこないが、おかしくないのだろうか。
関連するQ&A
- VBプログラムから「管理者として実行」したい
コマンドプロンプトで実行したいコマンドが 「route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***」 (*は、任意のIP) だとします。 XPでは問題ないですが、Vista以降だと、管理者権限が必要なコマンドのため、 そもそもコマンドプロンプト自体を「管理者として実行」モードで起動する必要があります。 上記を、手作業で行う場合は、それで解決しますが、 同じ事を、VBのコードから実行したい場合、 System.Diagnostics.Process.Start を使い、(以下サンプルコード) --------------------------- Dim psi As New System.Diagnostics.ProcessStartInfo() psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") psi.UseShellExecute = False psi.CreateNoWindow = True psi.Arguments = "/c route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***" Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) p.WaitForExit() ----------------------------------------------------------- とすると、XPでは、管理者権限を問われないので実行できますが、 Vista以降だと、コマンドが管理者権限で実行されていないためか実行が完了せず、コマンドの内容も行われていません。(route addコマンドの記述にミスは無いとします。) Vista以降の場合、手作業で、コマンドプロンプトを右クリックして「管理者として実行」を選んで起動し、コマンドを実行するのと同じ事を、 VBのコードから行うには、どうしたらいいのでしょうか? 分かる方、教えてください。お願いします。
- ベストアンサー
- Visual Basic
- VB.NETでのDOSコマンドを実行について
VB.NETでのDOSコマンドを実行について いつも大変お世話になっています。 VB.NET上でバイナリデータを DOSコマンド「copy」で結合させたいのですが うまくいきません。ご助言ください。 Dim results As String Dim psi As New System.Diagnostics.ProcessStartInfo() 'ComSpecのパスを取得する psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") '出力を読み取れるようにする psi.RedirectStandardInput = False psi.RedirectStandardOutput = True psi.UseShellExecute = False 'ウィンドウを表示しないようにする psi.CreateNoWindow = True 'コマンドラインを指定("/c"は実行後閉じるために必要) psi.Arguments = _ "/c copy /b /y "C:\Program Files\test\Data\out0001.bin"+"C:\Program Files\test\Data\out0002.bin" "C:\Program Files\test\Data\TEST.jpg"" '※コマンドの前後のダブルクォーテーションを省き、コマンドプロンプトで ' 直接実行した場合は成功しました。 '起動 Dim p As System.Diagnostics.Process=_ System.Diagnostics.Process.Start(psi) '出力を読み取る results = p.StandardOutput.ReadToEnd '出力された結果を表示 Console.WriteLine(results) 'WaitForExitはReadToEndの後である必要がある '(親プロセス、子プロセスでブロック防止のため) p.WaitForExit()
- ベストアンサー
- Visual Basic
- PDFの印刷で。。。
C#よりAcrobatReaderにPDFをエクスポートして印刷を行う処理 を作成中です。 そこで質問ですが,エクスポートされたPDFを印刷する際に、 PDFを開かずに印刷することは可能でしょうか? 現在、ネットよりいろいろ調べて組み込んだロジックでは印刷をする ことはできましたが、どうしてもPDFが開かれてしまいます。 ソースを以下に載せましたのでご教授願います。 System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); //パスを取得する psi.FileName = @"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"; //出力を読み取れるようにする psi.RedirectStandardInput = false; psi.RedirectStandardOutput = true; psi.UseShellExecute = false; //ウィンドウを表示しないようにする psi.CreateNoWindow = true; //コマンドラインを指定 psi.Arguments = @"/t " + Application.StartupPath + "\\PDFExpt.PDF"; System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi); //出力を読み取る string results = p.StandardOutput.ReadToEnd(); p.WaitForExit(); p.Close(); p.Dispose(); 申し訳ありませんがよろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- 【VB.NET】コマンドプロンプトの操作について
今晩は、質問させていただきます。どうぞよろしくお願いいたします。 環境: VB2008 Express Edition + Win7(もしくはVistaもしくはXP) でございます。 VBからコマンドプロンプト(あまり使い方を存じません)を操作できているかどうか テストする為に、下記のように操作させてみましたがうまくいきません。。 ・Debugフォルダにコマンドプロンプトを起動 →コマンドプロンプトの内容表示(←成功) ・Debugフォルダにコマンドプロンプトを起動 →「cd ../ 」 →コマンドプロンプトの内容表示(←何故か何も表示されません。) http://soudan1.biglobe.ne.jp/qa5873147.html を参考にさせていただいて、コーディングいたしました↓ Dim psi As New System.Diagnostics.ProcessStartInfo() psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") psi.RedirectStandardInput = False '出力を読み取れるようにする psi.RedirectStandardOutput = True psi.UseShellExecute = False psi.CreateNoWindow = True 'ウィンドウを表示しないようにする 'コマンドラインを指定 psi.Arguments = "/c cd ../" '←ここです。 Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) '起動 Threading.Thread.Sleep(1000) Do results = p.StandardOutput.ReadLine temp = temp & results Application.DoEvents() cnt = cnt + 1 Loop Until cnt = 1000 p.WaitForExit() MsgBox(temp) 最後のMsgBoxに何も文字が表示されません。。。 コード中の「ここです」の行をコメントアウトいたしますと、最後のMsgBoxに 「Microsoft Windows XP ~D:\~bin\Debug>」 とフォルダ名が表示できます。 psi.Arguments = "/c cd ../" がちゃんと送れていないのでございましょうか?? 色々と試行錯誤しておりますが、うまくいきません。 試しにpsi.CreateNoWindow = False などとしてみても一瞬で画面が消えてしまうため うまくバグ取りの打開策が見いだせておりません。 もしお詳しい方がいらっしゃいましたら是非ともアドバイスいただけないでしょうか。 どうぞよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- VS2010 VB.Netのコンソールアプリについ
VS2010 Exspress VB.Netのコンソールアプリケーションについて VB.Netのコンソールアプリケーションにて、 実行すると黒い画面が表示します、これを止めるにはどうすれば、良いのでしょうか? ※VB6では、標準EXEより、フォームを無くし、標準モジュールを追加しても黒い画面は、表示されません よろしくお願いします
- ベストアンサー
- Visual Basic
- VB.NETでDOSコマンドの複数実行
VB.NETでバッチファイルを使わずにDOSコマンドの複数実行をしたいのですが、 試しに Dim results As String 'ComSpecのパスを取得する psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") '出力を読み取れるようにする psi.RedirectStandardInput = False psi.RedirectStandardOutput = True psi.UseShellExecute = False 'ウィンドウを表示しないようにする psi.CreateNoWindow = True 'コマンドラインを指定("/c"は実行後閉じるために必要) 'psi.Arguments = "/c " & asCmd & " /w" psi.Arguments = "/c " & "CD C:\" & " /w" '起動 p = System.Diagnostics.Process.Start(psi) '出力を読み取る results = p.StandardOutput.ReadToEnd '出力された結果を表示 Console.WriteLine(results) psi.Arguments = "/c " & "DIR" & " /w" '起動 p = System.Diagnostics.Process.Start(psi) '出力を読み取る results = p.StandardOutput.ReadToEnd '出力された結果を表示 Console.WriteLine(results) 'WaitForExitはReadToEndの後である必要がある '(親プロセス、子プロセスでブロック防止のため) p.WaitForExit() というプログラムを作成したのですが、DIRは実行されるのですが、 Cドライブに移動ができません。 何が悪いのでしょうか? 実現できる方法があればご教授ください。
- ベストアンサー
- Visual Basic
- ASP.NETでRSH実行について
ASP.NETでWebアプリケーションを作っているのですが、RSHでLinuxのシェルを実行しようとしたのですがうまくいきません。 (ちゃんと実行されずスキップされます) 普通のDosの実行は出来ます。 RSHの実行結果のDosの標準出力をTextBoxに出したいと思ってます。 System.Diagnostics.ProcessStartInfoで行っています。 同じソースをVBアプリで実行するとうまくいきました。 IIS設定でWeb公開しようとするとだめみたいです。 IISのセキュリティとか何か設定が必要なのでしょうか? OSはWindowsXP ProでVS.NET2003を使ってます。
- 締切済み
- Microsoft ASP
- VB.NETでCreateProcess
VB.NET(2003)で、別exeを起動し、終了まで待機するということをするために、 system.Diagnostics.Processクラスを使用していました。 しかし、実際に動かす環境がMetaFrameなのですが、 その環境では、このクラスは使用できないようで画面の起動すらできなくなります。 ですので、別の方法ということで、APIのCreateProcess、WaitForSingleObjectを使用するように変更したいのですが、 VB.NETでのサンプルが余り無いため、パラメータにどのように設定するかなどがよくわかりません。 API自体使ったことが無いので、根本的にわから無すぎるのです・・・ VB.NETでAPI利用サンプルが多く掲載されているサイト、 できれば、CreateProcess、WaitForSingleObjectを使用しているサンプルなどありましたら、ご教授願います。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- Process.Startで起動したアプリを最大化したいです。VB.NET
こんにちは、お世話になっております。 下記のようなコードでアプリケーションを起動して ウィンドウを最大化したいのですが、 どのようにしたら良いでしょうか。 3行目のように大きさを画面いっぱいに設定する方法は 出来たのですが、最大化の方法がわかりません。 申し訳ありませんが、教えて頂きたくお願いいたします。 Dim p As System.Diagnostics.Process p = System.Diagnostics.Process.Start("***") MoveWindow(p.MainWindowHandle, 0, 0, 1024, 768, 1)
- ベストアンサー
- Visual Basic
- コマンドプロンプトの出力をテキストボックスへ表示する方法について
コマンドプロンプトの出力をテキストボックスへ表示する方法について 現在、VBを使ったプログラミングを行っています。 以下に質問内容を示しますので、回答を宜しくお願いします。 <環境> OS:Windows XP 開発ソフト:VB2008 express edition 質問:コマンドプロンプトの出力をテキストボックスへ表示する方法について リダイレクトを使って、コマンドプロンプトの出力結果をVBのフォーム上(テキストボックス) に表示したいのですが、常に出力が更新されるコマンドの場合、実行後にフリーズが起きてしまいます。 以下の例ではpingを送っていますが、テキストボックスには常にコマンドの出力結果が更新されません。(実行が終わるまで待つ必要がある) 理想としては、pingコマンドを実行したときの結果が、そのままテキストボックス上にリアルタイムに表示されることです。 リアルタイムにテキストボックスにコマンドプロンプトの結果を表示するには、 どのような設定が必要になるのでしょうか? ご教授願います。宜しくお願いします。 ----- 以下サンプルソース ----- Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim results As String Dim psi As New System.Diagnostics.ProcessStartInfo() 'ComSpecのパスを取得する psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") '出力を読み取れるようにする psi.RedirectStandardInput = False psi.RedirectStandardOutput = True psi.UseShellExecute = False 'ウィンドウを表示しないようにする psi.CreateNoWindow = True 'コマンドラインを指定("/c"は実行後閉じるために必要) psi.Arguments = "/c ping 192.168.1.1" '起動 Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) '出力を読み取る results = p.StandardOutput.ReadToEnd '出力された結果を表示 TextBox1.Text = results 'WaitForExitはReadToEndの後である必要がある '(親プロセス、子プロセスでブロック防止のため) p.WaitForExit() End Sub End Class
- ベストアンサー
- Visual Basic