会社行きたくなかったんです。

自由になりたくて会社辞めました

IT Visual Studio プログラミング

TeamViewerIDをVB.netで確認する方法

投稿日:

パソコンを遠隔操作できるソフトでTeamViewer(チームビューアー)というものがあります。
顧客の遠隔サポートで使っている企業もあると思います。
チームビューアーIDがわからなくなってしまった場合、利用者に電話で、

スタート→全てのプログラムの中のTeamViewerを見つけてください。
カタカナのチームじゃなくて、アルファベットで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で使用中のテキストファイルを読み取る方法

-IT, Visual Studio, プログラミング

Copyright© 自由になりたくて会社辞めました , 2024 AllRights Reserved Powered by AFFINGER4.