Я видел учебник о том, как установить текст для внешнего приложения с помощью 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 ++
И когда я использовал Spy ++ для поиска нужного окна, яполучил это и обнаружил, что "HelloWorld" стал заголовком для этого окна ... но не имею понятия, что находится в этом окне