AutoHotkey Community

It is currently May 26th, 2012, 12:43 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 6 posts ] 
Author Message
PostPosted: December 19th, 2008, 6:38 pm 
Offline

Joined: July 14th, 2006, 12:31 am
Posts: 290
Location: Berlin
Hello,

in the network connections windows xp tells you if a network cable is not plugged / connected. can this information be retrieved via cmd, registry, devcon.exe or another way?


Last edited by ladiko on December 29th, 2008, 10:45 am, edited 1 time in total.

Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 19th, 2008, 6:57 pm 
Offline

Joined: April 20th, 2006, 5:11 pm
Posts: 75
Location: Vienna
Use ipconfig! If a Network adapter has a connection, there schould be a IP for the adapter.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 19th, 2008, 10:27 pm 
Offline

Joined: July 14th, 2006, 12:31 am
Posts: 290
Location: Berlin
thank you for your reply obi-wahn!

windows also detects a network cable if there is a switch/router on the other side of the cable -> the network doesnt need a dhcp server to get the "network cable" notification. so if there is no dhcp server availabe and no fixed ip ... ipconfig doesnt help.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 29th, 2008, 9:14 am 
Offline

Joined: July 14th, 2006, 12:31 am
Posts: 290
Location: Berlin
i found some information, but i dont know what to do, more than ever i dont know how to do this with autohotkey.

http://www.ndis.com/faq/QA01050301/default.htm
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
http://www.realgeek.com/forums/network- ... 24824.html

the problem is, that i dont want to be notified if i cable was unplugged, but if the calbe is unplugged now. is this adaptable to ahk?

from the first link and http://www.autohotkey.com/forum/topic16632.html i got this not working example:

edit:
now it works :-)

Code:
#Singleinstance force

   LoopDevicesKey = SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
   TargetSubkey = SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}
   
   Loop , HKLM , %LoopDevicesKey% , 2
   {
      RegRead , Characteristics , HKLM , %LoopDevicesKey%\%A_LoopRegName% , Characteristics
      If (Characteristics = 132)
      {
         ; Characteristics = 132 --> 'network adapter' found --> read adapter name
         RegRead , NIC_Name , HKLM , %LoopDevicesKey%\%A_LoopRegName% , DriverDesc
         
         If CablePlugged(NIC_Name)
            Msgbox , %NIC_Name%: cable is plugged.
         Else
            Msgbox , %NIC_Name%: cable is unplugged.
      }
   }
Return

CablePlugged(NetworkCardDescription)
{
   COM_Init()
   ;  SubStr() to remove a tailing newline
   CablePlugged := !SubStr(WMI_Query("\\.\root\WMI", "MSNdis_MediaConnectStatus WHERE InstanceName='" . NetworkCardDescription . "'", "NdisMediaConnectStatus"),1,1)
   COM_Term()
   Return CablePlugged
}

;------------------------------------------------------------------------------
; WMI_Query()
; by Sean
; http://www.autohotkey.com/forum/topic16632.html
;------------------------------------------------------------------------------
WMI_Query(Namespace, Class, Property = "")
{
   psvc :=   COM_GetObject("winmgmts:{impersonationLevel=impersonate}!" . Namespace)
   pset :=   COM_Invoke(psvc, "ExecQuery",  "SELECT * FROM " . Class)
   penm :=   COM_Invoke(pset, "_NewEnum")
   Loop, %   COM_Invoke(pset, "Count")
      If   COM_Enumerate(penm,pobj)=0
      {
       If  Not   Property
            MsgBox % COM_Invoke(pobj, "GetObjectText_")
         Else   sResult.=COM_Invoke(pobj, Property) . "`n"
         COM_Release(pobj)
      }
   COM_Release(penm)
   COM_Release(pset)
   COM_Release(psvc)
   Return   sResult
}

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

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(pdisp, sName, arg0="vT_NoNe",arg1="vT_NoNe",arg2="vT_NoNe",arg3="vT_NoNe",arg4="vT_NoNe",arg5="vT_NoNe",arg6="vT_NoNe",arg7="vT_NoNe",arg8="vT_NoNe",arg9="vT_NoNe")
{
   sParams   := 0123456789
   Loop,   Parse,   sParams
      If   (arg%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   arg%A_LoopField% Is Not Integer
               NumPut(8,varg,(nParams-A_Index)*16,"Ushort"), NumPut(COM_SysAllocString(arg%A_LoopField%),varg,(nParams-A_Index)*16+8)
      Else   NumPut(SubStr(arg%A_LoopField%,1,1)="+" ? 9 : 3,varg,(nParams-A_Index)*16,"Ushort"), NumPut(arg%A_LoopField%,varg,(nParams-A_Index)*16+8)
   If   (nFlags:=SubStr(sName,0)<>"=" ? 3 : 12)=12
      sName:=SubStr(sName,1,-1), NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4)+4)
   If   (hr:=DllCall(NumGet(NumGet(1*pdisp)+20),"Uint",pdisp,"Uint",&varResult+16,"UintP",COM_Unicode4Ansi(wName,sName),"Uint",1,"Uint",LCID,"intP",dispID,"Uint"))=0&&(hr:=DllCall(NumGet(NumGet(1*pdisp)+24),"Uint",pdisp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nFlags,"Uint",NumPut(nParams,NumPut(&varg,DispParams)+4)-12,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))<>0&&nFlags=3&&(lr:=DllCall(NumGet(NumGet(1*pdisp)+24),"Uint",pdisp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nFlags:=12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4)+4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
      hr:=0
   Loop, %   nParams
      NumGet(varg,(A_Index-1)*16,"Ushort")=8 ? COM_SysFreeString(NumGet(varg,(A_Index-1)*16+8)) : ""
   Global   COM_VT
   Return   hr=0 ? nFlags=3 ? (COM_VT:=NumGet(varResult,0,"Ushort"))=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) : 0 : COM_Error(hr,lr,&ExcepInfo,sName)
}

COM_Invoke_(pdisp, sName, type0="",arg0="",type1="",arg1="",type2="",arg2="",type3="",arg3="",type4="",arg4="",type5="",arg5="",type6="",arg6="",type7="",arg7="",type8="",arg8="",type9="",arg9="")
{
   sParams   := 0123456789
   Loop,   Parse,   sParams
      If   (type%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(type%A_LoopField%,varg,(nParams-A_Index)*16,"Ushort"), type%A_LoopField%&0x4000=0 ? NumPut(type%A_LoopField%=8 ? COM_SysAllocString(arg%A_LoopField%) : arg%A_LoopField%,varg,(nParams-A_Index)*16+8,type%A_LoopField%=5||type%A_LoopField%=7 ? "double" : type%A_LoopField%=4 ? "float" : "int64") : type%A_LoopField%=0x400C||type%A_LoopField%=0x400E ? NumPut(arg%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(type%A_LoopField%=0x4008 ? COM_SysAllocString(arg%A_LoopField%) : arg%A_LoopField%,_ref_%A_LoopField%,0,type%A_LoopField%=0x4005||type%A_LoopField%=0x4007 ? "double" : type%A_LoopField%=0x4004 ? "float" : "int64")
   If   (nFlags:=SubStr(sName,0)<>"=" ? 3 : 12)=12
      sName:=SubStr(sName,1,-1), NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4)+4)
   If   (hr:=DllCall(NumGet(NumGet(1*pdisp)+20),"Uint",pdisp,"Uint",&varResult+16,"UintP",COM_Unicode4Ansi(wName,sName),"Uint",1,"Uint",LCID,"intP",dispID,"Uint"))=0&&(hr:=DllCall(NumGet(NumGet(1*pdisp)+24),"Uint",pdisp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nFlags,"Uint",NumPut(nParams,NumPut(&varg,DispParams)+4)-12,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))<>0&&nFlags=3&&(lr:=DllCall(NumGet(NumGet(1*pdisp)+24),"Uint",pdisp,"int",dispID,"Uint",&varResult+16,"Uint",LCID,"Ushort",nFlags:=12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4)+4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
      hr:=0
   Loop,   Parse,   sParams
      type%A_LoopField%&0x4000=0 ? (type%A_LoopField%=8 ? COM_SysFreeString(NumGet(varg,(nParams-A_Index)*16+8)) : "") : type%A_LoopField%=0x400C||type%A_LoopField%=0x400E ? "" : type%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,type%A_LoopField%=0x4005||type%A_LoopField%=0x4007 ? "double" : type%A_LoopField%=0x4004 ? "float" : "int64"))
   Global   COM_VT
   Return   hr=0 ? nFlags=3 ? (COM_VT:=NumGet(varResult,0,"Ushort"))=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) : 0 : COM_Error(hr,lr,&ExcepInfo,sName)
}

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), hResult ? "" : COM_DisconnectObject(this)
   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_Error(hr = "", lr = "", pExcepInfo = "", sName = "")
{
   Static   bDebug:=1
   If Not   (sName="" ? 0*bDebug:=hr : bDebug)
   Return
   hr ? (VarSetCapacity(sError,1023),VarSetCapacity(nError,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",hr<>0x80020009 ? hr : (bExcep:=1)*(hr:=NumGet(pExcepInfo+28)) ? hr : hr:=NumGet(pExcepInfo+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 one!`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""" . sName . """`nERROR:`t" . sError . "`t(" . nError . ")" . (bExcep ? SubStr(NumGet(pExcepInfo+24) ? DllCall(NumGet(pExcepInfo+24),"Uint",pExcepInfo) : "",1,0) . "`nPROG:`t" . COM_Ansi4Unicode(NumGet(pExcepInfo+4)) . COM_SysFreeString(NumGet(pExcepInfo+4)) . "`nDESC:`t" . COM_Ansi4Unicode(NumGet(pExcepInfo+8)) . COM_SysFreeString(NumGet(pExcepInfo+8)) . "`nHELP:`t" . COM_Ansi4Unicode(NumGet(pExcepInfo+12)) . COM_SysFreeString(NumGet(pExcepInfo+12)) . "," . NumGet(pExcepInfo+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)), COM_Release(NumGet(psink+16)), COM_Release(NumGet(psink+8)), COM_CoTaskMemFree(psink)
}

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 = "", bExec = False, 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) : ""
   ret  :=   COM_Invoke(psc, bExec ? "ExecuteStatement" : "Eval", sCode)
   COM_Release(psc)
   COM_Term()
   Return   ret
}


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 29th, 2008, 1:15 pm 
Offline

Joined: November 2nd, 2004, 2:43 pm
Posts: 1019
Location: London, UK
how about this slightly shorter code.

Code:
Varsetcapacity(lpdwFlags,4)
Msgbox % Dllcall("Sensapi.dll\IsNetworkAlive","UintP",lpdwFlags) "-" lpdwFlags
; or
If Dllcall("Sensapi.dll\IsNetworkAlive","UintP",lpdwFlags){
; connected
}


or

Not sure how well this will work if a cable is plugged in and no IP is assigned.

MSDN wrote:
This function can be used by an application to determine whether or not there is network connectivity before proceeding with network operations. A directory service type of application, e-mail client, or Internet browser can adapt to various types of network connectivity. For example, a printing operation can be deferred until a network connection is available.

It may not always be practical for an application to call IsNetworkAlive to determine whether or not a local system is disconnected from a LAN, because IsNetworkAlive can be slow, and it may take too much time for the function to detect that a local system is disconnected. However, IsNetworkAlive can always identify a WAN connectivity at the moment.

_________________
Steve F AKA Superfraggle

http://r.yuwie.com/superfraggle


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 29th, 2008, 2:05 pm 
Offline

Joined: July 14th, 2006, 12:31 am
Posts: 290
Location: Berlin
hello Superfraggle, i forgot to name the fact that i want to have this information specifically for every installed network adapter cause i want to automatically disable all network adapters where no network cable is plugged. my code works this way. your code works as global indicator and is surely helpful for other things. i have a fixed ip and it returns 1 with plugged cable and 0 with unplugged cable. i havent tested on a pc with two network cards (one plugged, one unplugged), but i think it would also be 1 in that case. thank you for your help :-)


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: BrandonHotkey, Cerberus, patgenn123, SKAN, Yahoo [Bot] and 15 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group