Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Napster aktuellen Track auslesen (https://www.delphipraxis.net/132341-napster-aktuellen-track-auslesen.html)

Meflin 10. Apr 2009 13:45

Re: Napster aktuellen Track auslesen
 
Is auch keien gute Idee, da eine Funktion keine Seiteneffekte haben sollte.

Wenn du das Handle im Programm anzeigen willst, dann mach das mit dem Wert, den dir der Funktionsaufruf zurückgibt, und nicht in der Funktion ;)

dutyfree 10. Apr 2009 13:51

Re: Napster aktuellen Track auslesen
 
Da haben wir ja das Problem ;)
Ich rufe die Function gar nicht auf, ich hab irgendwie nur den Code reinkopiert und die startet bei jedem Programmstart automatisch, deswegen musste ich die nicht aufrufen, weiss gar nicht wies geht, mich irritieren diese "HWND"'s.. :cry:
kannst du mir bitte ein beispiel aufruf für die function FindWindowEx2 mit Rückgabe der Handle machen? http://www.frank-und-tina-in-paris.d...ilie_danke.gif

DeddyH 10. Apr 2009 14:00

Re: Napster aktuellen Track auslesen
 
Du musst den ganzen Code doch nur noch richtig zusammensetzen.
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  Dec(ChildNr);
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Break;
    Result := hChild;
  end;
end;


function GetWinText(aHandle: HWND): string;
var
  iBuffLen : Integer;
  pBuffer : PChar;
begin
  iBuffLen := SendMessage(aHandle, WM_GETTEXTLENGTH, 0, 0);
  if iBuffLen > 0 then begin
    Inc(iBuffLen);
    GetMem(pBuffer, iBuffLen);
    try
      SendMessage(aHandle, WM_GETTEXT, iBuffLen, LPARAM(pBuffer));
      Result := pBuffer;
    finally
      FreeMem(pBuffer);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('PPAppFrameClass','Napster');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0, 'CUISplitterWindow', nil);
    wndChild := FindWindowEx(wndChild, 0, '#32770', nil);
    wndChild := FindWindowEx(wndChild, 0, 'CUIHorSplitterWindow', nil);
    wndChild := FindWindowEx(wndChild, 0, '#32770', nil);
    wndChild := FindWindowEx2(wndChild,'Static', 6);
    if wndChild <> 0 then
    begin
      ShowMessage(GetWinText(wndChild));
    end;
  end;
end;

dutyfree 10. Apr 2009 14:32

Re: Napster aktuellen Track auslesen
 
Vielen Dank! Eigentlich wäre jetzt alles geklärt, aber ich habe rausgefunden, dass wenn der auszulesende Namen irgendwelche Sonderzeichen hat, in meinem Falle war dies ein Fragezeichen oder so ein ' dann stürz das Programm ab.. Irgendeine Möglichkeit das zu umgehen?

dutyfree 10. Apr 2009 15:12

Re: Napster aktuellen Track auslesen
 
Irgendwie ist da was krank..
Spiele ich z.B. Pokerface von Lady Gaga ab klappt alles perfekt, hab den Interpret und Titel in meinem Proggi stehen, spiele ich danach Wrong von Depeche Mode kommt sofort eine Exception. Paar mal mit den beiden Liedern getestet, immer das gleiche. Beide haben kein einziges Sonderzeichen drin.
Just Dance von Lady Gaga geht au, aber Schwarz Zu Blau von Peter Fox wiederum nicht.. was ist da los?

mkinzler 10. Apr 2009 15:17

Re: Napster aktuellen Track auslesen
 
Was für eine Exception?

dutyfree 10. Apr 2009 16:16

Re: Napster aktuellen Track auslesen
 
Liste der Anhänge anzeigen (Anzahl: 4)
Es kommen sehr viele, bei manchen Liedern mehr bei anderen weniger, gerade bei einem beispiel song kamen erstmal so 4 stück irgendwann öffnete sich aber die FForm (hab immer auf fortführen geklickt) dann kammen nochmal so 3 oder 4 die konnte ich dann an die Seite ziehen und unten den Fehlermeldungen stand schön der Titelname, es funktioniert also aber irgendetwas ist da noch kaputt.. Hab das Projekt mal angehängt (paar posts unten)

Meflin 10. Apr 2009 16:18

Re: Napster aktuellen Track auslesen
 
Und dein Code sieht jetzt wie aus?

fkerber 10. Apr 2009 16:20

Re: Napster aktuellen Track auslesen
 
Hi!

Bitte hänge die Bilder an den Thread an, statt sie per [img] einzubinden.
Das zerstört dann das Layout nicht und verringert die Ladezeiten enorm.
Außerdem sind wir dann nicht von externen Servern abhängig.


Ciao, Frederic

dutyfree 10. Apr 2009 16:23

Re: Napster aktuellen Track auslesen
 
Ok sorry.. dachte das wäre so vielleicht leichter für euch
ach ja sry, ist ziemlich unsauber geproggt und das mit den buttons war jetzt auch erstmal so ne notlösung, aber das dürfte ja nicht das problem sein, wie gesagt, bei manchen liedern gehts bei anderen nciht obsohls bei den anderen ja auch iwie geht nur, dass dann noch unzählbare Fehlermeldungen dazukommen..


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz