パソコンを遠隔操作できるソフトでTeamViewer(チームビューアー)というものがあります。
顧客の遠隔サポートで使っている企業もあると思います。
チームビューアーIDがわからなくなってしまった場合、利用者に電話で、
カタカナのチームじゃなくて、アルファベットでTから始まる…
こんなやり取りするの面倒です。
スポンサーリンク
このようなやり取りをすることなく、チームビューアーIDを確認したい場合、
自社のアプリからチームビューアーを呼ぶボタンをつければよいです。
32ビットと、64ビットの場合があるので、次のコードでTeamViewer.exeを呼び出せば良いです。
If IO.File.Exists("C:\Program Files\TeamViewer\TeamViewer.exe") Then Process.Start("C:\Program Files\TeamViewer\TeamViewer.exe") ElseIf IO.File.Exists("C:\Program Files (x86)\TeamViewer\TeamViewer.exe") Then Process.Start("C:\Program Files (x86)\TeamViewer\TeamViewer.exe") End If
チームビューアーIDをプログラムから直接取得したい場合は、TeamViewer.exeと同じフォルダにあるログファイルの中にIDが書いてあるので、それを参照します。
TeamViewer11の場合は、「TeamViewer11_Logfile.log」、
TeamViewer12の場合は、「TeamViewer12_Logfile.log」です。
次のコードで、チームビューアーIDを取得できます。
Dim sTeamViewerDir As String Dim sLogFileName As String Dim iVersion As Integer 'C:\Program Files、または、C:\Program Files (x86)にログファイルがあるので、 '両方チェックして、TeamViewerのフォルダを特定します。 If IO.Directory.Exists("C:\Program Files\TeamViewer") Then sTeamViewerDir = "C:\Program Files\TeamViewer" ElseIf IO.Directory.Exists("C:\Program Files (x86)\TeamViewer") Then sTeamViewerDir = "C:\Program Files (x86)\TeamViewer" End If 'TeamViewerは毎年バージョンアップするので、 'TeamViewer10からTeamViewer20までチェックして、最新のログファイルを見つけます。 For iVersion = 10 To 20 If IO.File.Exists(sTeamViewerDir & "\TeamViewer" & CStr(iVersion) & "_Logfile.log") Then sLogFileName = sTeamViewerDir & "\TeamViewer" & CStr(iVersion) & "_Logfile.log" End If Next 'ログファイルが見つかったら、中身を読取ります。 If sLogFileName <> "" Then Dim sLogText As String Dim sTeamViewerID As String Dim sLogLines() As String Dim objFS As IO.FileStream Dim objSR As IO.StreamReader objFS = IO.File.Open(sLogFileName, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read) objSR = New IO.StreamReader(objFS, System.Text.Encoding.GetEncoding(932)) sLogText = objSR.ReadToEnd objSR.Close() objFS.Close() If sLogText <> "" Then '改行コードで文字列を分割します。 sLogLines = sLogText.Split(vbCrLf) Dim iLine As Integer For iLine = 0 To UBound(sLogLines) If sLogLines(iLine) <> "" Then '先頭のvbLFを削除して、「ID:」で始まる列を見つけます。 sLogLines(iLine) = sLogLines(iLine).Replace(vbLf, "") If sLogLines(iLine).StartsWith("ID:") = True Then '余分な文字を削除して、チームビューアーIDを抽出します。 sTeamViewerID = sLogLines(iLine).Replace("ID:", "") sTeamViewerID = sTeamViewerID.Replace(" ", "") End If End If Next If sTeamViewerID <> "" Then MessageBox.Show("チームビューアーIDは、" & sTeamViewerID & "です。") End If End If End If
ログファイルは、Teamviewer関係の何かにより使用中なので、FileStreamとStreamReaderでアクセスすることで、共有違反エラーを回避しました。
→VB.netで使用中のテキストファイルを読み取る方法