25


5

私が働いている会社は、シリアルポートを介してコンピュータと通信するハードウェアを製造しています。 サードパーティ企業は、当社のハードウェアと通信するソフトウェアを開発しています。

私たちのハードウェアを診断する必要があるときがあります。 ただし、Windowsの起動時にサードパーティ製のソフトウェアアプリがシリアルポートに接続し、他の接続をブロックします。 私はこのアプリケーション/サービスの名前を知りません、そしてそれはいつも同じものではありません。

次のいずれかの方法があります。

  • 特定のシリアルポートを現在使用しているアプリ/サービスの名前/ pidを探します。

  • 他のアプリからシリアルポート接続を盗みます。

できればvb.netだが、私は言語にとらわれない答えも取るだろう。

3 Answer


20


SysInternalsの process explorerツールを使用して、開いているハンドルを検索することもできます。 この場合、シリアル番号は、COMポート番号に対応していない可能性があるデバイス名を使用しているため、「シリアル」を検索します。 (例えば。 COM1は私のシステムでは\ Device \ Serial0です。

あなたが別のアプリからシリアルポートの制御を取りたいならば、私はあなたがドライバーの協力を必要とするであろうと思います。


7


https://stackoverflow.com/a/42285/4794 [Rob Walkerが言ったように]、http://technet.microsoft.com/ja-jp/sysinternals/bb795533.aspx[Processを使用してシリアルポートを使用している人を見つけることができます。冒険者]。 ほとんどの場合、[。kbd] Ctrl + [。kbd]#F#と入力して「serial」を検索すると、シリアルポートが開いているユーザーが表示されますが、「COM3」シリアルポートのハンドルは「\ Device \ VCP0」として表示されます。 USB-to-serialコネクタを備えたVirtualBoxの下で実行されていたので、それは奇妙かもしれません。

"serial"と "device \ vcp"を検索しても結果が得られない場合は、シリアルポートハンドルの名前を既知のプログラムで開くことでわかります。 プロセスエクスプローラーで、次のように入力して、各プロセスの開いているハンドルの下のペインを表示します。 Ctrl+L. Click on the process that you used to open the シリアルポートを選択し、下のペインで、どのハンドルがシリアルポートであるかのように見えるか確認します。 見ている間にポートを開いたり閉じたりすることができ、ファイルハンドルが表示されたり消えたりするだけでなく、緑や赤で強調表示されます。 もちろん、これが可能なのは、複数のシリアルポートがあるか、診断しようとしているシリアルポートが常に何らかの謎のプロセスによってロックされているとは限らない場合です。


3


http://technet.microsoft.com/ja-jp/sysinternals/default.aspx[Sysinternals]には、システムに対してどのプロセスが実行されているのかを突き止めるための非常に有用で有益なユーティリティが多数あります。

彼らはあなたがちょうど Portmonと呼ばれるあなたが必要とすることをまさに必要とすることをするユーティリティを持っていて、そしてそれがページの下の近くでどのように働くかに関する若干の情報を与える。 その情報といくつかのよくある質問は、ユーティリティが十分でない場合、おそらくそれを自分で実装するために必要なすべてを与えるでしょう。

-アダム