status winamp

Status
Niet open voor verdere reacties.

1107972

Gebruiker
Lid geworden
5 mei 2004
Berichten
186
Hallo, hier ben ik weer met een vraagje. Heb gisteravond thuis wat naar een mogelijk om via excel 2007 VBA mijn muziekspeler te bedienen. Waarom, omdat ik een touchscreen op mijn pc heb waarvoor ik een touch vriendelijke interface voor wil maken. En aangezien mijn kennis niet verder rijkt dat VBA moet ik me hier dus mee behelpen.

Oke, dat was dus de intro op mijn vraag. Nu heb ik gister een handig programma gevonden (http://membres.lycos.fr/clamp/) waarbij je via de commandline winamp mee kan bedien en zelf de status kan opvragen. Het bedienen via excel gaat goed met behulp van de shell-functie. Nu kan je ook de status van winamp (PLAYING;PAUSED;STOPPED;NOT RUNNING) opvragen en die wordt dan ook weergegeven in het DOS venster. Is er ook een mogelijkheid om deze status in excel bekend te krijgen op een dergelijke manier. Deze status mag natuurlijk ook op een andere manier verkregen worden.

Alvast bedankt voor alle hulp en tips
 
Ongeduldig dat ik ben ben ik over een andere boeg de oplossing gaan zoeken en heb het gevoel dat ik de goede richting heb gevonden. Ik heb een batchfile gemaakt die de status exporteert naar een txt bestand en dat werk eigenlijk goed als ik er op klik.

Dit is de code in het batch bestand
Code:
@echo off
"E:\DivX Browser\CLAmp.exe" /STATE > Winamp_Status.txt

Nu heb ik voor het testen even een simpele macro gemaakt:
Code:
"Sub Status()
Dim RetVal As String
    RetVal = Shell("E:\Divx Browser\Winamp_Status.bat", 1)
    Application.Wait (Now + TimeValue("0:00:10"))
    MsgBox ("einde")

End Sub

De tijd heb ik wat langer gezet om zeker te weten dat het batch bestand goed uitgevoerd word. De macro wordt ook doorlopen zonder fouten echter wil het batch nu niet het tekstbestand aanmaken/wijzigen. De verwijzingen naar bestanden zijn goed, het batch bestand werkt ook goed als ik het handmatig start. En als ik het commando Pauze toevoeg aan het batchbestand zie ik ook geen fouten. Iemand nog een idee. Lijkt erop alsof VBA niet het recht heeft om het bestand te wijzigen al zou je dan toch een foutmelding moeten krijgen.
 
Klein gokje, maar probeer eens:

Code:
Sub Status()
    Shell "E:\Divx Browser\Winamp_Status.bat", 1
    Application.Wait (Now + TimeValue("0:00:10"))
    MsgBox "einde"

End Sub
 
Helaas werkt niet, was ook van de dingen die ik al had geprobeerd samen met Run en Call.
 
interessant topic. helaas heb ik er niet zo heel veel verstand van, maar wat me wel opvalt is dat je in het batch bestand Winamp_status.txt gebruikt en in je andere code Winamp_status.bat.
Levert dat geen problemen op met gegevens schrijven? En als dat een bewuste keuze is, dan ben ik wel benieuwd waarom.
 
@ Henk Hoogerburg,

Het shell commando roept het bestand Winamp_status.bat op. Dat bestand voor een bepaalde actie uit in dos en bewaard dan de uitkomst in een tekstbestand, dit is dan het bestand Winamp_Status.txt. Met een andere code kan ik dan bijvoorbeeld weer de inhoud uit het tekstbestand opvragen. Zo wil ik gegevens uit dos beschikbaar krijgen in VBA.
 
Ik ben er gekomen uiteindelijk, al is het wel op een creatieve manier. De fout zat hem in het batch bestand. Omdat de output een relatieve verwijzing is wist VBA waarschijnlijk niet waar hij het resultaat neer moest zetten. Die is opgelost door het bestand bestand als volgt aan te passen:

Code:
"E:\DivX Browser\CLAmp.exe" /STATE > "E:\DivX Browser\Winamp_Status.txt"
Tip: Omsluit bestandlocaties met haakjes, hiermee ontloop je het probleem wat Dos kan hebben met spaties.

Dit batch bestand werkte perfect met onderstaande macro:
Code:
Run Shell("E:\Divx Browser\Winamp_Status.bat", 1)

Echter omdat bijvoorbeeld het bestand wat ik maak op meerdere plekken zou kunnen staan op andere pc's was dit niet helemaal de oplossing. Omdat het batch bestand locatie specifieke parameters bevat. Daar heb ik de volgende macro bedacht, Helaas geeft die mij geen uitkomst.

Code:
Run Shell(Chr(34) & "E:\Divx Browser\CLAmp.exe" & Chr(34) & " /State > " & Chr(34) & "E:\Divx Browser\Winamp_Status.txt" & Chr(34), 1)

Vervolgens heb ik de volgende macro bedacht die wel doet wat ik wel al is het helaas wel wat meer code. Hierin maak ik eerst een batch bestand, laat hem runnen, lees vervolgens de waarden met een nog te schrijven macro en verwijder daarna de aangemaakte bestanden weer. De bestandslocatie zijn nu nog absoluurt maar die kunnen natuurlijk ook dynamisch gemaakt worden met andere macro's. Het CLAmp.exe bestand moet dat wel altijd in dezelfde path staan als het xlsm bestand.

Code:
    Dim Batch As String
    Dim CLAmp As String
    Dim Parameter As String
    Dim Status As String
    Dim Regel1 As String
    Dim Regel2 As String
    
    Batch = "E:\Divx Browser\WAstatus.bat"
    CLAmp = "E:\Divx Browser\CLAmp.exe"
    Parameter = " /State > "
    Status = "E:\Divx Browser\WAstatus.txt"
    Regel1 = "@Echo off"
    Regel2 = Chr(34) & CLAmp & Chr(34) & Parameter & Chr(34) & Status & Chr(34)

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile(Batch, True)
    a.WriteLine (Regel1)
    a.WriteLine (Regel2)
    a.Close
    
    Run Shell(Batch, 1)
    Application.Wait (Now + TimeValue("0:00:02"))
    
    MsgBox ("Lees de waarde uit van het tekst bestand")
    
    Kill (Batch)
    Kill (Status)
 
of
Code:
Sub statusamp()
  open "E:\Divx Browser\WAstatus.bat" for output As #1
    print #1,"echo Off" & vbcr & "E:\Divx Browser\CLAmp.exe /State > E:\Divx Browser\WAstatus.txt" 
  close #1
  shell "E:\Divx Browser\WAstatus.bat"

  application.wait now +TimeValue("0:00:02")

  open "E:\Divx Browser\WAstatus.txt" for input As #1
    c0= input(LOF(1),#1)
  close

  Msgbox c0
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan