![]() |
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:
habe schon im Inet rumgegoogelt aber leider ohne erfolg 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; 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 |
Re: WINAMP TITEL AUSLESEN
Hi,
Es muss so heißen:
Delphi-Quellcode:
und so
buffer: array[0..cMaxBuffer] of Char;
Delphi-Quellcode:
Und
Sendmessage(h,WM_GETTEXT,cMaxBuffer,integer(@buffer[0])); //Pointer auf das erste Element eines Char-Arrays = PChar
Delphi-Quellcode:
brauchst du nicht.
SendMessage(h, WM_SETFOCUS, 0, 0);
Gruß Neutral General |
Re: WINAMP TITEL AUSLESEN
danke für die schnelle antwort
werde es ausprobieren :-D :-D |
Re: WINAMP TITEL AUSLESEN
So Hallo
Delphi-Quellcode:
Ich habe das jetzt mal ausprobiert nur ohne Erfolg. :(
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; 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 |
Re: WINAMP TITEL AUSLESEN
Hi,
Ich weiß nicht was du gemacht hast aber so funktionierts:
Delphi-Quellcode:
Ach ja: Deine Funktion ist eh total seltsam o.O. Was soll das "unsafe" und warum setzt du nirgendwo Result? :gruebel:
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; Edit: Was mir grad auffällt. Die Funktion ist totaler Schwachsinn o.O
Delphi-Quellcode:
:wall:
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; |
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 |
Re: WINAMP TITEL AUSLESEN
Zitat:
Ein bisschen mehr Sorgfalt im Code und Text ist doch wohl angebracht, oder? :wink: |
Re: WINAMP TITEL AUSLESEN
Hallo zusammen,
ich mach mir noch eine Frage, oder so ähnlich :mrgreen: : Zitat:
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) |
Re: WINAMP TITEL AUSLESEN
Warum steht im Beitragskopf Win32, wenn du in Wirklichkeit .NET verwendest?
|
Re: WINAMP TITEL AUSLESEN
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr. |
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