パソコンを遠隔操作できるソフトで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で使用中のテキストファイルを読み取る方法