trancexx Posted December 20, 2010 Author Share Posted December 20, 2010 @shanet, I will link your script as an example of usage from the first post if you replace ini file with registry entry and edit the header (since that script is clearly not written by me). ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
shanet Posted December 21, 2010 Share Posted December 21, 2010 (edited) @shanet, I will link your script as an example of usage from the first post if you replace ini file with registry entry and edit the header (since that script is clearly not written by me). Yes, that is another way to do it, however I thought it would be easier to do a stations.ini file - also from a point of compatibility as I personally run it off my USB, however if someone wants to change it, or requests it changed, I as well as others will be happy to do that. More stations: http://89.238.146.240:9050 -- Doesnt work for me any more. http://89.238.146.145:9050 -- Does work for me. http://173.193.20.157:9020 (^Same broadcast^) http://63.247.82.38:8000 http://87.230.84.182:6666 Trancexx, I have had further ideas as to the further development to my version, where they can do comments and names instead of the IP address. shanet Edited December 30, 2010 by shanet [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
trancexx Posted December 21, 2010 Author Share Posted December 21, 2010 It's irrelevant from where you run your program or script. Forget about ini files. Registry is the place for that stuff. Create one key under HKCU an use for the purposes of the app. Ini files are for dummies, to put it nicely.Yes, and I was serious ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
wakillon Posted December 21, 2010 Share Posted December 21, 2010 (edited) Sorry, I didn't notice that you had posted one?However the GUI is screwed up.And channel change doesn't work.And I don't see any .ini file.Also, your stop button does the same thing as the pause button.Maybe the text in pause would make more sense as stop?Anyway, that's enough of me killing your version, nice shot.Look at mine?shanetgui was just a basic example.channel change works well, you must stop playing before.you don't see any ini file, that's why i said ini file or combobox.stop button doesn't permit to continue the streaming that's why it's not a pause button.You can find similar buttons in a media player ! Edit: I don't like ini file i prefer working with registry. Edited December 21, 2010 by wakillon AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
Ascend4nt Posted December 21, 2010 Share Posted December 21, 2010 I agree with shanetPortability is a very big deal these days, and with a script, especially a simple one with no system integration - forget the registry. Use .INI or your own proprietary format to save stuff in, no matter what 'good coding practices' tell people. We don't need more bloat in the registry for simple things.One huge benefit side to this mindset - if you reinstall an O/S, you can just copy over stuff like shanet's script from a 'PortableApps' folder - and you have a complete suite of tools that don't need installing or reconfiguring. (using a launcher like PStart would be all thats needed)Anyway, regardless of all that - cool script!I would also say its pretty obvious that one should say in the topic what the requirements are (AutoIt Object), but hey at least the 2nd.6th, 9th,12th.. etc. posts takes care of any confusion.. My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
trancexx Posted December 21, 2010 Author Share Posted December 21, 2010 (edited) Ascend4nt, I'm pretty confident one will likely run into problems with HD space and ini files before any problem caused by using registry. And I'm aware of the sizes of HDs nowdays.I'm yet to see valid argument that would give advantage to ini files over using registry. That one about reinstalling the system isn't.It's more than just good coding practices.edit:Well, you know how I like attention and stuff like that. It's all part of my master plan to...P.S. don't tell anyone - for your eyes only Edited December 21, 2010 by trancexx ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
trancexx Posted December 24, 2010 Author Share Posted December 24, 2010 I couldn't help noticing this thread is rated 3 with too people voting. One rate is 4, other is ...well you calculate it. If you have something against the thread starter that's perfectly ok, you can leave comment in their profile, or whatever. Rating is for the code. Learn not to abuse the system. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
shanet Posted December 24, 2010 Share Posted December 24, 2010 (edited) Ascend4nt, I'm pretty confident one will likely run into problems with HD space and ini files before any problem caused by using registry. And I'm aware of the sizes of HDs nowdays. I'm yet to see valid argument that would give advantage to ini files over using registry. That one about reinstalling the system isn't. It's more than just good coding practices. edit: Well, you know how I like attention and stuff like that. It's all part of my master plan to... P.S. don't tell anyone - for your eyes only I dont really see how that is relevant, because: 1. How many stations do you want? A single stations.ini file would take all of 500 bytes? However in the registry, it would take more space because it needs the registry path as well. However I will do a registry one if you wish. btw there's your rating shanet --EDIT-- Here it is, not finished, but it handles the registry instead of a .ini file. It still needs a bit of work, but its Christmas and I would like to spend today with my family. It just needs an add button at the moment, which is not working so I have commented it out. expandcollapse popup#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_Res_Description=Internet Radio! #AutoIt3Wrapper_Res_Fileversion=2.0 ;------LIVE STREAM PLAYER---------------------------------------; ;.......script written by trancexx (trancexx at yahoo dot com)..; ;.......and edited by shanet....................................; ; ; ;-------New Features ; ; -- Close to tray ; ; You can now minimize to the taskbar, and close to the ; ; system tray! ; ; To exit, right click the tray icon and select exit. ; ; To show the GUI, double click the icon. ; ; ; ; -- Select station ; ; You can now change the station and add new stations! ; ; To change the station, choose the one you wish to change; ; to and click change. ; ;---------------------------------------------------------------; #include <objects\AutoitObject.au3> #include <ComboConstants.au3> ;#include <Popper.au3> Opt("TrayMenuMode", 1) Opt("MustDeclareVars", 1) Global $sMediaFile, $stations If RegRead("HKCU\Software\LiveStreaming", "stations") = "" Then RegWrite("HKCU\Software\LiveStreaming", "stations", "REG_SZ", "http://173.193.14.170:8012|http://94.76.208.7:8001|http://212.45.104.50:8050|http://119.207.75.238:11250|http://norway.discovertrance.com:8000|http://u15c.di.fm:80/di_minimal|http://scfire-dtc-aa01.stream.aol.com:80/stream/1003|http://ns24907.ovh.net:8000|http://63.247.82.38:8000|http://89.238.146.240:9050|http://87.230.84.182:6666") $stations = RegRead("HKCU\Software\LiveStreaming", "stations") Else $stations = RegRead("HKCU\Software\LiveStreaming", "stations") EndIf $sMediaFile = StringSplit($stations, "|") $sMediaFile = $sMediaFile[1] $stations = StringReplace($stations, $sMediaFile & "|", "") ; Error monitoring Global $oCOMError = ObjEvent("AutoIt.Error", "_ErrFunc") ; Let the magic begin... _AutoItObject_StartUp() ; DLLs to use Global $oUSER32DLL = _AutoItObject_DllOpen("user32.dll") ; GUI Global $hGUI = GUICreate("Live Streaming", 258, 132) Global $hVolSlider = GUICtrlCreateSlider(10, 14, 28, 64, 10 + 16) GUICtrlSetTip(-1, "100 %VOL") GUICtrlCreateLabel("VOL", 40, 21, 68, 20) GUICtrlSetFont(-1, 9, -1, 2, "Curier New") Global $hButtonPlay = GUICtrlCreateButton("&Pause", 80, 20, 115, 25) Global $hLabelInfo = GUICtrlCreateLabel(" ...Connecting...", 90, 60, 130, 25) GUICtrlSetFont(-1, 9, -1, 2, "Arial") Global $hLevMet Global $hStatSel = GUICtrlCreateCombo($sMediaFile, 20, 82, 222, 15, $CBS_DROPDOWNLIST) GUICtrlSetData($hStatSel, $stations) Global $min2tray = GUICtrlCreateCheckbox("Close to Tray", 173, 110) GUICtrlSetState($min2tray, 1) ;Global $addBtn = GUICtrlCreateButton("Add Station", 5, 105) ; Tray Global $trayinfo = 0 TraySetClick(16) Global $traypaus = TrayCreateItem("Pause") TrayItemSetState($traypaus, 4) Global $trayexit = TrayCreateItem("Exit") TrayItemSetState($trayexit, 4) ; Objects Global $oGraphBuilder, $oMediaControl, $oBasicAudio, $oAudioMeterInformation ; Level-meter _AudioVolObject($oAudioMeterInformation) If Not @error Then ; if this objects are available on the system then add control for it $hLevMet = GUICtrlCreateProgress(220, 15, 20, 60, 4) AdlibRegister("_LevelMeter", 45) EndIf ; Misc variables Global $iPlaying = 1, $iVol ; Show GUI GUISetState() ; Main loop While 1 Switch GUIGetMsg() Case $hStatSel GUICtrlSetFont($hLabelInfo, 9, -1, 2, "Arial") GUICtrlSetData($hLabelInfo, "...Connecting...") GUICtrlSetColor($hLabelInfo, 0x000000) $sMediaFile = GUICtrlRead($hStatSel) ; Case $addBtn ; _Add() Case -3 Global $mintray $mintray = GUICtrlRead($min2tray) if $mintray = 1 Then if $trayinfo = 0 Then $trayinfo = 1 MsgBox(0, "Close to Tray", "You have closed to the system tray." & @LF & "To show the GUI again, double click the tray icon." & @LF & "To exit, right click the tray icon and choose exit.") EndIf GUISetState(@SW_HIDE, $hGUI) Else ExitLoop EndIf Case $hButtonPlay If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") TrayItemSetText($traypaus, "Play") TrayItemSetState($traypaus, 4) $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") TrayItemSetText($traypaus, "Pause") TrayItemSetState($traypaus, 4) $iPlaying = 1 EndIf EndSwitch Switch TrayGetMsg() Case $trayexit ExitLoop Case $traypaus If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") $iPlaying = 1 EndIf Case -13 GUISetState(@SW_SHOW, $hGUI) EndSwitch If $iVol <> GUICtrlRead($hVolSlider) Then $iVol = GUICtrlRead($hVolSlider) If IsObj($oBasicAudio) Then $oBasicAudio.put_Volume(-Exp(0.65 * ($iVol * 1.4) / 10)) ; Only works between 0 and 65%. Default = 10.84 GUICtrlSetTip($hVolSlider, 100 - $iVol & " %VOL") EndIf If $sMediaFile Then _RenderFile($sMediaFile) WEnd ; Free before the end _Quit() ;THE END Func _Quit() AdlibUnRegister() ; Release objests _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) $oAudioMeterInformation = 0 ; Bye bye Exit EndFunc ;==>_Quit ;-- Shane's Functions ;Func _Add() ; Local $win2 = GUICreate("Add Station", 230, 80) ; Local $newStation = GUICtrlCreateInput("", 40, 20, 160) ; Global $submitStn = GUICtrlCreateButton("OK", 140, 50, 60) ; GUISetState(@SW_SHOW, $win2) ; While 1 ; If GUIGetMsg() = $sumbitStn Then ; RegWrite("HKCU\Software\LiveStreaming", "stations", "REG_SZ", $stations & "|" & GUICtrlRead($newStation)) ; GUIDelete($win2) ; EndIf ; WEnd ;EndFunc ;==>_Add ;-- End of Shane's Functions Func _LevelMeter() Local $aCall = $oAudioMeterInformation.GetPeakValue(0) If IsArray($aCall) Then Local $iCurrentRead = 100 * $aCall[1] GUICtrlSetData($hLevMet, $iCurrentRead + 1) GUICtrlSetData($hLevMet, $iCurrentRead) EndIf EndFunc ;==>_LevelMeter Func _AudioVolObject(ByRef $oAudioMeterInformation) Local Const $sCLSID_MMDeviceEnumerator = "{BCDE0395-E52F-467C-8E3D-C4579291692E}" Local Const $sIID_IMMDeviceEnumerator = "{A95664D2-9614-4F35-A746-DE8DB63617E6}" Global $dtagIMMDeviceEnumerator = $dtagIUnknown & _ "EnumAudioEndpoints hresult(dword;dword;ptr*);" & _ "GetDefaultAudioEndpoint hresult(dword;dword;ptr*);" & _ "GetDevice hresult(wstr;ptr*);" & _ "RegisterEndpointNotificationCallback hresult(ptr);" & _ "UnregisterEndpointNotificationCallback hresult(ptr);" Local $dtagIMMDevice = $dtagIUnknown & _ "Activate hresult(ptr;dword;variant*;ptr*);" & _ "OpenPropertyStore hresult(dword;ptr*);" & _ "GetId hresult(wstr*);" & _ "GetState hresult(dword*);" Local Const $sIID_IAudioMeterInformation = "{C02216F6-8C67-4B5B-9D00-D008E73E0064}" Local $dtagIAudioMeterInformation = $dtagIUnknown & _ "GetPeakValue hresult(float*);" & _ "GetMeteringChannelCount hresult(dword*);" & _ "GetChannelsPeakValues hresult(dword;float*);" & _ "QueryHardwareSupport hresult(dword*);" ; MMDeviceEnumerator Local $oMMDeviceEnumerator = _AutoItObject_ObjCreate($sCLSID_MMDeviceEnumerator, $sIID_IMMDeviceEnumerator, $dtagIMMDeviceEnumerator) If @error Then Return SetError(1, 0, 0) ; DefaultAudioEndpoint Local $aCall = $oMMDeviceEnumerator.GetDefaultAudioEndpoint(0, 0, 0) ; eRender, eConsole If Not IsArray($aCall) Then Return SetError(2, 0, 0) Local $oDefaultDevice = _AutoItObject_WrapperCreate($aCall[3], $dtagIMMDevice) ; AudioMeterInformation Local $pIID_IAudioMeterInformation = _AutoItObject_CLSIDFromString($sIID_IAudioMeterInformation) $aCall = $oDefaultDevice.Activate(Number(DllStructGetPtr($pIID_IAudioMeterInformation)), 1, 0, 0) If Not IsArray($aCall) Then Return SetError(3, 0, 0) $oAudioMeterInformation = _AutoItObject_WrapperCreate($aCall[4], $dtagIAudioMeterInformation) ; That's it Return True EndFunc ;==>_AudioVolObject Func _InitBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) ; Needed identifiera Local $sCLSID_FilterGraph = "{E436EBB3-524F-11CE-9F53-0020AF0BA770}" Local $sIID_IGraphBuilder = "{56A868A9-0AD4-11CE-B03A-0020AF0BA770}" ; More... Local $tIID_IMediaControl = _AutoItObject_CLSIDFromString("{56A868B1-0AD4-11CE-B03A-0020AF0BA770}") Local $tIID_IBasicAudio = _AutoItObject_CLSIDFromString("{56A868B3-0AD4-11CE-B03A-0020AF0BA770}") ; Define IGraphBuilder methods Local $dtagIGraphBuilder = $dtagIUnknown & _ "AddFilter hresult(ptr;wstr);" & _ "RemoveFilter hresult(ptr);" & _ "EnumFilters hresult(ptr*);" & _ "FindFilterByName hresult(wstr;ptr*);" & _ "ConnectDirect hresult(ptr;ptr;ptr);" & _ "Reconnect hresult(ptr);" & _ "Disconnect hresult(ptr);" & _ "SetDefaultSyncSource hresult();" & _ ; IFilterGraph "Connect hresult(ptr;ptr);" & _ "Render hresult(ptr);" & _ "RenderFile hresult(wstr;ptr);" & _ "AddSourceFilter hresult(wstr;wstr;ptr*);" & _ "SetLogFile hresult(dword_ptr);" & _ "Abort hresult();" & _ "ShouldOperationContinue hresult();" ; IGraphBuilder ; Wrapp IGraphBuilder interface $oGraphBuilder = _AutoItObject_ObjCreate($sCLSID_FilterGraph, $sIID_IGraphBuilder, $dtagIGraphBuilder) If @error Then Return SetError(1, 0, False) ; IMediaControl IDispatch Local $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IMediaControl)), 0) If IsArray($aCall) And $aCall[2] Then $oMediaControl = _AutoItObject_PtrToIDispatch($aCall[2]) Else Return SetError(2, 0, False) EndIf Local $pBasicAudio ; Get pointer to IBasicAudio interface $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IBasicAudio)), 0) If IsArray($aCall) And $aCall[2] Then $pBasicAudio = $aCall[2] Else Return SetError(3, 0, False) EndIf ; IBasicAudio is dual interface. Defining vTable methods: Local $dtagIBasicAudio = $dtagIDispatch & _ "put_Volume hresult(long);" & _ "get_Volume hresult(long*);" & _ "put_Balance hresult(long);" & _ "get_Balance hresult(long*);" ; IBasicAudio ; Wrapp it: $oBasicAudio = _AutoItObject_WrapperCreate($pBasicAudio, $dtagIBasicAudio) If @error Then Return SetError(4, 0, False) Return True ; There EndFunc ;==>_InitBuilder Func _ReleaseBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) $oMediaControl.Stop() $oBasicAudio = 0 $oMediaControl = 0 $oGraphBuilder.Release() ;<-! $oGraphBuilder = 0 EndFunc ;==>_ReleaseBuilder Func _RenderFile(ByRef $sMediaFile) _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) _InitBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) If Not _WMAsfReaderLoad($sMediaFile) Then $oUSER32DLL.MessageBeep("int", "dword", 48) $sMediaFile = "" Return SetError(1, 0, False) EndIf $oCOMError.number = 0 ; set no-error condition $oMediaControl.Run() ; Check for error If $oCOMError.number Then ; GUISetState(@SW_SHOW, $hGUI) GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, "Streaming failed") GUICtrlSetColor($hLabelInfo, 0xFF0000) MsgBox(48, "Error", "Failed to stream", 0, $hGUI) Else GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, " Connected!") EndIf $sMediaFile = "" Return True EndFunc ;==>_RenderFile Func _WMAsfReaderLoad($sFile) Local Const $sCLSID_WMAsfReader = "{187463A0-5BB7-11d3-ACBE-0080C75E246E}" ; IBaseFilter definition Local Const $sIID_IBaseFilter = "{56a86895-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIBaseFilter = $dtagIUnknown & _ "GetClassID hresult(ptr*);" & _; IPersist "Stop hresult();" & _ "Pause hresult();" & _ "Run hresult(int64);" & _ "GetState hresult(dword;dword*);" & _ "SetSyncSource hresult(ptr);" & _ "GetSyncSource hresult(ptr*);" & _ ; IMediaFilter "EnumPins hresult(ptr*);" & _ "FindPin hresult(wstr;ptr*);" & _ "QueryFilterInfo hresult(ptr*);" & _ "JoinFilterGraph hresult(ptr;wstr);" & _ "QueryVendorInfo hresult(wstr*);" ; IBaseFilter ; Create object Local $oBaseFilter = _AutoItObject_ObjCreate($sCLSID_WMAsfReader, $sIID_IBaseFilter, $dtagIBaseFilter) If @error Then Return SetError(1, 0, False) ; AddFilter is "must" to be able to use it $oGraphBuilder.AddFilter($oBaseFilter.__ptr__, "anything") ; File will be loaded using FileSourceFilter object ; IFileSourceFilter definition Local Const $sIID_IFileSourceFilter = "{56a868a6-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIFileSourceFilter = $dtagIUnknown & _ "Load hresult(wstr;ptr);" & _ "GetCurFile hresult(ptr*;ptr);" Local $tIID_IFileSourceFilter = _AutoItObject_CLSIDFromString($sIID_IFileSourceFilter) ; Ask for FileSourceFilter object from BaseFilter Local $aCall = $oBaseFilter.QueryInterface(Number(DllStructGetPtr($tIID_IFileSourceFilter)), 0) If Not IsArray($aCall) Then Return SetError(2, 0, False) ; Wrapp it Local $oFileSourceFilter = _AutoItObject_WrapperCreate($aCall[2], $dtagIFileSourceFilter) ; Load the file now $oFileSourceFilter.Load($sFile, 0) $aCall = $oFileSourceFilter.GetCurFile(0, 0) Local $pFile = $aCall[1] Local $sLoaded = DllStructGetData(DllStructCreate("wchar[" & __Au3Obj_PtrStringLen($pFile) + 1 & "]", $pFile), 1) __Au3Obj_CoTaskMemFree($pFile) ConsoleWrite($sLoaded & @CRLF) ; Get pointer to EnumPins object $aCall = $oBaseFilter.EnumPins(0) If Not IsArray($aCall) Or Not $aCall[1] Then Return SetError(3, 0, False) Local $pEnum = $aCall[1] ; Define IEnumPins methods Local $dtagIEnumPins = $dtagIUnknown & _ "Next hresult(dword;ptr*;dword*);" & _ "Skip hresult(dword);" & _ "Reset hresult();" & _ "Clone hresult(ptr*);" ; Wrapp it Local $oEnum = _AutoItObject_WrapperCreate($pEnum, $dtagIEnumPins) ; Will enumerate all PINs and render them Local $pPin While 1 $aCall = $oEnum.Next(1, 0, 0) If Not IsArray($aCall) Then Return SetError(4, 0, False) $pPin = $aCall[2] If $pPin Then $oGraphBuilder.Render($pPin) _AutoItObject_IUnknownRelease($pPin); releasing non-wrapped object when no longer needed EndIf If $aCall[0] Then ExitLoop WEnd ; All's ok Return True EndFunc ;==>_WMAsfReaderLoad Func _ErrFunc() ;~ ConsoleWrite("! COM Error ! Number: 0x" & Hex($oCOMError.number, 8) & " ScriptLine: " & $oCOMError.scriptline & " - " & $oCOMError.windescription & @CRLF) EndFunc ;==>_ErrFunc shanet Edited December 27, 2010 by shanet [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
trancexx Posted December 25, 2010 Author Share Posted December 25, 2010 I dont really see how that is relevant, because:1. How many stations do you want? A single stations.ini file would take all of 500 bytes? However in the registry, it would take more space because it needs the registry path as well.However I will do a registry one if you wish.btw there's your rating shanetFind some literature on Windows Registry and Windows NT. You will be much smarter afterwards, I promise. What I wish shouldn't matter for you. Yes, rating. How would you explain it? ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Ascend4nt Posted December 26, 2010 Share Posted December 26, 2010 When you wish upon golden stars.. lol. What is it with people's obsession over ratings? I think all your fussing about it isn't making a good case for anyone to give your script more, trancexx. But hey, here's 5 sticky stars for you. You can put them up on your wall and remember your script made it all happen. My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
trancexx Posted December 26, 2010 Author Share Posted December 26, 2010 When you wish upon golden stars.. lol. What is it with people's obsession over ratings? I think all your fussing about it isn't making a good case for anyone to give your script more, trancexx. But hey, here's 5 sticky stars for you. You can put them up on your wall and remember your script made it all happen.My obsession are deviations.This thread is pure gold from more than one point of view. Exquisite....And too easy. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
shanet Posted December 27, 2010 Share Posted December 27, 2010 (edited) Well, I have done a few more things.Here is the new version of the LiveStreaming that handles stations.ini, now with the add a station function. Also, handling of stations is now in an extension of the GUI... dont ask, just download!Thanks Melba23 for the GUIExtensions UDF, trancexx for the original software, my default station for playing two different songs from my fav band whilst I was testing the application, and you guys for using it!Source Code and Notes:Non-Registry (stations.ini)expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_icon=irate_radio.ico #AutoIt3Wrapper_outfile=LiveStreaming.exe #AutoIt3Wrapper_Res_Description=Internet Radio! #AutoIt3Wrapper_Res_Fileversion=2.1.0.0 ;#AutoIt3Wrapper_Run_AU3Check=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 ;------LIVE STREAM PLAYER-v2------------------------------------; ;.......script written by trancexx (trancexx at yahoo dot com)..; ;.......and edited by shanet....................................; ; ; ;-------New Features ; ; -- Close to tray ; ; You can now minimize to the taskbar, and close to the ; ; system tray! ; ; To exit, right click the tray icon and select exit. ; ; To show the GUI, double click the icon. ; ; ; ; -- Select station ; ; You can now change the station and add new stations! ; ; To change the station, choose the one you wish to change; ; to and click change. ; ; To add a new station, input the site into stations.ini ; ; as a new line. ; ;---------------------------------------------------------------; #include <objects\AutoitObject.au3> #include <ComboConstants.au3> #include <GUIExtender.au3> Opt("TrayMenuMode", 1) ;Opt("MustDeclareVars", 1) Global $sMediaFile = FileReadLine("stations.ini", 1) ; any other. Pay attention to format Global $stations = FileRead("stations.ini") $stations = StringReplace(FileRead("stations.ini"), @CRLF, "|") $stations = StringReplace($stations, "//*|", "|") $stations = StringReplace($stations, $sMediaFile & "|", "") ; Error monitoring Global $oCOMError = ObjEvent("AutoIt.Error", "_ErrFunc") ; Let the magic begin... _AutoItObject_StartUp() ; DLLs to use Global $oUSER32DLL = _AutoItObject_DllOpen("user32.dll") ; GUI Global $hGUI = GUICreate("Live Streaming", 258, 107) _GUIExtender_Init($hGUI) ;Used for the extendable stations controls Global $hVolSlider = GUICtrlCreateSlider(10, 14, 28, 64, 10 + 16) GUICtrlSetTip(-1, "100 %VOL") GUICtrlCreateLabel("VOL", 40, 21, 68, 20) GUICtrlSetFont(-1, 9, -1, 2, "Curier New") Global $hButtonPlay = GUICtrlCreateButton("&Pause", 80, 20, 115, 25) Global $hLabelInfo = GUICtrlCreateLabel(" ...Connecting...", 90, 60, 130, 25) GUICtrlSetFont(-1, 9, -1, 2, "Arial") Global $hLevMet Global $hButtonExtend = GUICtrlCreateButton(" â–¼ ", 5, 77) Global $hCheckboxTray = GUICtrlCreateCheckbox("Close to Tray", 173, 82) GUICtrlSetState($hCheckboxTray, 1) ;Retractable controls Global $stationsExtender = _GUIExtender_Section_Start(107, 60) ;Starts the extendable controls Global $hStatSel = GUICtrlCreateCombo($sMediaFile, 20, 110, 222, 15, $CBS_DROPDOWNLIST) GUICtrlSetData($hStatSel, $stations) Global $hButtonAddStation = GUICtrlCreateButton("Add Station", 5, 135, 65) Global $hInputAddStation = GUICtrlCreateInput("New Station", 75, 135, 175) _GUIExtender_Section_End() ; Tray Global $trayinfo = 0 TraySetClick(16) Global $traypaus = TrayCreateItem("Pause") TrayItemSetState($traypaus, 4) Global $trayexit = TrayCreateItem("Exit") TrayItemSetState($trayexit, 4) ; Objects Global $oGraphBuilder, $oMediaControl, $oBasicAudio, $oAudioMeterInformation ; Level-meter _AudioVolObject($oAudioMeterInformation) If Not @error Then ; if this objects are available on the system then add control for it $hLevMet = GUICtrlCreateProgress(220, 15, 20, 60, 4) AdlibRegister("_LevelMeter", 45) EndIf ; Misc variables Global $iPlaying = 1, $iVol ; Show GUI GUISetState() ; Main loop While 1 Switch GUIGetMsg() Case $hStatSel GUICtrlSetFont($hLabelInfo, 9, -1, 2, "Arial") GUICtrlSetData($hLabelInfo, "...Connecting...") GUICtrlSetColor($hLabelInfo, 0x000000) $sMediaFile = GUICtrlRead($hStatSel) Case $hButtonExtend ; MsgBox(0, "Coming Soon...", "This option is not yet implemented. It is coming soon." & @CRLF & "Besides, there is nothing there anyway... yet...") if _GUIExtender_Section_State($stationsExtender) = 1 Then _GUIExtender_Section_Extend($stationsExtender, False) GUICtrlSetData($hButtonExtend, " â–¼ ") Else _GUIExtender_Section_Extend($stationsExtender, True) GUICtrlSetData($hButtonExtend, " â–² ") EndIf Case -3 Global $mintray $mintray = GUICtrlRead($hCheckboxTray) if $mintray = 1 Then if $trayinfo = 0 Then $trayinfo = 1 MsgBox(0, "Close to Tray", "You have closed to the system tray." & @LF & "To show the GUI again, double click the tray icon." & @LF & "To exit, right click the tray icon and choose exit.") EndIf if _GUIExtender_Section_State($stationsExtender) = 1 Then _GUIExtender_Section_Extend($stationsExtender, False) GUICtrlSetData($hButtonExtend, " â–¼ ") EndIf GUISetState(@SW_HIDE, $hGUI) Else ExitLoop EndIf Case $hButtonAddStation Global $newStation = GUICtrlRead($hInputAddStation) If StringInStr($newStation, "http://") Then $newStation = StringReplace($newStation, "http://", "") MsgBox(0, "", "Removed http") EndIf If StringInStr($newStation, ":") = 0 Then MsgBox(0, "ERROR", "Please include a port!") Else FileWrite("stations.ini", @CRLF & "http://" & $newStation) EndIf Case $hButtonPlay If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") TrayItemSetText($traypaus, "Play") TrayItemSetState($traypaus, 4) $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") TrayItemSetText($traypaus, "Pause") TrayItemSetState($traypaus, 4) $iPlaying = 1 EndIf EndSwitch Switch TrayGetMsg() Case $trayexit ExitLoop Case $traypaus If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") $iPlaying = 1 EndIf Case -13 GUISetState(@SW_SHOW, $hGUI) EndSwitch If $iVol <> GUICtrlRead($hVolSlider) Then $iVol = GUICtrlRead($hVolSlider) If IsObj($oBasicAudio) Then $oBasicAudio.put_Volume(-Exp(0.65 * ($iVol * 1.4) / 10)) ; Only works between 0 and 65%. Default line: If IsObj($oBasicAudio) Then $oBasicAudio.put_Volume(-Exp(0.65 * ($iVol) / 10.84)) GUICtrlSetTip($hVolSlider, 100 - $iVol & " %VOL") EndIf If $sMediaFile Then _RenderFile($sMediaFile) WEnd ; Free before the end _Quit() ;THE END Func _Quit() AdlibUnRegister() ; Release objests _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) $oAudioMeterInformation = 0 ; Bye bye Exit EndFunc ;==>_Quit Func _LevelMeter() Local $aCall = $oAudioMeterInformation.GetPeakValue(0) If IsArray($aCall) Then Local $iCurrentRead = 100 * $aCall[1] GUICtrlSetData($hLevMet, $iCurrentRead + 1) GUICtrlSetData($hLevMet, $iCurrentRead) EndIf EndFunc ;==>_LevelMeter Func _AudioVolObject(ByRef $oAudioMeterInformation) Local Const $sCLSID_MMDeviceEnumerator = "{BCDE0395-E52F-467C-8E3D-C4579291692E}" Local Const $sIID_IMMDeviceEnumerator = "{A95664D2-9614-4F35-A746-DE8DB63617E6}" Global $dtagIMMDeviceEnumerator = $dtagIUnknown & _ "EnumAudioEndpoints hresult(dword;dword;ptr*);" & _ "GetDefaultAudioEndpoint hresult(dword;dword;ptr*);" & _ "GetDevice hresult(wstr;ptr*);" & _ "RegisterEndpointNotificationCallback hresult(ptr);" & _ "UnregisterEndpointNotificationCallback hresult(ptr);" Local $dtagIMMDevice = $dtagIUnknown & _ "Activate hresult(ptr;dword;variant*;ptr*);" & _ "OpenPropertyStore hresult(dword;ptr*);" & _ "GetId hresult(wstr*);" & _ "GetState hresult(dword*);" Local Const $sIID_IAudioMeterInformation = "{C02216F6-8C67-4B5B-9D00-D008E73E0064}" Local $dtagIAudioMeterInformation = $dtagIUnknown & _ "GetPeakValue hresult(float*);" & _ "GetMeteringChannelCount hresult(dword*);" & _ "GetChannelsPeakValues hresult(dword;float*);" & _ "QueryHardwareSupport hresult(dword*);" ; MMDeviceEnumerator Local $oMMDeviceEnumerator = _AutoItObject_ObjCreate($sCLSID_MMDeviceEnumerator, $sIID_IMMDeviceEnumerator, $dtagIMMDeviceEnumerator) If @error Then Return SetError(1, 0, 0) ; DefaultAudioEndpoint Local $aCall = $oMMDeviceEnumerator.GetDefaultAudioEndpoint(0, 0, 0) ; eRender, eConsole If Not IsArray($aCall) Then Return SetError(2, 0, 0) Local $oDefaultDevice = _AutoItObject_WrapperCreate($aCall[3], $dtagIMMDevice) ; AudioMeterInformation Local $pIID_IAudioMeterInformation = _AutoItObject_CLSIDFromString($sIID_IAudioMeterInformation) $aCall = $oDefaultDevice.Activate(Number(DllStructGetPtr($pIID_IAudioMeterInformation)), 1, 0, 0) If Not IsArray($aCall) Then Return SetError(3, 0, 0) $oAudioMeterInformation = _AutoItObject_WrapperCreate($aCall[4], $dtagIAudioMeterInformation) ; That's it Return True EndFunc ;==>_AudioVolObject Func _InitBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) ; Needed identifiera Local $sCLSID_FilterGraph = "{E436EBB3-524F-11CE-9F53-0020AF0BA770}" Local $sIID_IGraphBuilder = "{56A868A9-0AD4-11CE-B03A-0020AF0BA770}" ; More... Local $tIID_IMediaControl = _AutoItObject_CLSIDFromString("{56A868B1-0AD4-11CE-B03A-0020AF0BA770}") Local $tIID_IBasicAudio = _AutoItObject_CLSIDFromString("{56A868B3-0AD4-11CE-B03A-0020AF0BA770}") ; Define IGraphBuilder methods Local $dtagIGraphBuilder = $dtagIUnknown & _ "AddFilter hresult(ptr;wstr);" & _ "RemoveFilter hresult(ptr);" & _ "EnumFilters hresult(ptr*);" & _ "FindFilterByName hresult(wstr;ptr*);" & _ "ConnectDirect hresult(ptr;ptr;ptr);" & _ "Reconnect hresult(ptr);" & _ "Disconnect hresult(ptr);" & _ "SetDefaultSyncSource hresult();" & _ ; IFilterGraph "Connect hresult(ptr;ptr);" & _ "Render hresult(ptr);" & _ "RenderFile hresult(wstr;ptr);" & _ "AddSourceFilter hresult(wstr;wstr;ptr*);" & _ "SetLogFile hresult(dword_ptr);" & _ "Abort hresult();" & _ "ShouldOperationContinue hresult();" ; IGraphBuilder ; Wrapp IGraphBuilder interface $oGraphBuilder = _AutoItObject_ObjCreate($sCLSID_FilterGraph, $sIID_IGraphBuilder, $dtagIGraphBuilder) If @error Then Return SetError(1, 0, False) ; IMediaControl IDispatch Local $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IMediaControl)), 0) If IsArray($aCall) And $aCall[2] Then $oMediaControl = _AutoItObject_PtrToIDispatch($aCall[2]) Else Return SetError(2, 0, False) EndIf Local $pBasicAudio ; Get pointer to IBasicAudio interface $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IBasicAudio)), 0) If IsArray($aCall) And $aCall[2] Then $pBasicAudio = $aCall[2] Else Return SetError(3, 0, False) EndIf ; IBasicAudio is dual interface. Defining vTable methods: Local $dtagIBasicAudio = $dtagIDispatch & _ "put_Volume hresult(long);" & _ "get_Volume hresult(long*);" & _ "put_Balance hresult(long);" & _ "get_Balance hresult(long*);" ; IBasicAudio ; Wrapp it: $oBasicAudio = _AutoItObject_WrapperCreate($pBasicAudio, $dtagIBasicAudio) If @error Then Return SetError(4, 0, False) Return True ; There EndFunc ;==>_InitBuilder Func _ReleaseBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) $oMediaControl.Stop() $oBasicAudio = 0 $oMediaControl = 0 $oGraphBuilder.Release() ;<-! $oGraphBuilder = 0 EndFunc ;==>_ReleaseBuilder Func _RenderFile(ByRef $sMediaFile) _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) _InitBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) If Not _WMAsfReaderLoad($sMediaFile) Then $oUSER32DLL.MessageBeep("int", "dword", 48) $sMediaFile = "" Return SetError(1, 0, False) EndIf $oCOMError.number = 0 ; set no-error condition $oMediaControl.Run() ; Check for error If $oCOMError.number Then ; GUISetState(@SW_SHOW, $hGUI) GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, "Streaming failed") GUICtrlSetColor($hLabelInfo, 0xFF0000) MsgBox(48, "Error", "Failed to stream", 0, $hGUI) Else GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, " Connected!") EndIf $sMediaFile = "" Return True EndFunc ;==>_RenderFile Func _WMAsfReaderLoad($sFile) Local Const $sCLSID_WMAsfReader = "{187463A0-5BB7-11d3-ACBE-0080C75E246E}" ; IBaseFilter definition Local Const $sIID_IBaseFilter = "{56a86895-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIBaseFilter = $dtagIUnknown & _ "GetClassID hresult(ptr*);" & _; IPersist "Stop hresult();" & _ "Pause hresult();" & _ "Run hresult(int64);" & _ "GetState hresult(dword;dword*);" & _ "SetSyncSource hresult(ptr);" & _ "GetSyncSource hresult(ptr*);" & _ ; IMediaFilter "EnumPins hresult(ptr*);" & _ "FindPin hresult(wstr;ptr*);" & _ "QueryFilterInfo hresult(ptr*);" & _ "JoinFilterGraph hresult(ptr;wstr);" & _ "QueryVendorInfo hresult(wstr*);" ; IBaseFilter ; Create object Local $oBaseFilter = _AutoItObject_ObjCreate($sCLSID_WMAsfReader, $sIID_IBaseFilter, $dtagIBaseFilter) If @error Then Return SetError(1, 0, False) ; AddFilter is "must" to be able to use it $oGraphBuilder.AddFilter($oBaseFilter.__ptr__, "anything") ; File will be loaded using FileSourceFilter object ; IFileSourceFilter definition Local Const $sIID_IFileSourceFilter = "{56a868a6-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIFileSourceFilter = $dtagIUnknown & _ "Load hresult(wstr;ptr);" & _ "GetCurFile hresult(ptr*;ptr);" Local $tIID_IFileSourceFilter = _AutoItObject_CLSIDFromString($sIID_IFileSourceFilter) ; Ask for FileSourceFilter object from BaseFilter Local $aCall = $oBaseFilter.QueryInterface(Number(DllStructGetPtr($tIID_IFileSourceFilter)), 0) If Not IsArray($aCall) Then Return SetError(2, 0, False) ; Wrapp it Local $oFileSourceFilter = _AutoItObject_WrapperCreate($aCall[2], $dtagIFileSourceFilter) ; Load the file now $oFileSourceFilter.Load($sFile, 0) $aCall = $oFileSourceFilter.GetCurFile(0, 0) Local $pFile = $aCall[1] Local $sLoaded = DllStructGetData(DllStructCreate("wchar[" & __Au3Obj_PtrStringLen($pFile) + 1 & "]", $pFile), 1) __Au3Obj_CoTaskMemFree($pFile) ConsoleWrite($sLoaded & @CRLF) ; Get pointer to EnumPins object $aCall = $oBaseFilter.EnumPins(0) If Not IsArray($aCall) Or Not $aCall[1] Then Return SetError(3, 0, False) Local $pEnum = $aCall[1] ; Define IEnumPins methods Local $dtagIEnumPins = $dtagIUnknown & _ "Next hresult(dword;ptr*;dword*);" & _ "Skip hresult(dword);" & _ "Reset hresult();" & _ "Clone hresult(ptr*);" ; Wrapp it Local $oEnum = _AutoItObject_WrapperCreate($pEnum, $dtagIEnumPins) ; Will enumerate all PINs and render them Local $pPin While 1 $aCall = $oEnum.Next(1, 0, 0) If Not IsArray($aCall) Then Return SetError(4, 0, False) $pPin = $aCall[2] If $pPin Then $oGraphBuilder.Render($pPin) _AutoItObject_IUnknownRelease($pPin); releasing non-wrapped object when no longer needed EndIf If $aCall[0] Then ExitLoop WEnd ; All's ok Return True EndFunc ;==>_WMAsfReaderLoad Func _ErrFunc() ;~ ConsoleWrite("! COM Error ! Number: 0x" & Hex($oCOMError.number, 8) & " ScriptLine: " & $oCOMError.scriptline & " - " & $oCOMError.windescription & @CRLF) EndFunc ;==>_ErrFuncKNOWN BUGS:- Doesn't refresh when a station is added- Forgot to remove that stupid message box I put in for testing purposes! When you add a station, the program automatically removes http:// if it is included (It is added back before the station is added), just to check for a port. It only checks for the : character, and that is why http:// was removed. Therefore, if you just type the : and then no port, it will still accept it, but you are stabbing yourself in the back.Registry Versionexpandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_icon=irate_radio.ico #AutoIt3Wrapper_outfile=LiveStreamingreg.exe #AutoIt3Wrapper_Res_Description=Internet Radio! #AutoIt3Wrapper_Res_Fileversion=2.1.0.0 ;#AutoIt3Wrapper_Run_AU3Check=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 ;------LIVE STREAM PLAYER-v2------------------------------------; ;.......script written by trancexx (trancexx at yahoo dot com)..; ;.......and edited by shanet....................................; ; ; ;-------New Features ; ; -- Close to tray ; ; You can now minimize to the taskbar, and close to the ; ; system tray! ; ; To exit, right click the tray icon and select exit. ; ; To show the GUI, double click the icon. ; ; ; ; -- Select station ; ; You can now change the station and add new stations! ; ; To change the station, choose the one you wish to change; ; to and click change. ; ; To add a new station, input the site into stations.ini ; ; as a new line. ; ;---------------------------------------------------------------; #include <objects\AutoitObject.au3> #include <ComboConstants.au3> #include <GUIExtender.au3> Opt("TrayMenuMode", 1) Opt("MustDeclareVars", 1) Global $sMediaFile, $stations If RegRead("HKCU\Software\LiveStreaming", "stations") = "" Then RegWrite("HKCU\Software\LiveStreaming", "stations", "REG_SZ", "http://173.193.14.170:8012|http://94.76.208.7:8001|http://212.45.104.50:8050|http://119.207.75.238:11250|http://norway.discovertrance.com:8000|http://u15c.di.fm:80/di_minimal|http://scfire-dtc-aa01.stream.aol.com:80/stream/1003|http://ns24907.ovh.net:8000|http://63.247.82.38:8000|http://89.238.146.240:9050|http://87.230.84.182:6666") $stations = RegRead("HKCU\Software\LiveStreaming", "stations") Else $stations = RegRead("HKCU\Software\LiveStreaming", "stations") EndIf ; Error monitoring Global $oCOMError = ObjEvent("AutoIt.Error", "_ErrFunc") ; Let the magic begin... _AutoItObject_StartUp() ; DLLs to use Global $oUSER32DLL = _AutoItObject_DllOpen("user32.dll") ; GUI Global $hGUI = GUICreate("Live Streaming", 258, 107) _GUIExtender_Init($hGUI) ;Used for the extendable stations controls Global $hVolSlider = GUICtrlCreateSlider(10, 14, 28, 64, 10 + 16) GUICtrlSetTip(-1, "100 %VOL") GUICtrlCreateLabel("VOL", 40, 21, 68, 20) GUICtrlSetFont(-1, 9, -1, 2, "Curier New") Global $hButtonPlay = GUICtrlCreateButton("&Pause", 80, 20, 115, 25) Global $hLabelInfo = GUICtrlCreateLabel("Choose a station", 90, 60, 130, 25) GUICtrlSetFont(-1, 9, -1, 2, "Arial") Global $hLevMet Global $hButtonExtend = GUICtrlCreateButton(" â–¼ ", 5, 77) Global $hCheckboxTray = GUICtrlCreateCheckbox("Close to Tray", 173, 82) GUICtrlSetState($hCheckboxTray, 1) ;Retractable controls Global $stationsExtender = _GUIExtender_Section_Start(107, 60) ;Starts the extendable controls Global $hStatSel = GUICtrlCreateCombo($sMediaFile, 20, 110, 222, 15, $CBS_DROPDOWNLIST) GUICtrlSetData($hStatSel, $stations) Global $hButtonAddStation = GUICtrlCreateButton("Add Station", 5, 135, 65) Global $hInputAddStation = GUICtrlCreateInput("New Station", 75, 135, 175) _GUIExtender_Section_End() ; Tray Global $trayinfo = 0 TraySetClick(16) Global $traypaus = TrayCreateItem("Pause") TrayItemSetState($traypaus, 4) Global $trayexit = TrayCreateItem("Exit") TrayItemSetState($trayexit, 4) ; Objects Global $oGraphBuilder, $oMediaControl, $oBasicAudio, $oAudioMeterInformation ; Level-meter _AudioVolObject($oAudioMeterInformation) If Not @error Then ; if this objects are available on the system then add control for it $hLevMet = GUICtrlCreateProgress(220, 15, 20, 60, 4) AdlibRegister("_LevelMeter", 45) EndIf ; Misc variables Global $iPlaying = 1, $iVol ; Show GUI GUISetState() ; Main loop While 1 Switch GUIGetMsg() Case $hStatSel GUICtrlSetFont($hLabelInfo, 9, -1, 2, "Arial") GUICtrlSetData($hLabelInfo, "...Connecting...") GUICtrlSetColor($hLabelInfo, 0x000000) $sMediaFile = GUICtrlRead($hStatSel) Case $hButtonExtend ; MsgBox(0, "Coming Soon...", "This option is not yet implemented. It is coming soon." & @CRLF & "Besides, there is nothing there anyway... yet...") if _GUIExtender_Section_State($stationsExtender) = 1 Then _GUIExtender_Section_Extend($stationsExtender, False) GUICtrlSetData($hButtonExtend, " â–¼ ") Else _GUIExtender_Section_Extend($stationsExtender, True) GUICtrlSetData($hButtonExtend, " â–² ") EndIf Case -3 Global $mintray $mintray = GUICtrlRead($hCheckboxTray) if $mintray = 1 Then if $trayinfo = 0 Then $trayinfo = 1 MsgBox(0, "Close to Tray", "You have closed to the system tray." & @LF & "To show the GUI again, double click the tray icon." & @LF & "To exit, right click the tray icon and choose exit.") EndIf if _GUIExtender_Section_State($stationsExtender) = 1 Then _GUIExtender_Section_Extend($stationsExtender, False) GUICtrlSetData($hButtonExtend, " â–¼ ") EndIf GUISetState(@SW_HIDE, $hGUI) Else ExitLoop EndIf Case $hButtonAddStation Global $newStation = GUICtrlRead($hInputAddStation) If StringInStr($newStation, "http://") Then $newStation = StringReplace($newStation, "http://", "") MsgBox(0, "", "Removed http") EndIf If StringInStr($newStation, ":") = 0 Then MsgBox(0, "ERROR", "Please include a port!") Else RegWrite("HKCU\Software\LiveStreaming", "stations", "REG_SZ", RegRead("HKCU\Software\LiveStreaming", "stations") & "|http://" & $newStation) EndIf $stations = RegRead("HKCU\Software\LiveStreaming", "stations") GUICtrlSetData($hStatSel, $stations) Case $hButtonPlay If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") TrayItemSetText($traypaus, "Play") TrayItemSetState($traypaus, 4) $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") TrayItemSetText($traypaus, "Pause") TrayItemSetState($traypaus, 4) $iPlaying = 1 EndIf EndSwitch Switch TrayGetMsg() Case $trayexit ExitLoop Case $traypaus If $iPlaying Then $oMediaControl.Pause() GUICtrlSetData($hButtonPlay, "&Play") $iPlaying = 0 Else $oMediaControl.Run() GUICtrlSetData($hButtonPlay, "&Pause") $iPlaying = 1 EndIf Case -13 GUISetState(@SW_SHOW, $hGUI) EndSwitch If $iVol <> GUICtrlRead($hVolSlider) Then $iVol = GUICtrlRead($hVolSlider) If IsObj($oBasicAudio) Then $oBasicAudio.put_Volume(-Exp(0.65 * ($iVol * 1.4) / 10)) ; Only works between 0 and 65%. Default line: If IsObj($oBasicAudio) Then $oBasicAudio.put_Volume(-Exp(0.65 * ($iVol) / 10.84)) GUICtrlSetTip($hVolSlider, 100 - $iVol & " %VOL") EndIf If $sMediaFile Then _RenderFile($sMediaFile) WEnd ; Free before the end _Quit() ;THE END Func _Quit() AdlibUnRegister() ; Release objests _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) $oAudioMeterInformation = 0 ; Bye bye Exit EndFunc ;==>_Quit Func _LevelMeter() Local $aCall = $oAudioMeterInformation.GetPeakValue(0) If IsArray($aCall) Then Local $iCurrentRead = 100 * $aCall[1] GUICtrlSetData($hLevMet, $iCurrentRead + 1) GUICtrlSetData($hLevMet, $iCurrentRead) EndIf EndFunc ;==>_LevelMeter Func _AudioVolObject(ByRef $oAudioMeterInformation) Local Const $sCLSID_MMDeviceEnumerator = "{BCDE0395-E52F-467C-8E3D-C4579291692E}" Local Const $sIID_IMMDeviceEnumerator = "{A95664D2-9614-4F35-A746-DE8DB63617E6}" Global $dtagIMMDeviceEnumerator = $dtagIUnknown & _ "EnumAudioEndpoints hresult(dword;dword;ptr*);" & _ "GetDefaultAudioEndpoint hresult(dword;dword;ptr*);" & _ "GetDevice hresult(wstr;ptr*);" & _ "RegisterEndpointNotificationCallback hresult(ptr);" & _ "UnregisterEndpointNotificationCallback hresult(ptr);" Local $dtagIMMDevice = $dtagIUnknown & _ "Activate hresult(ptr;dword;variant*;ptr*);" & _ "OpenPropertyStore hresult(dword;ptr*);" & _ "GetId hresult(wstr*);" & _ "GetState hresult(dword*);" Local Const $sIID_IAudioMeterInformation = "{C02216F6-8C67-4B5B-9D00-D008E73E0064}" Local $dtagIAudioMeterInformation = $dtagIUnknown & _ "GetPeakValue hresult(float*);" & _ "GetMeteringChannelCount hresult(dword*);" & _ "GetChannelsPeakValues hresult(dword;float*);" & _ "QueryHardwareSupport hresult(dword*);" ; MMDeviceEnumerator Local $oMMDeviceEnumerator = _AutoItObject_ObjCreate($sCLSID_MMDeviceEnumerator, $sIID_IMMDeviceEnumerator, $dtagIMMDeviceEnumerator) If @error Then Return SetError(1, 0, 0) ; DefaultAudioEndpoint Local $aCall = $oMMDeviceEnumerator.GetDefaultAudioEndpoint(0, 0, 0) ; eRender, eConsole If Not IsArray($aCall) Then Return SetError(2, 0, 0) Local $oDefaultDevice = _AutoItObject_WrapperCreate($aCall[3], $dtagIMMDevice) ; AudioMeterInformation Local $pIID_IAudioMeterInformation = _AutoItObject_CLSIDFromString($sIID_IAudioMeterInformation) $aCall = $oDefaultDevice.Activate(Number(DllStructGetPtr($pIID_IAudioMeterInformation)), 1, 0, 0) If Not IsArray($aCall) Then Return SetError(3, 0, 0) $oAudioMeterInformation = _AutoItObject_WrapperCreate($aCall[4], $dtagIAudioMeterInformation) ; That's it Return True EndFunc ;==>_AudioVolObject Func _InitBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) ; Needed identifiera Local $sCLSID_FilterGraph = "{E436EBB3-524F-11CE-9F53-0020AF0BA770}" Local $sIID_IGraphBuilder = "{56A868A9-0AD4-11CE-B03A-0020AF0BA770}" ; More... Local $tIID_IMediaControl = _AutoItObject_CLSIDFromString("{56A868B1-0AD4-11CE-B03A-0020AF0BA770}") Local $tIID_IBasicAudio = _AutoItObject_CLSIDFromString("{56A868B3-0AD4-11CE-B03A-0020AF0BA770}") ; Define IGraphBuilder methods Local $dtagIGraphBuilder = $dtagIUnknown & _ "AddFilter hresult(ptr;wstr);" & _ "RemoveFilter hresult(ptr);" & _ "EnumFilters hresult(ptr*);" & _ "FindFilterByName hresult(wstr;ptr*);" & _ "ConnectDirect hresult(ptr;ptr;ptr);" & _ "Reconnect hresult(ptr);" & _ "Disconnect hresult(ptr);" & _ "SetDefaultSyncSource hresult();" & _ ; IFilterGraph "Connect hresult(ptr;ptr);" & _ "Render hresult(ptr);" & _ "RenderFile hresult(wstr;ptr);" & _ "AddSourceFilter hresult(wstr;wstr;ptr*);" & _ "SetLogFile hresult(dword_ptr);" & _ "Abort hresult();" & _ "ShouldOperationContinue hresult();" ; IGraphBuilder ; Wrapp IGraphBuilder interface $oGraphBuilder = _AutoItObject_ObjCreate($sCLSID_FilterGraph, $sIID_IGraphBuilder, $dtagIGraphBuilder) If @error Then Return SetError(1, 0, False) ; IMediaControl IDispatch Local $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IMediaControl)), 0) If IsArray($aCall) And $aCall[2] Then $oMediaControl = _AutoItObject_PtrToIDispatch($aCall[2]) Else Return SetError(2, 0, False) EndIf Local $pBasicAudio ; Get pointer to IBasicAudio interface $aCall = $oGraphBuilder.QueryInterface(Number(DllStructGetPtr($tIID_IBasicAudio)), 0) If IsArray($aCall) And $aCall[2] Then $pBasicAudio = $aCall[2] Else Return SetError(3, 0, False) EndIf ; IBasicAudio is dual interface. Defining vTable methods: Local $dtagIBasicAudio = $dtagIDispatch & _ "put_Volume hresult(long);" & _ "get_Volume hresult(long*);" & _ "put_Balance hresult(long);" & _ "get_Balance hresult(long*);" ; IBasicAudio ; Wrapp it: $oBasicAudio = _AutoItObject_WrapperCreate($pBasicAudio, $dtagIBasicAudio) If @error Then Return SetError(4, 0, False) Return True ; There EndFunc ;==>_InitBuilder Func _ReleaseBuilder(ByRef $oGraphBuilder, ByRef $oMediaControl, ByRef $oBasicAudio) $oMediaControl.Stop() $oBasicAudio = 0 $oMediaControl = 0 $oGraphBuilder.Release() ;<-! $oGraphBuilder = 0 EndFunc ;==>_ReleaseBuilder Func _RenderFile(ByRef $sMediaFile) _ReleaseBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) _InitBuilder($oGraphBuilder, $oMediaControl, $oBasicAudio) If Not _WMAsfReaderLoad($sMediaFile) Then $oUSER32DLL.MessageBeep("int", "dword", 48) $sMediaFile = "" Return SetError(1, 0, False) EndIf $oCOMError.number = 0 ; set no-error condition $oMediaControl.Run() ; Check for error If $oCOMError.number Then ; GUISetState(@SW_SHOW, $hGUI) GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, "Streaming failed") GUICtrlSetColor($hLabelInfo, 0xFF0000) MsgBox(48, "Error", "Failed to stream", 0, $hGUI) Else GUICtrlSetFont($hLabelInfo, 9, -1, 1, "Arial") GUICtrlSetData($hLabelInfo, " Connected!") EndIf $sMediaFile = "" Return True EndFunc ;==>_RenderFile Func _WMAsfReaderLoad($sFile) Local Const $sCLSID_WMAsfReader = "{187463A0-5BB7-11d3-ACBE-0080C75E246E}" ; IBaseFilter definition Local Const $sIID_IBaseFilter = "{56a86895-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIBaseFilter = $dtagIUnknown & _ "GetClassID hresult(ptr*);" & _; IPersist "Stop hresult();" & _ "Pause hresult();" & _ "Run hresult(int64);" & _ "GetState hresult(dword;dword*);" & _ "SetSyncSource hresult(ptr);" & _ "GetSyncSource hresult(ptr*);" & _ ; IMediaFilter "EnumPins hresult(ptr*);" & _ "FindPin hresult(wstr;ptr*);" & _ "QueryFilterInfo hresult(ptr*);" & _ "JoinFilterGraph hresult(ptr;wstr);" & _ "QueryVendorInfo hresult(wstr*);" ; IBaseFilter ; Create object Local $oBaseFilter = _AutoItObject_ObjCreate($sCLSID_WMAsfReader, $sIID_IBaseFilter, $dtagIBaseFilter) If @error Then Return SetError(1, 0, False) ; AddFilter is "must" to be able to use it $oGraphBuilder.AddFilter($oBaseFilter.__ptr__, "anything") ; File will be loaded using FileSourceFilter object ; IFileSourceFilter definition Local Const $sIID_IFileSourceFilter = "{56a868a6-0ad4-11ce-b03a-0020af0ba770}" Local $dtagIFileSourceFilter = $dtagIUnknown & _ "Load hresult(wstr;ptr);" & _ "GetCurFile hresult(ptr*;ptr);" Local $tIID_IFileSourceFilter = _AutoItObject_CLSIDFromString($sIID_IFileSourceFilter) ; Ask for FileSourceFilter object from BaseFilter Local $aCall = $oBaseFilter.QueryInterface(Number(DllStructGetPtr($tIID_IFileSourceFilter)), 0) If Not IsArray($aCall) Then Return SetError(2, 0, False) ; Wrapp it Local $oFileSourceFilter = _AutoItObject_WrapperCreate($aCall[2], $dtagIFileSourceFilter) ; Load the file now $oFileSourceFilter.Load($sFile, 0) $aCall = $oFileSourceFilter.GetCurFile(0, 0) Local $pFile = $aCall[1] Local $sLoaded = DllStructGetData(DllStructCreate("wchar[" & __Au3Obj_PtrStringLen($pFile) + 1 & "]", $pFile), 1) __Au3Obj_CoTaskMemFree($pFile) ConsoleWrite($sLoaded & @CRLF) ; Get pointer to EnumPins object $aCall = $oBaseFilter.EnumPins(0) If Not IsArray($aCall) Or Not $aCall[1] Then Return SetError(3, 0, False) Local $pEnum = $aCall[1] ; Define IEnumPins methods Local $dtagIEnumPins = $dtagIUnknown & _ "Next hresult(dword;ptr*;dword*);" & _ "Skip hresult(dword);" & _ "Reset hresult();" & _ "Clone hresult(ptr*);" ; Wrapp it Local $oEnum = _AutoItObject_WrapperCreate($pEnum, $dtagIEnumPins) ; Will enumerate all PINs and render them Local $pPin While 1 $aCall = $oEnum.Next(1, 0, 0) If Not IsArray($aCall) Then Return SetError(4, 0, False) $pPin = $aCall[2] If $pPin Then $oGraphBuilder.Render($pPin) _AutoItObject_IUnknownRelease($pPin); releasing non-wrapped object when no longer needed EndIf If $aCall[0] Then ExitLoop WEnd ; All's ok Return True EndFunc ;==>_WMAsfReaderLoad Func _ErrFunc() ;~ ConsoleWrite("! COM Error ! Number: 0x" & Hex($oCOMError.number, 8) & " ScriptLine: " & $oCOMError.scriptline & " - " & $oCOMError.windescription & @CRLF) EndFunc ;==>_ErrFuncKNOWN BUGS:- When you add a new station, it adds all the current ones to the list, however this can be fixed by restarting the application.Stations!http://173.193.14.170:8012http://94.76.208.7:8001http://212.45.104.50:8050http://119.207.75.238:11250http://norway.discovertrance.com:8000http://u15c.di.fm:80/di_minimalhttp://scfire-dtc-aa01.stream.aol.com:80/stream/1003http://ns24907.ovh.net:8000http://63.247.82.38:8000http://89.238.146.240:9050http://87.230.84.182:6666http://178.238.130.146:8006/Download the file containing the compiled file, icon and stations.ini (if not the registry version(attached)Attached files do NOT contain source code because im a stingy bastard and I had to delete the last files that had the code in them to upload the updated version because I have very little space left.shanetUDFs used in this version:Melba 23's Make sure you look at and fix the UDF accordingly.LiveStreaming.zipLiveStreamingReg.zip Edited December 30, 2010 by shanet [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
hench Posted December 28, 2010 Share Posted December 28, 2010 (edited) @trancexx Thanks ! This work perfectly, and push me to walk toward the path of AutoitObject !! @shanet: like your version as well, and it is a nice way to use melba23's gui extender !! hmm, fun to see people still getting pissed off over trancexx's communicating way !! which makes me think of character House on TeeVee hehe,... that would be a compliment, guy's such a brilliant one!! bye Edited December 28, 2010 by hench Link to comment Share on other sites More sharing options...
shanet Posted December 29, 2010 Share Posted December 29, 2010 @trancexxThanks ! This work perfectly, and push me to walk toward the path of AutoitObject !!It is her script that made it all happen.@shanet: like your version as well, and it is a nice way to use melba23's gui extender !!Thanks, Trancexx and Melba23 have been massive helps here. Couldn't get this far without them.Any ideas for the project?shanet [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
hench Posted December 29, 2010 Share Posted December 29, 2010 shanet, about the reg/ini debate, I'd vote for the portability: ini version for sure. ! Ideas on the way : - Don't know the feasibility : show basic informations about the song being played, does stations broadcast this info ? - HotKey to restore/activate from Tray - skinable gui, which may interfere with portability hench Link to comment Share on other sites More sharing options...
shanet Posted December 30, 2010 Share Posted December 30, 2010 about the reg/ini debate, I'd vote for the portability: ini version for sure. !I thought it would be better to do both ;DThat way we get the best of both worlds.I prefer portability two.Ideas on the way :- Don't know the feasibility : show basic informations about the song being played, does stations broadcast this info ?This has crossed my mind, I just need to find out how to do it - HotKey to restore/activate from TrayI can do that Any specific keys?- skinable gui, which may interfere with portability Didn't even cross my mind. I guess it could be done for those who want it done.Do you just mean a background image or the full deal?Thanks for the ideas!shanet [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
wakillon Posted December 30, 2010 Share Posted December 30, 2010 I have added some ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
shanet Posted January 2, 2011 Share Posted January 2, 2011 I saw that I intend to look at it over the next few days. [font="Comic Sans MS"]My code does not have bugs! It just develops random features.[/font]My Projects[list][*]Live Streaming (Not my project, but my edited version)[right]AutoIt Wrappers![/right][/list]Pure randomness[list][*]Small Minds.......................................................................................................[size="1"]Simple progress bar that changes direction at either sides.[/size][*]ChristmasIt AutoIt Christmas Theme..........................................................[size="1"]I WAS BOOOORED![/size][*]DriveToy..............................................................................................................[size="1"]Simple joke script. Trick your friends into thinking their computer drive is haywire![/size][/list]In Development[list][*]Your Background Task Organiser[*]AInstall Second Generation[/list]BEFORE POSTING ON THE FORUMS, TRY THIS: %programfiles%/AutoIt3/autoit3.chm Link to comment Share on other sites More sharing options...
trancexx Posted January 11, 2011 Author Share Posted January 11, 2011 mms://vipnrj.yacast.net/nrj_tvhit mms://81.89.49.210/musicbox?MSWMExt=.asf mms://stream02.gtk.hu/dance_tvd ... I bet you didn't know it can do that too. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
UEZ Posted January 11, 2011 Share Posted January 11, 2011 Indeed, magic moments! Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now