【问题标题】:How can I programmatically set the status message for Live Messenger?如何以编程方式设置 Live Messenger 的状态消息?
【发布时间】:2008-11-08 12:28:24
【问题描述】:

我希望能够更改 Live Messenger 的状态消息,但我发现的所有内容都只适用于音乐消息(请参阅 this screenshot 了解两者之间的区别)。

可以这样做,因为有些程序可以更改它,并且 Live Messenger 的一些备用客户端也可以自己设置状态消息。我只需要自己知道如何做到这一点。

澄清:该解决方案需要与最新版本的 Live Messenger(即 wave 3 beta)配合使用。使用旧版本也很好,但我使用的是 14.x 版本。

【问题讨论】:

    标签: status-message


    【解决方案1】:

    当然,在任何对话窗口中,一个简单的“/psm new message”都会更新消息状态字段。

    但是以编程方式

    您会在此处找到VB source file,它向您的 Live Messenger 窗口的 PSM(个人状态消息)发送了一条新消息。可能会有帮助。

    提取:

    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_COMMAND = &H111
    Private Const WM_CHAR = &H102
    Private Const VK_RETURN = &HD
    
    Private Function SetPSM(ByVal text As String) As Boolean
       Dim hParentWnd, hChildWnd As Long
       SetPSM = False
       hParentWnd = FindWindow("MSBLWindowClass", vbNullString)
       If hParentWnd <> 0 Then
          hChildWnd = FindWindowEx(hParentWnd, 0, "DirectUIHWND", vbNullString)
          If hChildWnd <> 0 Then
             PostMessage hParentWnd, WM_COMMAND, 56606, 0
             Dim i As Integer
             For i = 1 To Len(text)
                Call PostMessage(hChildWnd, WM_CHAR, Asc(Mid$(text, i, 1)), 0)
             Next i
             PostMessage hChildWnd, WM_CHAR, VK_RETURN, 0
             SetPSM = True
          End If
       End If
    End Function
    
    Private Sub cmdSetPSM_Click()
       SetPSM txtPSM.text
    End Sub
    

    【讨论】:

    • /psm“技巧”不起作用。刚刚在 14.0.5027.908(当前的公开测试版)上尝试过。
    • 同样,代码也没有。 FindWindow 为 MSBLWindowClass 返回 0。
    • 在 8.5.1302.1016 上完美运行
    • 如果我使用的是 8.5,我就不需要问这个问题了。已经有一个程序可以完全满足我的要求,它适用于 7.x-8.5。此外,不能保持最新的东西不应该被保留。
    【解决方案2】:

    您可以通过您的 MSN MsgPlus 进行安装,这将为您提供通过 MSN 进行编程的 API。然后,您可以创建一个脚本来调用您的程序或调用 MSN 的程序。

    【讨论】:

    • 我不会用 3rd 方 cruft 填充我的程序来做一些我可以在没有说 cruft 的情况下完成的事情。这样做是完全不负责任的。
    【解决方案3】:

    没有编程方式设置适用于包括 Live Wave 3 在内的版本的 Live Messenger 状态消息。

    【讨论】:

      【解决方案4】:

      克里斯,如何以编程方式设置音乐消息?

      【讨论】:

        【解决方案5】:

        您可能会使用 Windows API 函数来模拟用户输入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-05
          • 2018-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多