AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Australian Online Radio Player - NovaPlayer

 
Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
grayatrox



Joined: 26 May 2009
Posts: 39
Location: Queensland, Australia

PostPosted: Wed Jun 24, 2009 8:05 am    Post subject: Australian Online Radio Player - NovaPlayer Reply with quote

This would have to be my first project that I have been able to complete.

Simply put, I was sick of opening my browser, waiting for it to load, then finding the bookmark for my favorite online radio station, so I started fiddling around with ahk and the COM library.

This app will only run Aussie radio stations for now, but if I have some spare time I may some other stations

If anyone knows of other Aussie online stations, send me the link to the site, and if you can the stream itself.
(Click to enlarge)





Download NovaPlayer

Code:

#Persistent
#SingleInstance force

OldName = Show
NewName = Hide


Menu, tray, NoStandard

Menu, OptionsMenu, add, Nova 1069FM (Brisbane), Nova1069
Menu, OptionsMenu, Check, Nova 1069FM (Brisbane)
Menu, OptionsMenu, add, Nova 969FM (Sydney), Nova969
Menu, OptionsMenu, add, Nova 100FM (Melbourne), Nova100
Menu, OptionsMenu, add, Nova 919FM (Adelaide), Nova919
Menu, OptionsMenu, add, Nova 937FM (Perth), Nova937
Menu, OptionsMenu, add, There isn't a local stream for Canberra`, Hobart or Darwin`, Sorry :(, NoAction
Menu, OptionsMenu, Disable, There isn't a local stream for Canberra`, Hobart or Darwin`, Sorry :(
Menu, AboutMenu, Add, About, About
Menu, AboutMenu, Add, View my Homepage, Homepage
Menu, tray, add, Options, :OptionsMenu
Menu, tray, add, About, :AboutMenu
Menu, tray, Add, Hide, HideGui
Menu, tray, add, Exit, GuiClose

COM_AtlAxWinInit()
Gui, +LastFound +Owner -Resize -MaximizeBox -MinimizeBox
hIcon32 := DllCall("LoadImage", uint, 0
    , str, "NovaBoy.ico"  ; Icon filename (this file may contain multiple icons).
    , uint, 1  ; Type of image: IMAGE_ICON
    , int, 32, int, 32  ; Desired width and height of image (helps LoadImage decide which icon is best).
    , uint, 0x10)  ; Flags: LR_LOADFROMFILE
Gui +LastFound
SendMessage, 0x80, 1, hIcon32  ; 0x80 is WM_SETICON; and 1 means ICON_BIG (vs. 0 for ICON_SMALL).

;pwb := COM_AtlAxGetControl(COM_AtlAxCreateContainer(WinExist(),top,left,width,height, "Shell.Explorer") )  ;left these here just for reference of the parameters
pwb := COM_AtlAxGetControl(COM_AtlAxCreateContainer(WinExist(),0,0,510,600, "Shell.Explorer") )
;http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.ole.interop.ioleinplaceactiveobject(VS.80).aspx
IOleInPlaceActiveObject_Interface:="{00000117-0000-0000-C000-000000000046}"
pipa := COM_QueryInterface(pwb, "IOleInPlaceActiveObject_Interface")
OnMessage(WM_KEYDOWN:=0x0100, "WM_KEYDOWN")
OnMessage(WM_KEYUP:=0x0101, "WM_KEYDOWN")
gui,show, w484 h353  ,NovaPlayer   ; Actual Window Size 490 , 389
;take from the IE example
url:="http://www.nova1069.com.au/dmgcustom/streaming/default.aspx?Source=nova10689"
COM_Invoke(pwb, "Navigate", url)
loop
      If (rdy:=COM_Invoke(pwb,"readyState") = 4)
         break
return

GuiClose:

Gui, Destroy
COM_CoUninitialize()
COM_AtlAxWinTerm()
ExitApp

GuiSize:
WinMove, % "ahk_id " . COM_AtlAxGetContainer(pwb), , 0,0, A_GuiWidth, A_GuiHeight
return
WM_KEYDOWN(wParam, lParam, nMsg, hWnd)
{
;  Critical 20
;tooltip % wparam
  If  (wParam = 0x09 || wParam = 0x0D || wParam = 0x2E || wParam = 0x26 || wParam = 0x28) ; tab enter delete up down
  ;If  (wParam = 9 || wParam = 13 || wParam = 46 || wParam = 38 || wParam = 40) ; tab enter delete up down
  {
      WinGetClass, Class, ahk_id %hWnd%
      ;tooltip % class
      If  (Class = "Internet Explorer_Server")
          {
            Global pipa
             VarSetCapacity(Msg, 28)
             NumPut(hWnd,Msg), NumPut(nMsg,Msg,4), NumPut(wParam,Msg,8), NumPut(lParam,Msg,12)
             NumPut(A_EventInfo,Msg,16), NumPut(A_GuiX,Msg,20), NumPut(A_GuiY,Msg,24)
             DllCall(NumGet(NumGet(1*pipa)+20), "Uint", pipa, "Uint", &Msg)
             Return 0
          }
  }
}


Nova1069:
   Menu, OptionsMenu, Check, Nova 1069FM (Brisbane)
   Menu, OptionsMenu, UnCheck, Nova 969FM (Sydney)
   Menu, OptionsMenu, UnCheck, Nova 100FM (Melbourne)
   Menu, OptionsMenu, UnCheck, Nova 919FM (Adelaide)
   Menu, OptionsMenu, UnCheck, Nova 937FM (Perth)
   url:="http://www.nova1069.com.au/dmgcustom/streaming/Default.aspx?Source=nova10689"
   Gosub NewStream
Return

Nova969:
   Menu, OptionsMenu, Check, Nova 969FM (Sydney)
   Menu, OptionsMenu, UnCheck, Nova 1069FM (Brisbane)
   Menu, OptionsMenu, UnCheck, Nova 100FM (Melbourne)
   Menu, OptionsMenu, UnCheck, Nova 919FM (Adelaide)
   Menu, OptionsMenu, UnCheck, Nova 937FM (Perth)
   url:="http://www.nova969.com.au/dmgcustom/streaming/Default.aspx?Source=nova969"
   Gosub NewStream
Return

Nova100:
   Menu, OptionsMenu, Check, Nova 100FM (Melbourne)
   Menu, OptionsMenu, UnCheck, Nova 1069FM (Brisbane)
   Menu, OptionsMenu, UnCheck, Nova 969FM (Sydney)
   Menu, OptionsMenu, UnCheck, Nova 919FM (Adelaide)
   Menu, OptionsMenu, UnCheck, Nova 937FM (Perth)
   url:="http://www.nova100.com.au/dmgcustom/streaming/Default.aspx?Source=nova100"
   Gosub NewStream
Return

Nova919:
   Menu, OptionsMenu, Check, Nova 919FM (Adelaide)
   Menu, OptionsMenu, UnCheck, Nova 1069FM (Brisbane)
   Menu, OptionsMenu, UnCheck, Nova 969FM (Sydney)
   Menu, OptionsMenu, UnCheck, Nova 100FM (Melbourne)
   Menu, OptionsMenu, UnCheck, Nova 937FM (Perth)
   url:="http://www.nova919.com.au/dmgcustom/streaming/Default.aspx?Source=nova919"
   Gosub NewStream
Return

Nova937:
   Menu, OptionsMenu, Check, Nova 937FM (Perth)
   Menu, OptionsMenu, UnCheck, Nova 1069FM (Brisbane)
   Menu, OptionsMenu, UnCheck, Nova 969FM (Sydney)
   Menu, OptionsMenu, UnCheck, Nova 100FM (Melbourne)
   Menu, OptionsMenu, UnCheck, Nova 919FM (Adelaide)
   url:="http://www.nova937.com.au/dmgcustom/streaming/Default.aspx?Source=nova937"
   Gosub NewStream
Return

Homepage:
   Run http://grayatrox.50webs.com
/*
For those who are actually reading this code, and have seen page, it's a long runng joke with my friends.
Thinking about changing it to the autohotkey.net homepage, I'll have to do something with it though.
*/
Return

About:
   MsgBox, Created By [GoR]grayatrox`n`n Email me at grayatrox@yahoo.com.au for comments and bugs.
Return

NewStream:
   COM_Invoke(pwb, "Navigate", url)
   Loop
      If (rdy:=COM_Invoke(pwb,"ReadyState") = 4)
         Break
Return

NoAction:
Return


HideGui:
   If NewName <> Show
   {
      OldName = Hide
      NewName = Show
      Gui, Hide
      Menu, tray, Rename, %OldName%, %NewName%
   }
   Else
   {
      Gui, Show
      OldName = Show
      NewName = Hide
      Menu, tray, Rename, %OldName%, %NewName%
   }

Return


;------------------------------------------------------------------------------
; COM.ahk Standard Library
; by Sean
; http://www.autohotkey.com/forum/topic22923.html
;------------------------------------------------------------------------------

;Normally goes in C:\Program Files\Autohotkey\lib\COM.ahk, but that didn't seem to work whilst compiled.


COM_Init()
{
   Return   DllCall("ole32\OleInitialize", "Uint", 0)
}

COM_Term()
{
   Return   DllCall("ole32\OleUninitialize")
}

COM_VTable(ppv, idx)
{
   Return   NumGet(NumGet(1*ppv)+4*idx)
}

COM_QueryInterface(ppv, IID = "")
{
   If   DllCall(NumGet(NumGet(1*ppv)+0), "Uint", ppv, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)=0
   Return   ppv
}

COM_AddRef(ppv)
{
   Return   DllCall(NumGet(NumGet(1*ppv)+4), "Uint", ppv)
}

COM_Release(ppv)
{
   Return   DllCall(NumGet(NumGet(1*ppv)+8), "Uint", ppv)
}

COM_QueryService(ppv, SID, IID = "")
{
   DllCall(NumGet(NumGet(1*ppv)+4*0), "Uint", ppv, "Uint", COM_GUID4String(IID_IServiceProvider,"{6D5140C1-7436-11CE-8034-00AA006009FA}"), "UintP", psp)
   DllCall(NumGet(NumGet(1*psp)+4*3), "Uint", psp, "Uint", COM_GUID4String(SID,SID), "Uint", IID ? COM_GUID4String(IID,IID) : &SID, "UintP", ppv:=0)
   DllCall(NumGet(NumGet(1*psp)+4*2), "Uint", psp)
   Return   ppv
}

COM_FindConnectionPoint(pdp, DIID)
{
   DllCall(NumGet(NumGet(1*pdp)+ 0), "Uint", pdp, "Uint", COM_GUID4String(IID_IConnectionPointContainer, "{B196B284-BAB4-101A-B69C-00AA00341D07}"), "UintP", pcc)
   DllCall(NumGet(NumGet(1*pcc)+16), "Uint", pcc, "Uint", COM_GUID4String(DIID,DIID), "UintP", pcp)
   DllCall(NumGet(NumGet(1*pcc)+ 8), "Uint", pcc)
   Return   pcp
}

COM_GetConnectionInterface(pcp)
{
   VarSetCapacity(DIID, 16, 0)
   DllCall(NumGet(NumGet(1*pcp)+12), "Uint", pcp, "Uint", &DIID)
   Return   COM_String4GUID(&DIID)
}

COM_Advise(pcp, psink)
{
   DllCall(NumGet(NumGet(1*pcp)+20), "Uint", pcp, "Uint", psink, "UintP", nCookie)
   Return   nCookie
}

COM_Unadvise(pcp, nCookie)
{
   Return   DllCall(NumGet(NumGet(1*pcp)+24), "Uint", pcp, "Uint", nCookie)
}

COM_Enumerate(penum, ByRef Result, ByRef vt = "")
{
   VarSetCapacity(varResult,16,0)
   If (0 =   hr:=DllCall(NumGet(NumGet(1*penum)+12), "Uint", penum, "Uint", 1, "Uint", &varResult, "UintP", 0))
      Result:=(vt:=NumGet(varResult,0,"Ushort"))=8||vt<0x1000&&DllCall("oleaut32\VariantChangeTypeEx","Uint",&varResult,"Uint",&varResult,"Uint",LCID,"Ushort",1,"Ushort",8)=0 ? COM_Ansi4Unicode(bstr:=NumGet(varResult,8)) . COM_SysFreeString(bstr) : NumGet(varResult,8)
   Return   hr
}

COM_Invoke(pdsp,name,prm0="vT_NoNe",prm1="vT_NoNe",prm2="vT_NoNe",prm3="vT_NoNe",prm4="vT_NoNe",prm5="vT_NoNe",prm6="vT_NoNe",prm7="vT_NoNe",prm8="vT_NoNe",prm9="vT_NoNe")
{
   If   name contains .
   {
      SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".",COM_AddRef(pdsp)
   Loop,   Parse,   name, .
   {
   If   A_Index=1
   {
      name :=   A_LoopField
      Continue
   }
   Else If   name not contains [,(
      prmn :=   ""
   Else If   InStr("])",SubStr(name,0))
   Loop,   Parse,   name, [(,'")]
   If   A_Index=1
      name :=   A_LoopField
   Else   prmn :=   A_LoopField
   Else
   {
      name .=   "." . A_LoopField
      Continue
   }
   If   A_LoopField!=
      pdsp:=   COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
   Else   Return   prmn!="" ? COM_Invoke(pdsp,name,prmn,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8):COM_Invoke(pdsp,name,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8,prm9),COM_Release(pdsp)
   }
   }
   sParams   := "0123456789"
   Loop,   Parse,   sParams
      If   (prm%A_LoopField% == "vT_NoNe")
      {
         sParams   := SubStr(sParams,1,A_Index-1)
         Break
      }
   VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
   Loop,    Parse,   sParams
;      If   prm%A_LoopField%+0=="" || InStr(prm%A_LoopField%,".") || prm%A_LoopField%>=0x80000000 || prm%A_LoopField%<-0x80000000
      If   prm%A_LoopField% is not integer
               NumPut(8,NumPut(COM_SysAllocString(prm%A_LoopField%),varg,(nParams-A_Index)*16+8),-12,"Ushort")
      Else   NumPut(SubStr(prm%A_LoopField%,1,1)="+" ? 9:prm%A_LoopField%=="-0" ? (prm%A_LoopField%:=0x80020004)*0+10:3,NumPut(prm%A_LoopField%,varg,(nParams-A_Index)*16+8),-12,"Ushort")
   If   nParams
      NumPut(nParams,NumPut(&varg,DispParams),4)
   If   (nvk :=   SubStr(name,0)="=" ? 12:3)=12
      name :=   SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
   Global   COM_HR, COM_LR:=""
   If   (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_Unicode4Ansi(wname,name),"Uint",1,"Uint",LCID,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
      COM_HR:=0
   Loop, %   nParams
      NumGet(varg,(A_Index-1)*16,"Ushort")=8 ? COM_SysFreeString(NumGet(varg,(A_Index-1)*16+8)) : ""
   Global   COM_VT := NumGet(varResult,0,"Ushort")
   Return   COM_HR=0 ? COM_VT>1 ? COM_VT=8||COM_VT<0x1000&&DllCall("oleaut32\VariantChangeTypeEx","Uint",&varResult,"Uint",&varResult,"Uint",LCID,"Ushort",1,"Ushort",8)=0 ? COM_Ansi4Unicode(bstr:=NumGet(varResult,8)) . COM_SysFreeString(bstr):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}

COM_Invoke_(pdsp,name,typ0="",prm0="",typ1="",prm1="",typ2="",prm2="",typ3="",prm3="",typ4="",prm4="",typ5="",prm5="",typ6="",prm6="",typ7="",prm7="",typ8="",prm8="",typ9="",prm9="")
{
   If   name contains .
   {
      SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".", COM_AddRef(pdsp)
   Loop,   Parse,   name, .
   {
   If   A_Index=1
   {
      name :=   A_LoopField
      Continue
   }
   Else If   name not contains [,(
      prmn :=   ""
   Else If   InStr("])",SubStr(name,0))
   Loop,   Parse,   name, [(,'")]
   If   A_Index=1
      name :=   A_LoopField
   Else   prmn :=   A_LoopField
   Else
   {
      name .=   "." . A_LoopField
      Continue
   }
   If   A_LoopField!=
      pdsp:=   COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
   Else   Return   COM_Invoke_(pdsp,name,typ0,prm0,typ1,prm1,typ2,prm2,typ3,prm3,typ4,prm4,typ5,prm5,typ6,prm6,typ7,prm7,typ8,prm8,typ9,prm9),COM_Release(pdsp)
   }
   }
   sParams   := "0123456789"
   Loop,   Parse,   sParams
      If   (typ%A_LoopField% = "")
      {
         sParams   := SubStr(sParams,1,A_Index-1)
         Break
      }
   VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
   Loop,   Parse,   sParams
      NumPut(typ%A_LoopField%,varg,(nParams-A_Index)*16,"Ushort"), typ%A_LoopField%&0x4000=0 ? NumPut(typ%A_LoopField%=8 ? COM_SysAllocString(prm%A_LoopField%) : prm%A_LoopField%,varg,(nParams-A_Index)*16+8,typ%A_LoopField%=5||typ%A_LoopField%=7 ? "double" : typ%A_LoopField%=4 ? "float" : "int64") : typ%A_LoopField%=0x400C||typ%A_LoopField%=0x400E ? NumPut(prm%A_LoopField%,varg,(nParams-A_Index)*16+8) : VarSetCapacity(_ref_%A_LoopField%,8,0) . NumPut(&_ref_%A_LoopField%,varg,(nParams-A_Index)*16+8) . NumPut(typ%A_LoopField%=0x4008 ? COM_SysAllocString(prm%A_LoopField%) : prm%A_LoopField%,_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005||typ%A_LoopField%=0x4007 ? "double" : typ%A_LoopField%=0x4004 ? "float" : "int64")
   If   nParams
      NumPut(nParams,NumPut(&varg,DispParams),4)
   If   (nvk :=   SubStr(name,0)="=" ? 12:3)=12
      name :=   SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
   Global   COM_HR, COM_LR:=""
   If   (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_Unicode4Ansi(wname,name),"Uint",1,"Uint",LCID,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
      COM_HR:=0
   Loop,   Parse,   sParams
      typ%A_LoopField%&0x4000=0 ? (typ%A_LoopField%=8 ? COM_SysFreeString(NumGet(varg,(nParams-A_Index)*16+8)) : "") : typ%A_LoopField%=0x400C||typ%A_LoopField%=0x400E ? "" : typ%A_LoopField%=0x4008 ? (COM_BYREF_%A_LoopField%:=COM_Ansi4Unicode(NumGet(_ref_%A_LoopField%))) . COM_SysFreeString(NumGet(_ref_%A_LoopField%)) : (COM_BYREF_%A_LoopField%:=NumGet(_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005||typ%A_LoopField%=0x4007 ? "double" : typ%A_LoopField%=0x4004 ? "float" : "int64"))
   Global   COM_VT := NumGet(varResult,0,"Ushort")
   Return   COM_HR=0 ? COM_VT>1 ? COM_VT=8||COM_VT<0x1000&&DllCall("oleaut32\VariantChangeTypeEx","Uint",&varResult,"Uint",&varResult,"Uint",LCID,"Ushort",1,"Ushort",8)=0 ? COM_Ansi4Unicode(bstr:=NumGet(varResult,8)) . COM_SysFreeString(bstr):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}

COM_DispInterface(this, prm1="", prm2="", prm3="", prm4="", prm5="", prm6="", prm7="", prm8="")
{
   Critical
   If   A_EventInfo = 6
      DllCall(NumGet(NumGet(NumGet(this+8))+28),"Uint",NumGet(this+8),"Uint",prm1,"UintP",pname,"Uint",1,"UintP",0), VarSetCapacity(sfn,63), DllCall("user32\wsprintfA","str",sfn,"str","%s%S","Uint",this+40,"Uint",pname,"Cdecl"), COM_SysFreeString(pname), (pfn:=RegisterCallback(sfn,"C F")) ? (hResult:=DllCall(pfn,"Uint",prm5,"Uint",this,"Uint",prm6,"Cdecl")) . DllCall("kernel32\GlobalFree","Uint",pfn) : (hResult:=0x80020003)
   Else If   A_EventInfo = 5
      hResult:=DllCall(NumGet(NumGet(NumGet(this+8))+40),"Uint",NumGet(this+8),"Uint",prm2,"Uint",prm3,"Uint",prm5)
   Else If   A_EventInfo = 4
      NumPut(0,prm3+0), hResult:=0x80004001
   Else If   A_EventInfo = 3
      NumPut(0,prm1+0), hResult:=0
   Else If   A_EventInfo = 2
      NumPut(hResult:=NumGet(this+4)-1,this+4)
   Else If   A_EventInfo = 1
      NumPut(hResult:=NumGet(this+4)+1,this+4)
   Else If   A_EventInfo = 0
      COM_IsEqualGUID(this+24,prm1)||InStr("{00020400-0000-0000-C000-000000000046}{00000000-0000-0000-C000-000000000046}",COM_String4GUID(prm1)) ? NumPut(this,prm2+0) . NumPut(NumGet(this+4)+1,this+4) . (hResult:=0) : NumPut(0,prm2+0) . (hResult:=0x80004002)
   Return   hResult
}

COM_DispGetParam(pDispParams, Position = 0, vt = 8)
{
   VarSetCapacity(varResult,16,0)
   DllCall("oleaut32\DispGetParam", "Uint", pDispParams, "Uint", Position, "Ushort", vt, "Uint", &varResult, "UintP", nArgErr)
   Return   NumGet(varResult,0,"Ushort")=8 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_SysFreeString(NumGet(varResult,8)) : NumGet(varResult,8)
}

COM_DispSetParam(val, pDispParams, Position = 0, vt = 8)
{
   Return   NumPut(vt=8 ? COM_SysAllocString(val) : val,NumGet(NumGet(pDispParams+0)+(NumGet(pDispParams+8)-Position)*16-8),0,vt=11||vt=2 ? "short" : "int")
}

COM_Delimiter(sString)
{
   StringReplace, sString, sString, ., `a, 1
   Return   sString
}

COM_Error(hr = "", lr = "", pei = "", name = "")
{
   Static   bDebug:=1
   If Not   pei
   {
   bDebug:=hr
   Global   COM_HR, COM_LR
   Return   COM_HR&&COM_LR ? COM_LR<<32|COM_HR:COM_HR
   }
   Else If   !bDebug
   Return
   hr ? (VarSetCapacity(sError,1023),VarSetCapacity(nError,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",hr<>0x80020009 ? hr : (bExcep:=1)*(hr:=NumGet(pei+28)) ? hr : hr:=NumGet(pei+0,0,"Ushort")+0x80040200,"Uint",0,"str",sError,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError,"str","0x%08X","Uint",hr,"Cdecl")) : sError:="The COM Object may not be a valid Dispatch Object!`n`tFirst ensure that COM Library has been initialized through COM_Init().`n", lr ? (VarSetCapacity(sError2,1023),VarSetCapacity(nError2,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",lr,"Uint",0,"str",sError2,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError2,"str","0x%08X","Uint",lr,"Cdecl")) : ""
   MsgBox, 260, COM Error Notification, % "Function Name:`t""" . name . """`nERROR:`t" . sError . "`t(" . nError . ")" . (bExcep ? SubStr(NumGet(pei+24) ? DllCall(NumGet(pei+24),"Uint",pei) : "",1,0) . "`nPROG:`t" . COM_Ansi4Unicode(NumGet(pei+4)) . COM_SysFreeString(NumGet(pei+4)) . "`nDESC:`t" . COM_Ansi4Unicode(NumGet(pei+8)) . COM_SysFreeString(NumGet(pei+8)) . "`nHELP:`t" . COM_Ansi4Unicode(NumGet(pei+12)) . COM_SysFreeString(NumGet(pei+12)) . "," . NumGet(pei+16) : "") . (lr ? "`n`nERROR2:`t" . sError2 . "`t(" . nError2 . ")" : "") . "`n`nWill Continue?"
   IfMsgBox, No, Exit
}

COM_CreateIDispatch()
{
   Static   IDispatch
   If Not   VarSetCapacity(IDispatch)
   {
      VarSetCapacity(IDispatch,28,0),   nParams=3112469
      Loop,   Parse,   nParams
      NumPut(RegisterCallback("COM_DispInterface","",A_LoopField,A_Index-1),IDispatch,4*(A_Index-1))
   }
   Return &IDispatch
}

COM_GetDefaultInterface(pdisp, LCID = 0)
{
   DllCall(NumGet(NumGet(1*pdisp) +12), "Uint", pdisp , "UintP", ctinf)
   If   ctinf
   {
   DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", LCID, "UintP", ptinf)
   DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
   DllCall(NumGet(NumGet(1*pdisp)+ 0), "Uint", pdisp, "Uint" , pattr, "UintP", ppv)
   DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
   DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
   If   ppv
   DllCall(NumGet(NumGet(1*pdisp)+ 8), "Uint", pdisp),   pdisp := ppv
   }
   Return   pdisp
}

COM_GetDefaultEvents(pdisp, LCID = 0)
{
   DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", LCID, "UintP", ptinf)
   DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
   VarSetCapacity(IID,16), DllCall("RtlMoveMemory", "Uint", &IID, "Uint", pattr, "Uint", 16)
   DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
   DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
   DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
   Loop, %   DllCall(NumGet(NumGet(1*ptlib)+12), "Uint", ptlib)
   {
      DllCall(NumGet(NumGet(1*ptlib)+20), "Uint", ptlib, "Uint", A_Index-1, "UintP", TKind)
      If   TKind <> 5
         Continue
      DllCall(NumGet(NumGet(1*ptlib)+16), "Uint", ptlib, "Uint", A_Index-1, "UintP", ptinf)
      DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
      nCount:=NumGet(pattr+48,0,"Ushort")
      DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
      Loop, %   nCount
      {
         DllCall(NumGet(NumGet(1*ptinf)+36), "Uint", ptinf, "Uint", A_Index-1, "UintP", nFlags)
         If   !(nFlags & 1)
            Continue
         DllCall(NumGet(NumGet(1*ptinf)+32), "Uint", ptinf, "Uint", A_Index-1, "UintP", hRefType)
         DllCall(NumGet(NumGet(1*ptinf)+56), "Uint", ptinf, "Uint", hRefType , "UintP", prinf)
         DllCall(NumGet(NumGet(1*prinf)+12), "Uint", prinf, "UintP", pattr)
         nFlags & 2 ? DIID:=COM_String4GUID(pattr) : bFind:=COM_IsEqualGUID(pattr,&IID)
         DllCall(NumGet(NumGet(1*prinf)+76), "Uint", prinf, "Uint" , pattr)
         DllCall(NumGet(NumGet(1*prinf)+ 8), "Uint", prinf)
      }
      DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
      If   bFind
         Break
   }
   DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
   Return   bFind ? DIID : "{00000000-0000-0000-0000-000000000000}"
}

COM_GetGuidOfName(pdisp, Name, LCID = 0)
{
   DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", LCID, "UintP", ptinf)
   DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
   DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf:=0
   DllCall(NumGet(NumGet(1*ptlib)+44), "Uint", ptlib, "Uint", COM_Unicode4Ansi(Name,Name), "Uint", 0, "UintP", ptinf, "UintP", memID, "UshortP", 1)
   DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
   DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
   GUID := COM_String4GUID(pattr)
   DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
   DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
   Return   GUID
}

COM_GetTypeInfoOfGuid(pdisp, GUID, LCID = 0)
{
   DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", LCID, "UintP", ptinf)
   DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
   DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf := 0
   DllCall(NumGet(NumGet(1*ptlib)+24), "Uint", ptlib, "Uint", COM_GUID4String(GUID,GUID), "UintP", ptinf)
   DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
   Return   ptinf
}

; A Function Name including Prefix is limited to 63 bytes!
COM_ConnectObject(psource, prefix = "", DIID = "")
{
   If Not   DIID
      0+(pconn:=COM_FindConnectionPoint(psource,"{00020400-0000-0000-C000-000000000046}")) ? (DIID:=COM_GetConnectionInterface(pconn))="{00020400-0000-0000-C000-000000000046}" ? DIID:=COM_GetDefaultEvents(psource) : "" : pconn:=COM_FindConnectionPoint(psource,DIID:=COM_GetDefaultEvents(psource))
   Else   pconn:=COM_FindConnectionPoint(psource,SubStr(DIID,1,1)="{" ? DIID : DIID:=COM_GetGuidOfName(psource,DIID))
   If   !pconn || !ptinf:=COM_GetTypeInfoOfGuid(psource,DIID)
   {
      MsgBox, No Event Interface Exists!
      Return
   }
   psink:=COM_CoTaskMemAlloc(40+StrLen(prefix)+1), NumPut(1,NumPut(COM_CreateIDispatch(),psink+0)), NumPut(psource,NumPut(ptinf,psink+8))
   DllCall("RtlMoveMemory", "Uint", psink+24, "Uint", COM_GUID4String(DIID,DIID), "Uint", 16)
   DllCall("RtlMoveMemory", "Uint", psink+40, "Uint", &prefix, "Uint", StrLen(prefix)+1)
   NumPut(COM_Advise(pconn,psink),NumPut(pconn,psink+16))
   Return   psink
}

COM_DisconnectObject(psink)
{
   Return   COM_Unadvise(NumGet(psink+16),NumGet(psink+20))=0 ? (0,COM_Release(NumGet(psink+16)),COM_Release(NumGet(psink+8)),COM_CoTaskMemFree(psink)) : 1
}

COM_CreateObject(CLSID, IID = "", CLSCTX = 5)
{
   DllCall("ole32\CoCreateInstance", "Uint", SubStr(CLSID,1,1)="{" ? COM_GUID4String(CLSID,CLSID) : COM_CLSID4ProgID(CLSID,CLSID), "Uint", 0, "Uint", CLSCTX, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)
   Return   ppv
}

COM_ActiveXObject(ProgID)
{
   DllCall("ole32\CoCreateInstance", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "Uint", 5, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
   Return   COM_GetDefaultInterface(pdisp)
}

COM_GetObject(Moniker)
{
   DllCall("ole32\CoGetObject", "Uint", COM_Unicode4Ansi(Moniker,Moniker), "Uint", 0, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
   Return   COM_GetDefaultInterface(pdisp)
}

COM_GetActiveObject(ProgID)
{
   DllCall("oleaut32\GetActiveObject", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "UintP", punk)
   DllCall(NumGet(NumGet(1*punk)+0), "Uint", punk, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
   DllCall(NumGet(NumGet(1*punk)+8), "Uint", punk)
   Return   COM_GetDefaultInterface(pdisp)
}

COM_CLSID4ProgID(ByRef CLSID, ProgID)
{
   VarSetCapacity(CLSID, 16)
   DllCall("ole32\CLSIDFromProgID", "Uint", COM_Unicode4Ansi(ProgID,ProgID), "Uint", &CLSID)
   Return   &CLSID
}

COM_GUID4String(ByRef CLSID, String)
{
   VarSetCapacity(CLSID, 16)
   DllCall("ole32\CLSIDFromString", "Uint", COM_Unicode4Ansi(String,String,38), "Uint", &CLSID)
   Return   &CLSID
}

COM_ProgID4CLSID(pCLSID)
{
   DllCall("ole32\ProgIDFromCLSID", "Uint", pCLSID, "UintP", pProgID)
   Return   COM_Ansi4Unicode(pProgID) . COM_CoTaskMemFree(pProgID)
}

COM_String4GUID(pGUID)
{
   VarSetCapacity(String, 38 * 2 + 1)
   DllCall("ole32\StringFromGUID2", "Uint", pGUID, "Uint", &String, "int", 39)
   Return   COM_Ansi4Unicode(&String, 38)
}

COM_IsEqualGUID(pGUID1, pGUID2)
{
   Return   DllCall("ole32\IsEqualGUID", "Uint", pGUID1, "Uint", pGUID2)
}

COM_CoCreateGuid()
{
   VarSetCapacity(GUID, 16, 0)
   DllCall("ole32\CoCreateGuid", "Uint", &GUID)
   Return   COM_String4GUID(&GUID)
}

COM_CoTaskMemAlloc(cb)
{
   Return   DllCall("ole32\CoTaskMemAlloc", "Uint", cb)
}

COM_CoTaskMemFree(pv)
{
      DllCall("ole32\CoTaskMemFree", "Uint", pv)
}

COM_CoInitialize()
{
   Return   DllCall("ole32\CoInitialize", "Uint", 0)
}

COM_CoUninitialize()
{
      DllCall("ole32\CoUninitialize")
}

COM_SysAllocString(sString)
{
   Return   DllCall("oleaut32\SysAllocString", "Uint", COM_Ansi2Unicode(sString,wString))
}

COM_SysFreeString(bstr)
{
      DllCall("oleaut32\SysFreeString", "Uint", bstr)
}

COM_SysStringLen(bstr)
{
   Return   DllCall("oleaut32\SysStringLen", "Uint", bstr)
}

COM_SafeArrayDestroy(psa)
{
   Return   DllCall("oleaut32\SafeArrayDestroy", "Uint", psa)
}

COM_VariantClear(pvarg)
{
   Return   DllCall("oleaut32\VariantClear", "Uint", pvarg)
}

COM_AtlAxWinInit(Version = "")
{
   COM_Init()
   If Not   DllCall("GetModuleHandle", "str", "atl" . Version)
      DllCall("LoadLibrary"    , "str", "atl" . Version)
   Return   DllCall("atl" . Version . "\AtlAxWinInit")
}

COM_AtlAxWinTerm(Version = "")
{
   COM_Term()
   If   hModule :=   DllCall("GetModuleHandle", "str", "atl" . Version)
   Return      DllCall("FreeLibrary"    , "Uint", hModule)
}

COM_AtlAxAttachControl(pdsp, hWnd, Version = "")
{
   Return   DllCall("atl" . Version . "\AtlAxAttachControl", "Uint", punk:=COM_QueryInterface(pdsp,0), "Uint", hWnd, "Uint", 0), COM_Release(punk)
}

COM_AtlAxCreateControl(hWnd, Name, Version = "")
{
   If   DllCall("atl" . Version . "\AtlAxCreateControl", "Uint", COM_Unicode4Ansi(Name,Name), "Uint", hWnd, "Uint", 0, "Uint", 0)=0
   Return   COM_AtlAxGetControl(hWnd, Version)
}

COM_AtlAxGetControl(hWnd, Version = "")
{
   If   DllCall("atl" . Version . "\AtlAxGetControl", "Uint", hWnd, "UintP", punk)=0
      pdsp:=COM_QueryInterface(punk), COM_Release(punk)
   Return   pdsp
}

COM_AtlAxGetHost(hWnd, Version = "")
{
   If   DllCall("atl" . Version . "\AtlAxGetHost", "Uint", hWnd, "UintP", punk)=0
      pdsp:=COM_QueryInterface(punk), COM_Release(punk)
   Return   pdsp
}

COM_AtlAxCreateContainer(hWnd, l, t, w, h, Name = "", Version = "")
{
   Return   DllCall("CreateWindowEx", "Uint",0x200, "str", "AtlAxWin" . Version, "Uint", Name ? &Name : 0, "Uint", 0x54000000, "int", l, "int", t, "int", w, "int", h, "Uint", hWnd, "Uint", 0, "Uint", 0, "Uint", 0)
}

COM_AtlAxGetContainer(pdsp, bCtrl = "")
{
   DllCall(NumGet(NumGet(1*pdsp)+ 0), "Uint", pdsp, "Uint", COM_GUID4String(IID_IOleWindow,"{00000114-0000-0000-C000-000000000046}"), "UintP", pwin)
   DllCall(NumGet(NumGet(1*pwin)+12), "Uint", pwin, "UintP", hCtrl)
   DllCall(NumGet(NumGet(1*pwin)+ 8), "Uint", pwin)
   Return   bCtrl ? hCtrl : DllCall("GetParent", "Uint", hCtrl)
}

COM_Ansi4Unicode(pString, nSize = "")
{
   If (nSize = "")
       nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
   VarSetCapacity(sString, nSize)
   DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
   Return   sString
}

COM_Unicode4Ansi(ByRef wString, sString, nSize = "")
{
   If (nSize = "")
       nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
   VarSetCapacity(wString, nSize * 2 + 1)
   DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
   Return   &wString
}

COM_Ansi2Unicode(ByRef sString, ByRef wString, nSize = "")
{
   If (nSize = "")
       nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
   VarSetCapacity(wString, nSize * 2 + 1)
   DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
   Return   &wString
}

COM_Unicode2Ansi(ByRef wString, ByRef sString, nSize = "")
{
   pString := wString + 0 > 65535 ? wString : &wString
   If (nSize = "")
       nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
   VarSetCapacity(sString, nSize)
   DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
   Return   &sString
}

COM_ScriptControl(sCode, sLang = "", bEval = False, sFunc = "", sName = "", pdisp = 0, bGlobal = False)
{
   COM_Init()
   psc  :=   COM_CreateObject("MSScriptControl.ScriptControl")
      COM_Invoke(psc, "Language", sLang ? sLang : "VBScript")
   sName ?   COM_Invoke(psc, "AddObject", sName, "+" . pdisp, bGlobal) : ""
   sFunc ?   COM_Invoke(psc, "AddCode", sCode) : ""
   ret  :=   COM_Invoke(psc, bEval ? "Eval" : "ExecuteStatement", sFunc ? sFunc : sCode)
   COM_Release(psc)
   COM_Term()
   Return   ret
}


Edit:
I just accidentally found that I could drag and drop items onto the GUI, so if someone could let me know how to fix that....


Last edited by grayatrox on Thu Jun 25, 2009 12:42 am; edited 3 times in total
Back to top
View user's profile Send private message
SoggyDog



Joined: 02 May 2006
Posts: 783
Location: Greeley, CO

PostPosted: Wed Jun 24, 2009 1:45 pm    Post subject: Re: Australian Online Radio Player - NovaPlayer Reply with quote

grayatrox wrote:
...so if someone could let me know how to fix that....

No one can help you without source code;
Further, many of us won't even bother trying your script if all you provide is an EXE file.
_________________

SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Fry



Joined: 01 Nov 2007
Posts: 885

PostPosted: Wed Jun 24, 2009 2:58 pm    Post subject: Reply with quote

@SoggyDog

Dont be such a dick.

Give him credit, this is a SWEET script. Im really amazed.

Good Job grayatrox
Back to top
View user's profile Send private message
n-l-i-d
Guest





PostPosted: Wed Jun 24, 2009 3:11 pm    Post subject: Reply with quote

Nicely done, even though it seems to be nothing but a COM/IE window.

Would be nice if you can post the source, yes.
Back to top
SoggyDog



Joined: 02 May 2006
Posts: 783
Location: Greeley, CO

PostPosted: Wed Jun 24, 2009 3:24 pm    Post subject: Reply with quote

Fry wrote:
@SoggyDog

Dont be such a dick.

Give him credit, this is a SWEET script. Im really amazed.

Good Job grayatrox

The only thing remotely dick-ish in this thread is your response...
Nothing spoken here but the truth;

a) True - It's hard to help fix the code without the, oh, I don't know... CODE!
b) True - Many of us won't bother with EXE's without the source.

Dude, you've been on these forums long enough to know both are accurate statements;
Go take a nap.
_________________

SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Fry



Joined: 01 Nov 2007
Posts: 885

PostPosted: Wed Jun 24, 2009 3:26 pm    Post subject: Reply with quote

I just woke up, so...

Also, you want the source? It seems you want it. I'll give it you. Pm me.
Back to top
View user's profile Send private message
SoggyDog



Joined: 02 May 2006
Posts: 783
Location: Greeley, CO

PostPosted: Wed Jun 24, 2009 3:33 pm    Post subject: Reply with quote

Fry wrote:
I just woke up, so...

Also, you want the source? It seems you want it. I'll give it you. Pm me.

Actually, no;
I don't want or need the code.

Since grayatrox is clearly new to this...
    "This would have to be my first project that I have been able to complete."
...I thought it might be nice to let him/her know that code is appreciated here, cited by two very good reasons why.

Of course, this was construed as 'being a dick' so I guess I'll just not bother helping anyone anymore;
It clearly goes unappreciated.
_________________

SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Fry



Joined: 01 Nov 2007
Posts: 885

PostPosted: Wed Jun 24, 2009 3:37 pm    Post subject: Reply with quote

Ok. Go Ahead
Back to top
View user's profile Send private message
SoggyDog



Joined: 02 May 2006
Posts: 783
Location: Greeley, CO

PostPosted: Wed Jun 24, 2009 3:38 pm    Post subject: Reply with quote

Fry wrote:
Ok. Go Ahead

Yeah, didn't think you'd be all butt-hurt to hear that.
I gotta tell you, you're a mean drunk.

[edit] Sorry, grayatrox... Didn't mean to let your thread get hijacked;
I had no idea Fry's cheese was about to slide off his cracker.
_________________

SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played."


Last edited by SoggyDog on Wed Jun 24, 2009 4:05 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
BoBoł
Guest





PostPosted: Wed Jun 24, 2009 3:51 pm    Post subject: Reply with quote

The prob here: you're both right!
Fry, for appreciating that grayatrox is sharing his code with the community (I'd wish all of the AHK geniuses would do that as well).
SoggyDog, for clearifying that its not that good idea to request support on something which didn't exist (ATM): code. And indeed, only a minority of vacuum-brainers in this forum would prefer an exe over the plain AHK code.

OTOH, you're both wrong if you think that flaming each other will be of help for anyone here.
OK, OK, its entertaining ... Rolling EyesSmile
Back to top
BoBoł
Guest





PostPosted: Wed Jun 24, 2009 3:57 pm    Post subject: Reply with quote

Quote:
Sorry the screenshot is so large, if I knew how to resize it, I would.
Now you know how to ... http://www.autohotkey.com/forum/topic35580.html
So, no excuses. 1..2..3..edit! Cool
Back to top
Fry



Joined: 01 Nov 2007
Posts: 885

PostPosted: Wed Jun 24, 2009 4:03 pm    Post subject: Reply with quote

Thanks BoBo
Back to top
View user's profile Send private message
Hezzu



Joined: 08 Aug 2008
Posts: 117
Location: Raahe, Finland

PostPosted: Thu Jun 25, 2009 12:02 am    Post subject: Reply with quote

Internet arguments are the best Very Happy

just commenting while in bed with my laptop in an 100 degree fever!

and no its not a disco fever Very Happy

anyway cool script

rep+
_________________
Hezzu - excuse the english!
Back to top
View user's profile Send private message Send e-mail Visit poster's website
grayatrox



Joined: 26 May 2009
Posts: 39
Location: Queensland, Australia

PostPosted: Thu Jun 25, 2009 12:29 am    Post subject: Reply with quote

lmao, should have guessed I'd cause a stirr.

The reason why it was compiled in the first place, is because I'm at uni, and I'd like to listen to the radio whilst studying on their computers Wink .. speaking of which, I had better go do some now...

Image and sourcecode Fixed in first post.

@BoBoł Your app works well, but it only takes a screenshot of the active window as far as i could work out, so I didn't use it in this instance, but it is better than pressing printscreen and pasting it into paint or whatever.


... at the moment, yes, that's all it is, a COM/IE window, but I have plans for it when I get the time. such as add your own station with dynamic menus .etc, if at all possible (came to me as I went to sleep last night)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Page 1 of 1

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group