Option Explicit On Option Strict On Imports System.Text.RegularExpressions Imports System.Net Module Main Sub Main() 'Lange URL aus Zwischenablage verwenden. Dim clipboardText As String = My.Computer.Clipboard.GetText If Not Uri.IsWellFormedUriString(clipboardText, UriKind.Absolute) Then Exit Sub End If Dim longUrl As New Uri(clipboardText) '"Stamm" der langen URL ermitteln, inklusive Gruppennamen. Dim urlStem As String = longUrl.GetLeftPart(UriPartial.Authority) For i As Integer = 0 To 2 urlStem &= longUrl.Segments(i) Next 'Fragmentbezeichner bevorzugt verwenden. Dim hash As String If longUrl.Fragment <> "" Then '"#" am Anfang entfernen. hash = longUrl.Fragment.Substring(1) Else 'Alternativ das letzt Pfadsegment nehmen. hash = longUrl.Segments(longUrl.Segments.Length - 1) End If 'Quelltext der Nachricht abrufen. Dim wc As New WebClient Dim sourceUrl As String = urlStem & "msg/" & hash & "?dmode=source&output=gplain" Dim source As String = wc.DownloadString(sourceUrl) 'Mit regulärem Ausdruck im Quelltext nach Message-ID suchen. Dim r As New Regex("^Message-ID:\s<(.*)>$", RegexOptions.Multiline) Dim m As Match = r.Match(source) If m.Success Then Dim rawMid As String = m.Groups(1).Value 'Für Google müssen @, % und # maskiert werden. Dim googleMid As String = rawMid.Replace("%", "%25").Replace("@", "%40").Replace("#", "%23") My.Computer.Clipboard.SetText("http://google.com/groups?selm=" & googleMid) 'Für news:-URLs muß nur % maskiert werden. Dim urlMid As String = rawMid.Replace("%", "%25") 'My.Computer.Clipboard.SetText("news:" & urlMid) End If End Sub End Module