別のアプリケーションの後に動作する必要があるアプリケーションがあります。この 2 番目のアプリケーションには、特定の状況で COM ポートが閉じられないというバグがあります。
アプリケーションでプログラムによってすべての COM ポートを閉じて、ポートを閉じることに関するバグが報告されないようにしたいと考えています。COM ポートを開いたオブジェクトを所有していない場合は可能ですか?
.NET Framework、C# のソリューションが必要です。
別のアプリケーションの後に動作する必要があるアプリケーションがあります。この 2 番目のアプリケーションには、特定の状況で COM ポートが閉じられないというバグがあります。
アプリケーションでプログラムによってすべての COM ポートを閉じて、ポートを閉じることに関するバグが報告されないようにしたいと考えています。COM ポートを開いたオブジェクトを所有していない場合は可能ですか?
.NET Framework、C# のソリューションが必要です。
良い、簡単な方法はありません:
最近これに遭遇し、少し追加する必要があります...ほとんどのCOMポートドライバーは、デバイスマネージャーでデバイスが有効および無効になっているときにポートを「ロック解除」します。これは、このタスクを達成する (C#) 方法がソリューションで説明されていることを意味します。
プログラムでデバイスを有効/無効にする Win32 API 関数
COM ポートにそのソリューションを使用するために知っておく必要がある情報は次のとおりです。
すべてのポートをリセットしたいと言っているので、その例のライブラリを変更して、次のように変更してすべてのポートをループする必要があります。
// Find the index of our instance. i.e. the touchpad mouse - I have 3 mice attached...
int index = GetIndexOfInstance(diSetHandle, diData, instanceId);
// Disable...
EnableDevice(diSetHandle, diData[index], enable);
このようなものに:
for (int index = 0; index < diData.Length; index++)
{
EnableDevice(diSetHandle, diData[index], enable);
}