Как программно установить сообщение о статусе Live Messenger? - PullRequest
2 голосов
/ 08 ноября 2008

Я хочу иметь возможность изменить сообщение о статусе Live Messenger, но все, что я нашел, работает только для музыкального сообщения (см. этот снимок экрана , чтобы увидеть разницу между ними). ​​

Это возможно сделать, поскольку есть программы, которые могут изменить его, и некоторые альтернативные клиенты для Live Messenger также могут сами установить сообщение о состоянии. Мне просто нужно знать, как сделать это самому.

Пояснение: Решение должно работать с последними версиями Live Messenger (то есть бета-версия Wave 3). Работать со старыми версиями тоже хорошо, но я работаю с версиями 14.x.

Ответы [ 5 ]

1 голос
/ 23 апреля 2010

Крис, как программно установить музыкальное сообщение?

1 голос
/ 08 ноября 2008

Вы можете установить поверх MSN MsgPlus , что даст вам API для программирования через MSN. Затем вы можете создать скрипт, который вызывает вашу программу или программу, которая вызывает MSN.

1 голос
/ 13 февраля 2009

Нет программного способа установки сообщения о состоянии Live Messenger, которое работает с версиями, включая Live Wave 3.

1 голос
/ 08 ноября 2008

Конечно, из любого окна разговора, простое "/psm new message" будет обновлять поле статуса сообщения.

Но программно :

Здесь вы найдете исходный файл VB , который отправил новое сообщение в PSM (персональное сообщение Satus) ваших окон Live Messenger. Может быть, это поможет.

экстракт:

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
0 голосов
/ 14 мая 2009

Вы могли бы пойти на грязный обходной путь, используя функции Windows API для имитации пользовательского ввода.

...