Отправить текст в Skype с помощью WM_SETTEXT API - PullRequest
0 голосов
/ 20 октября 2018

Я видел учебник о том, как установить текст для внешнего приложения с помощью API, и я попробовал этот код .. Нет ошибки, но она не работает, как ожидалось

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal 
lpClassName As String, ByVal lpWindowName As String) As Long
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
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal 
hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal 
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) 
As Long
'Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd 
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" 
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam 
As String) As Long


Const SW_NORMAL = 1
Const WM_SETTEXT = &HC

Sub Test()
Dim x, hwnd As Long, TLogin As Long, subWindow As Long

'hwnd = FindWindow(vbNullString, "Untitled - Notepad")
x = ShellExecute(hwnd, "open", "C:\Program Files\Skype\Phone\Skype.exe", 0, 
0, SW_NORMAL)
If x = 2 Or x = 3 Then Exit Sub

Do
    DoEvents
    hwnd = FindWindow("TLoginForm", vbNullString)
Loop Until hwnd > 0

Application.Wait Now + TimeValue("00:00:03")

'First Try
'    TLogin = FindWindowEx(hwnd, 0&, "TLoginAppControl", vbNullString)
'    subWindow = FindWindowEx(TLogin, 0&, "Shell Embedding", vbNullString)
'    subWindow = FindWindowEx(subWindow, 0&, "Shell DocObject View", vbNullString)
'    subWindow = FindWindowEx(subWindow, 0&, "Internet Explorer_Server", vbNullString)
'    Call SendMessageByString(subWindow, WM_SETTEXT, 0, "HelloWorld")


'Second Try
'    TLogin = FindWindowEx(hwnd, 0&, "TLoginControlBar", vbNullString)
'    Call SendMessageByString(TLogin, WM_SETTEXT, 0, "HelloWorld")

'Third Try
TLogin = FindWindowEx(hwnd, 0&, "TNativeLoginControl", vbNullString)
Call SendMessageByString(TLogin, WM_SETTEXT, 0, "HelloWorld")
End Sub

В коде естьтри попытки, но ни одна из них не позволяет мне установить текст для имени скайпа .. Это скриншот Spy ++ enter image description here

И когда я использовал Spy ++ для поиска нужного окна, яполучил это и обнаружил, что "HelloWorld" стал заголовком для этого окна ... но не имею понятия, что находится в этом окне enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...