Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Управление чужой прогой Добавлено: 05.02.06 16:22  

Автор вопроса:  DaaGER | Web-сайт: smartic.ru | ICQ: 329195567 
Я часто пользуюсь проигрывателем Лайт Эллоу. Программа сворачивается в трей и ни чем не мешает. Я хочу сделать прогу которая управляла бы ею, когда она свёрнута.
Короче чтобы постоянно не разворачивать проигрыватель а менять звук, врубать следующий трек и т.д. через мою прогу.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 DaaGER



ICQ: 329195567 

Вопросов: 52
Ответов: 67
 Web-сайт: smartic.ru
 Профиль | | #1
Добавлено: 05.02.06 16:23
P.S. Кто поможет, если ему не трудно пусть пришлёт исходники на daager@mail.ru

Ответить

Номер ответа: 2
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #2
Добавлено: 06.02.06 02:37
Глянь в хелпах, если там такое не предусмотрено, свяжись с создателями проги и посоветуй встроить. За разную муть типа эмуляции горячих клавиш лучше и не берись - лажово это как-то...

Ответить

Номер ответа: 3
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #3 Добавлено: 06.02.06 18:00
SendKeys - встроено в VB и очень просто. Эмулирует клавиши.

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 06.02.06 21:29
Чтобы в полной мере управлять чужой прогой, надо ее сделать своей :) А для этого нет ничего лучше как написать dll не ActiveX внедрить ее в процесс и управлять/изменять что душе угодно. Одно плохо, dll должна быть написана не на VB :(

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 06.02.06 21:30
PS
В некоторых случаях, как например в WinAmp, можно обойтись SendMessage'ем...

Ответить

Номер ответа: 6
Автор ответа:
 Alex



Вопросов: 13
Ответов: 26
 Web-сайт: metalosplav.ru
 Профиль | | #6
Добавлено: 09.02.06 15:12
Главное получить хендл и коды комманд.
Private Declare Function FindWindow  Lib "user32" Alias "FindWindowA" ( _
                ByVal lpClassName As String, _
                ByVal lpWindowName As String _
) As Long

Private Declare Function SendMessage   Lib "user32" Alias "SendMessageA" ( _
   ByVal hWnd As Long, _
   ByVal wMsg As Long, _
   ByVal wParam As Long, _
   lParam As Any _
) As Long

Private Declare Sub Sleep  Lib "kernel32" ( _
   ByVal dwMilliseconds As Long _
   ;)

'system
Private Const WM_USER = &H400
Private Const WM_COMMAND = &H111
'winamp
Private Const WM_Raise_Volume = 40058       'increase 1%
Private Const WM_Lower_Volume = 40059       'decrease 1%
Private Const WM_Close_Winamp = 40001
Private Const WM_Previous = 40044
Private Const WM_Next = 40048
Private Const WM_Play = 40045
Private Const WM_Pause_Unpause = 40046
Private Const WM_Stop = 40047
Private Const WM_Toggle_Shuffle = 40023
Private Const WA_SETVOLUME = 122    

Dim Response As String
Dim Connections As Long

Private Sub Form_Load()
wnsServer(0).Protocol = sckTCPProtocol
wnsServer(0).LocalPort = 806
wnsServer(0).Listen
End Sub

Private Sub wnsServer_ConnectionRequest(index As Integer, ByVal requestID As Long)
If index = 0 Then
    Connections = Connections + 1
        Load wnsServer(Connections) 'Load New control
            wnsServer(Connections).LocalPort = 0
        wnsServer(Connections).Accept requested
        end if
    DoEvents
End Sub

Private Sub wnsServer_DataArrival(index As Integer, ByVal bytesTotal As Long)
    Dim hWnd As Long
    
    hWnd = FindWindow("Winamp v1.x", vbNullString)
    'если к нам подконектились и если у нас присутствует
    'винамп, ждем команду для отправки
    If bytesTotal <> 0 Then
      
      wnsServer(index).GetData Response 'получаем данные
          
      'если нет винампа то можно только выходить
      If hWnd = 0 Then
        Exit Sub
      End If

  'обработка поступившей команды
      'Next Track
      If InStr(1, Response, "next", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Next, vbNull
        Exit Sub
      End If
      'Previous Track
      If InStr(1, Response, "previous", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Previous, vbNull
        Exit Sub
      End If
      'Play
      If InStr(1, Response, "play", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Play, vbNull
        Exit Sub
      End If
      'Stop
      If InStr(1, Response, "stop", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Stop, vbNull
        Exit Sub
      End If
      'Shuffle
      If InStr(1, Response, "shuffle", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Toggle_Shuffle, vbNull
        Exit Sub
      End If
      'Pause/UnPause
      If InStr(1, Response, "pause", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Pause_Unpause, vbNull
        Exit Sub
      End If
      'Close
      If InStr(1, Response, "close", vbTextCompare) <> 0 Then
        SendMessage hWnd, WM_COMMAND, WM_Close_Winamp, vbNull
        Exit Sub
      End If
      'Volume inc
      If InStr(1, Response, "+", vbTextCompare) <> 0 Then
        If Response = "+" Then Response = "+1"
        Volume hWnd, CInt(Mid$(Response, InStr(1, Response, "+";) + 1, 3)), 1
        Exit Sub
      End If
      'Volume dec
      If InStr(1, Response, "-", vbTextCompare) <> 0 Or
         InStr(1, Response, "0", vbTextCompare) <> 0 Then
        If Mid$(Response, InStr(1, Response, "-";) + 1, 3) < "A" Then
         If Response = "-" Then Response = "-1"
         Volume hWnd, CInt(Mid$(Response, InStr(1, Response, "-";) + 1, 3)), -1
        End If
      End If
  End If 'bytes
End Sub

Private Sub Volume(hWnd As Long, percent As Integer, incdec As Long)
    Dim i As Long
        For i = 0 To percent - 1
            Select Case incdec
                    Case -1
                        SendMessage hWnd, WM_COMMAND, WM_Lower_Volume, vbNull
                    Case 1
                        SendMessage hWnd, WM_COMMAND, WM_Raise_Volume, vbNull
            End Select
        Next i
End Sub

Private Sub wnsServer_SendComplete(index As Integer)
    Sleep 1000
    CloseSocket index
End Sub

'Само закрытие сокета и выгрузка его из памяти.
Private Sub CloseSocket(index As Integer)    
    wnsServer(index).Close
    Unload wnsServer(Connections)
    Connections = Connections - 1
    DoEvents                
End Sub

Пример организации через TCP протокол. А вообще где то была хорошая статья на codenet как написать плагин под WinAmp на VB

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам