MsgBox "プロセス名=" & obj.Caption あと、この2つの使い分けのコツ(用途)が知りたいです。, http://jeanne.wankuma.com/tips/vb.net/process/ Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindo...続きを読む, VB.NETで他のEXEを実行させる以下の2つの方法が知りたいです。   If notepadが起動していたら Then       If IsWindowVisible(hWnd) Then 下記方法を見つけたので、なんとか解決しました! FindWindowを使うには開いているファイル名まで変数の中に渡さなければならないため使えません。(開いているファイル名は不明として下さい) 実行完了を待って次の処理をする必要がある場合は、制御が戻るまで待つ、そうでないものはキックして終わり、です。, 2005の.netです。 ---デスクトップ上のすべてのメイン・ウィンドウを列挙するには? もう一度プログラムを起動することができません。 Private Const WS_CAPTION As Long = &HC00000 Win32 APIのEnumWindows 関数を使えば簡単に実現できます。 使い分けですが、 タスクマネージャのプロセスから確認するというのでしょうか、 やはりそれが問題なのでしょうか? returnValue = Process.GetProcessesByName(processName) 要は、VB6にて起動アプリを調べたいのです。 マシンで動かしているのですが、 使っているPCで起動されているいくつかのEXEから目的のEXEが起動しているかどうかを知りたいです。 Dim Service As Object, PrcSet As Object, Prc As Object processName As String _           Call GetWindowText(hWnd, strTitle, 250) Private Declare Function IsWindow Lib "user32.dll" (ByVal hWnd As Long) As Long というのを作りたいのですが、 Name : 名前 言語 :Excel2007 VB Save my name, email, and website in this browser for the next time I comment. 何かをもらう プロセス 複数形 何かによって 名前 ・・・   Dim strTitle As String 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:MyWaitDll 使用 API:OpenProcess GetExitCodeProcess CloseHandle その他 :このサンプルは、 Win32 API を使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 : Dim processName As String By : なにかによって この訳を そのままつなげてみると Visual Basic (宣言) Sub ProcessID() (adsbygoogle = window.adsbygoogle || []).push({}); Follow @tsubaiso1 !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?   hWnd = GetWindow(GetDesktopWindow(), GW_CHILD) この場合のLengthは GetProcessesByNameメソッドが返す Process型の配列の個数を表します   Set Server = Nothing   Dim lngStyle As Long 環境は、XPです。           strTitle = Left(strTitle, InStr(strTitle, Chr(0)) - 1) (プログラムで二重起動防止の処理をしています)   Set obj = Nothing [ C言語 ] プロセスの生成 ( fork ) と パイプによるプロセス間通信 ( pipe ) [ VB.NET / C# ] プロセスの終了を非同期に捕捉する ( Process.Exited ) [ ASP.NET ] GridView.DataSource に配列を設定して表示する [ VB.NET / C# ] プロセスの終了を待機する ( Process.WaitForExit )   Loop Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long Public Shared Function GetProcessesByName ( _     If IsWindow(hWnd) <> 0 Then Private Sub CommandButton1_Click() 一番最後に () が付く場合は その型名の配列が返されることになります この場合のLengthは GetProcessesByNameメソッドが返す Process型の配列の個数を表します タスクマネージャーの「プロセス」タブのイメージ名に出てくるexeファイル名を取得できればいいのですが、方法をご存知の方おられませんか?, ご参考にしてください。 Excel2007のVisual Basicで現在起動中のプログラム名を知る    方法を教えてください。   Set objSet = Server.ExecQuery("Select * From Win32_Process") as の後には返されるデータなどの型名がきます Process.GetProcessesByName メソッド (String) Private Const GW_CHILD As Long = 5 VB6.0 以前 ' プロセス ID を格納するための変数を宣言する Dim lProcessId As Long ' メモ帳を起動してプロセス ID を取得する lProcessId = CLng (Shell("Notepad", vbNormalFocus)) ' 終了するまで待機する Call WaitForExitProcess(lProcessId) ' 終了した旨を表示する Call MsgBox("メモ帳が終了しました") 参照先のプロセスにUIがある場合、Respondingプロパティを使用して、UIが現在ユーザー入力に応答しているかどうかを判断できます。, EnableRaisingEventsを設定し、Exitedイベント(非同期に送信される)を処理するか、ブロックする場合はWaitForExit()を呼び出すこともできます。, 私はコインコインのソリューションを試しました:いくつかのファイルを処理する前に、一時ファイルとしてコピーして開きます。完了したら、アプリケーションがまだ開いている場合はアプリケーションを閉じ、一時ファイルを削除します。 Process変数を使用して、後で確認するだけです。, 目的のプロセスに対してProcessインスタンスを1回インスタンス化し、その.NET Processオブジェクトを使用してプロセスを追跡し続けることができます(追跡しているプロセスが死んでも、明示的にその.NETオブジェクトでCloseを呼び出すまで追跡を続けます) [これは、プロセス終了時間、つまりExitTimeなどを提供できるようにすることです]), 引用 http://msdn.Microsoft.com/en-us/library/fb4aw7b8.aspx :, 関連付けられたプロセスが終了すると(つまり、正常または異常終了によりオペレーティングシステムによってシャットダウンされると)、システムはプロセスに関する管理情報を保存し、WaitForExitを呼び出したコンポーネントに戻ります。プロセスコンポーネントは、終了したプロセスのハンドルを使用して、ExitTimeを含む情報にアクセスできます。, 関連するプロセスが終了したため、コンポーネントのHandleプロパティは既存のプロセスリソースをポイントしなくなりました。代わりに、ハンドルは、プロセスリソースに関するオペレーティングシステムの情報にアクセスするためにのみ使用できます。システムは、プロセスコンポーネントによって解放されていない終了したプロセスへのハンドルを認識しているため、プロセスコンポーネントがリソースを明示的に解放するまで、ExitTimeおよびHandle情報をメモリに保持します。このため、プロセスインスタンスのStartを呼び出すときはいつでも、関連付けられたプロセスが終了し、それに関する管理情報が不要になったときにCloseを呼び出します。 Closeは、終了したプロセスに割り当てられたメモリを解放します。, 他の人が部分的に対処しているように思われるので、これに関連する多くの問題があります:, 他の人が言及したプロパティが内部であるかどうかに関係なく、許可が許せば、リフレクションを介してそれらから情報を取得できます。, Snapshot のWin32コードをpinvokeするか、より遅い WMI を使用できます。, 別のオプションは OpenProcess /CloseProcessですが、例外は以前と同じようにスローされ、同じ問題が発生します。, NullReferenceExceptionとは何ですか、どうすれば修正できますか?, 「ブレークポイントは現在ヒットしていません。このドキュメントのシンボルはロードされていません」という問題を解決する方法を教えてください。警告?, MS OfficeをインストールせずにC#でExcel(.XLSおよび.XLSX)ファイルを作成する方法?, .NETコンソールアプリケーションでアプリケーションのパスを取得する方法を教えてください。, Content dated before 2011-04-08 (UTC) is licensed under, http://msdn.Microsoft.com/en-us/library/fb4aw7b8.aspx, インスタンスメンバーは、スレッドセーフであるとは限りません。つまり、オブジェクトのプロパティを評価しようとしているときに、スナップショットの存続期間に競合状態が発生する可能性があります。, プロセスハンドルは、このプロパティおよび他のそのようなプロパティを評価するためのアクセス許可が許可されていないアクセス拒否に対してWin32Exceptionをスローします。, IS N'T RUNNINGステータスの場合、そのプロパティの一部を評価しようとするとArgumentExceptionも発生します。. このプログラムをVBのラインタイムが入っていない End If   '   Next Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Const GWL_STYLE As Long = -16 MSDNより引用 --- 見させていただいたのですが言語も違うようですし Process.GetProcessById(processId)メソッドは、ProcessManager.IsProcessRunning(processId)メソッドを呼び出し、プロセスが存在しない場合にArgumentExceptionをスローします。何らかの理由でProcessManagerクラスは内部です... reshefmにはかなりいい答えがありました。ただし、プロセスが最初から開始されなかった状況は考慮されません。, ArgumentNullExceptionを削除したのは、実際にはnull参照例外であると想定され、とにかくシステムによってスローされ、プロセスが開始されない、またはclose()メソッドを使用して処理する。, この機能をどの程度信頼できるかによって異なります。特定のプロセスインスタンスがまだ実行されており、100%の精度で使用可能かどうかを知りたい場合は、運が悪いです。その理由は、管理対象プロセスオブジェクトから、プロセスを識別する方法が2つしかないためです。, 1つはプロセスIDです。残念ながら、プロセスIDは一意ではなく、リサイクルできます。一致するIDのプロセスリストを検索すると、同じIDのプロセスが実行されていることがわかりますが、必ずしもプロセスではありません。, 2番目の項目はプロセスハンドルです。 Idと同じ問題がありますが、扱いにくいです。, 中レベルの信頼性を探している場合は、現在のプロセスリストで同じIDのプロセスを確認するだけで十分です。, Process.GetProcesses()が道です。ただし、プロセスの実行方法に応じて、1つ以上の異なる基準を使用してプロセスを見つける必要がある場合があります(つまり、タイトルバーがあるかどうかにかかわらず、サービスまたは通常のアプリとして)。, プロセスIDによる既存のプロセスのチェックに関して.NetフレームワークからサポートされているAPIにもかかわらず、これらの機能は非常に低速です。 Process.GetProcesses()またはProcess.GetProcessById/Name()を実行するには、膨大なCPUサイクルがかかります。, IDで実行中のプロセスを確認するはるかに迅速な方法は、ネイティブAPI OpenProcess() を使用することです。戻りハンドルが0の場合、プロセスは存在しません。ハンドルが0以外の場合、プロセスは実行中です。このメソッドが許可のために常に100%動作するという保証はありません。. processName As String _ MSDNなどのレファレンスでメソッドが何を返してくるのかを確認しましょう MSDNより引用 --- Get : 何かをもらう 質問 :現在起動中のアプリケーションの名前を知りたい ここまで         lngStyle = GetWindowLong(hWnd, GWL_STYLE) ここでは、VB.NET および C# で実行中プロセスのメモリ使用量などの各種プロセス情報を取得するサンプルコードを掲載しています。, Process.GetCurrentProcess で実行中のプロセス情報を取得するサンプルコードです。詳細はサンプル内のコメントや下段の参考リンクを参照ください。, Your email address will not be published. タスクマネージャのプロセスに残ってしまい、   Set Locator = Nothing   Dim obj Private Const GW_HWNDNEXT As Long = 2 Q 起動しているプロセスの確認. こちらの8番と9番をどうぞ。 『名前によって複数のプロセスを取得する』といえるでしょう, Lengthは文字数ではありませんよ