aghel110
جمعه 31 تیر 1384, 02:18 صبح
با سلام
جطور برنامه (وی بی )بنویسم که مثلا اکر 
اکر دکمه  را در برنامه (وی بی ) فشار دادیم
winampاجرا شود
با دکمه دیکر خاموش شود
و تمام ایتم های winamp قابل ىسترسی باشه
و بتوان انها را کنترل کرد )play,pause,next,...)
بابک زواری
جمعه 31 تیر 1384, 11:54 صبح
یک dllهست که این کار رو برات میکنه 
برای پیدا کردن اون googleاش کن
PalizeSoftware
جمعه 31 تیر 1384, 14:16 عصر
اولین بار من این کد رو برای پخش فایلهای MP3 توسط Winamp نوشتم. حدود 6 سال پیش.
حالا میذارم اینجا تا دوستان به نحوه کار آشنا بشن.
برای اینکه نرمافزار Winamp رو تحت کنترل خودتون داشته باشید باید چند مطلب رو بدونید:
1- این کار با نگارش پایینتر از 2.0 جواب میده.
2- ابتدا باید هندل پنجره Winamp رو به این صورت بدست بیارید:
Winamp's window is found using:
hwnd_winamp = FindWindow("Winamp v1.x",NULL);
3- تمام عملکرد نرمافزار بصورت Message به این هندل ارسال میشه و خود Winamp جوری نوشته شده که به تمام پیامهای WM_Command پاسخ میده.
خب اینم کل کد که بصورت توابع جداگانه نوشته شده:
Public sm As Long
Global hamp As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
	(ByVal lpClassName As String, ByVal lpWindowName As Any) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
	(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function PostMessage Lib "user32" Alias "PstMessageA" _
	(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" _
	(ByVal hwnd As Long, _
	ByVal msg As Long, _
	ByVal wParam As Long, _
	ByVal lParam As Long, _
	ByVal fuFlags As Long, _
	ByVal uTimeout As Long, lpdwResult As Long) As Long
Const SMTO_BLOCK = &H1
Const WM_USER = &H400
Const WM_WA_IPC = WM_USER
Const WM_COMMAND = &H111
Const WinampPath = "I:\Program Files\Winamp\"
Public Function IsWinamp() As Boolean
  hamp = FindWindow("Winamp v1.x", &H0&)
  If hamp = 0 Then
    Shell WinampPath & "winamp.exe", vbHide
    hamp = FindWindow("Winamp v1.x", &H0&)
  End If
  If hamp = 0 Then
    IsWinamp = False
  Else
    IsWinamp = True
  End If
End Function
Public Function WinampGetTime()
    Dim songpos As Long
    SendMessageTimeout hamp, WM_USER, 0, 105, SMTO_BLOCK, 1000, songpos
    WinampGetTime = songpos
End Function
Public Function WinampGetLen()
    Dim songl As Long
    SendMessageTimeout hamp, WM_USER, 1, 105, SMTO_BLOCK, 3000, songl
    WinampGetLen = songl
End Function
Public Sub WinampPlayList()
  SendMessageTimeout hamp, WM_USER, 0, 102, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampSetFileToPlayList(fname As String)
    ftemp = fname + Chr$(0)
    For i = 1 To Len(ftemp)
        SendMessageTimeout hamp, WM_WA_IPC, Asc(Mid$(ftemp, i, 1)), 100, SMTO_BLOCK, 1000, sm
    Next
End Sub
Public Sub WinampClearPlayList()
  SendMessageTimeout hamp, WM_USER, 0, 101, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampPlayb()
  SendMessageTimeout hamp, WM_COMMAND, 40045, 0, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampPauseb()
  SendMessageTimeout hamp, WM_COMMAND, 40046, 0, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampStopb()
  SendMessageTimeout hamp, WM_COMMAND, 40047, 0, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampForward()
  SendMessageTimeout hamp, WM_COMMAND, 40060, 0, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampBackward()
  SendMessageTimeout hamp, WM_COMMAND, 40061, 0, SMTO_BLOCK, 1000, sm
End Sub
Public Function WinampIsPlaying() As Boolean
  SendMessageTimeout hamp, WM_USER, 0, 104, SMTO_BLOCK, 1000, sm
  If sm = 1 Then
    WinampIsPlaying = True
  ElseIf sm = 0 Then
    WinampIsPlaying = False
  End If
End Function
Public Sub WinampSetVolume(v As Byte)
  SendMessageTimeout hamp, WM_USER, v, 122, SMTO_BLOCK, 1000, sm
End Sub
Public Sub WinampJmpToTime(t As Long)
  SendMessageTimeout hamp, WM_USER, t, 106, SMTO_BLOCK, 1000, sm
End Sub
Public Function WinampIsPaused() As Boolean
  SendMessageTimeout hamp, WM_USER, 0, 104, SMTO_BLOCK, 1000, sm
  If sm = 3 Then
    WinampIsPaused = True
  Else
    WinampIsPaused = False
  End If
End Function
'SendMessageTimeout hamp, WM_USER, <command param> ,<command>, SMTO_BLOCK, 1000, sm
'===============================PLAY WINAMP=====================
'SendMessageTimeout hamp, WM_USER, 0, 102, SMTO_BLOCK, 1000, sm
'==============================SHOW ABOUT WINAMP=====================
'SendMessageTimeout hamp, WM_COMMAND, 40041, 0, SMTO_BLOCK, 1000, sm
'===============================Show EQULIZER =====================
'SendMessageTimeout hamp, WM_COMMAND, 40036, 0, SMTO_BLOCK, 1000, sm
با کمی ذوق میتونید برنامهای بنویسید که با اجرای فرامین از طریق میکروفن نرمافزار رو کنترل کنید
aghel110
جمعه 31 تیر 1384, 22:53 عصر
از شما تشکر میکنم 
اما یه کم توضیح هم میخواستم 
چون برنامه نویسی را تازه شروع کردم 
باز هم از شما تشکر میکنم 
و سوال دیگه ای که داشتم اینه
ایا چنین برنامه ای برای jetaudio 
می توان نوشت(با توضیح ساده)
PalizeSoftware
جمعه 31 تیر 1384, 23:40 عصر
دوست عزیز چه توضیحی در ارتباط با برنامه میخواستید؟
اما در مورد JetAudio بعید میدونم اینکار عملی باشه. این فرامین رو که شما به Winamp ارسال میکنید مخصوص این نرمافزار در نظر گرفته شده و تعریف شده است.
aghel110
شنبه 01 مرداد 1384, 03:40 صبح
از شما دوست گرامی سپازگزارم مشکلم با دقت در برنامه حل شد .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.