Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WINAMP TITEL AUSLESEN (https://www.delphipraxis.net/118676-winamp-titel-auslesen.html)

thunderbird 12. Aug 2008 21:05


WINAMP TITEL AUSLESEN
 
Hallo

Ich habe ein kleines Problemchen mit einer function in Delphi 2006
und zwar will ich den Titel von Winamp per Sendmessage ermitteln

Diese function geht auch in Delphi7 wunderbar nur in Delphi 2006 bekomme ich ein

Pascal Error E2010 Incompatible types 'Integer' and 'Char'

Delphi-Quellcode:

function Winmp:string;unsafe;
const
  cMaxBuffer = 255;
var
  h : HWND;
  buffer: array[0..cMaxBuffer] of PChar;
begin
 if h <> 0 then
  begin
     h := FindWindow('Winamp v1.x',nil);
     SendMessage(h, WM_SETFOCUS, 0, 0);
     Sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer));
  end;
end;
habe schon im Inet rumgegoogelt aber leider ohne erfolg
deshalb dacht ich ich frag mal hier nach ob jemand ne lösung hat
warum das in Delphi 2006 nicht geht und in Delphi 7 schon.

Mfg Thunderbird

Neutral General 12. Aug 2008 21:06

Re: WINAMP TITEL AUSLESEN
 
Hi,

Es muss so heißen:

Delphi-Quellcode:
buffer: array[0..cMaxBuffer] of Char;
und so

Delphi-Quellcode:
Sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer[0])); //Pointer auf das erste Element eines Char-Arrays = PChar
Und
Delphi-Quellcode:
SendMessage(h, WM_SETFOCUS, 0, 0);
brauchst du nicht.

Gruß
Neutral General

thunderbird 12. Aug 2008 21:12

Re: WINAMP TITEL AUSLESEN
 
danke für die schnelle antwort

werde es ausprobieren :-D :-D

thunderbird 16. Aug 2008 14:11

Re: WINAMP TITEL AUSLESEN
 
So Hallo


Delphi-Quellcode:
function Winmp:string;unsafe;
const
  cMaxBuffer = 255;
var
  h : HWND;
  such:string;
  buffer: array[0..cMaxBuffer] of Char;
begin
 if h <> 0 then
  begin
     h := FindWindow('Winamp v1.x',nil);
     sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer[0]));
  end;
end;
Ich habe das jetzt mal ausprobiert nur ohne Erfolg. :(

Jetzt bekomme ich ein E2089 'Invalid Typecast' Error <--- Ungültige Typumwandlung

Verstehe das net das wäre aber so richtig gewessen .

Vieleicht hat ja noch jemand eine Idee ???


Mfg Thunderbird

Neutral General 16. Aug 2008 15:27

Re: WINAMP TITEL AUSLESEN
 
Hi,

Ich weiß nicht was du gemacht hast aber so funktionierts:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  cMaxBuffer = 255;
var
  h : HWND;
  such:string;
  buffer: array[0..cMaxBuffer] of Char;
begin
if h <> 0 then
  begin
     h := FindWindow('Winamp v1.x',nil);
     sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer[0]));
     Caption := buffer;
  end;
end;
Ach ja: Deine Funktion ist eh total seltsam o.O. Was soll das "unsafe" und warum setzt du nirgendwo Result? :gruebel:

Edit: Was mir grad auffällt. Die Funktion ist totaler Schwachsinn o.O

Delphi-Quellcode:
function Winmp:string;unsafe; // unsafe???
const
  cMaxBuffer = 255;
var
  h : HWND;
  such:string; // ?
  buffer: array[0..cMaxBuffer] of Char;
begin
if h <> 0 then // Absolut sinnfreie Abfrage an dieser Stelle...
  begin
     h := FindWindow('Winamp v1.x',nil);
     // ... die gehört eher hierhin!
     sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer[0]));
     // Result := Buffer; ???
  end;
end;
:wall:

thunderbird 16. Aug 2008 16:53

Re: WINAMP TITEL AUSLESEN
 
Ich wills nochmal bischen genauer beschreiben

Wenn du diese Function in Delphi 2006 und ---->>>><New->Vcl-Form-Appliaction for Delphi Net <<<<<<----

wenn du sie dort einträgst oda ausprobierst wirste ganz bestimmt eine error Meldung bekommen

Ich weiss das das Result := fehlt aber musste schnell gehn beim Kopieren

Das mit dem Unsafe muss ich davor setzten weil sonst Delphi beim Compilieren Rum meckert
Ich schreibe sonst immer Delphi 7 Tools nur ist Delphi 7 nicht mit Vista Kompatibel und musste das jetzt
in Delphi Net umsetzten.

Mfg Thundi

taaktaak 16. Aug 2008 17:06

Re: WINAMP TITEL AUSLESEN
 
Zitat:

aber musste schnell gehn beim Kopieren
Wieso musste das ganz schnell gehen?
Ein bisschen mehr Sorgfalt im Code und Text ist doch wohl angebracht, oder? :wink:

juergen 17. Aug 2008 13:39

Re: WINAMP TITEL AUSLESEN
 
Hallo zusammen,

ich mach mir noch eine Frage, oder so ähnlich :mrgreen: :
Zitat:

h := FindWindow('Winamp v1.x',nil);
Ich verstehe das mit 'Winamp v1.x' nicht richtig, insbesondere auch deswegen, weil ich nicht Winamp nutze sondern AIMP.
Mit z.B. WinSpy finde ich bei AIMP kein Fenster in Form von 'Winamp v1.x'
Trotzdem funktioniert es... :gruebel:

//Edit: Control geändert in Fenster (siehe Thread #11)

Apollonius 17. Aug 2008 14:37

Re: WINAMP TITEL AUSLESEN
 
Warum steht im Beitragskopf Win32, wenn du in Wirklichkeit .NET verwendest?

omata 17. Aug 2008 14:40

Re: WINAMP TITEL AUSLESEN
 
Zitat:

Zitat von thunderbird
...nur ist Delphi 7 nicht mit Vista Kompatibel

klick


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 2  1 2      

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