Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Listeinträge aus anwendung übergeben (https://www.delphipraxis.net/105891-listeintraege-aus-anwendung-uebergeben.html)

EWeiss 1. Jan 2008 17:56


Listeinträge aus anwendung übergeben
 
Hi

ertmal ein frohes neues ;)

Nun zur frage
Wie kann ich Listeinträge an meiner DLL übergeben so das sie vom anderen programm addiert werden können ?

habe da was in c++ gefunden wo man genauer sehen kann wie die Daten ins Menü eingebunden werden

Code:
}
for (i=0; i<cnt; ++i) {
   fileinfo2 fi;
   fi.fileindex = i;
   char buf[60];
   fi.filetitle[0] = 0;
   ::SendMessage(h, WM_WA_IPC, IPC_PE_GETINDEXTITLE, (LPARAM) &fi);
   if (!fi.filetitle[0]) {
      char *p = (char *) ::SendMessage(theApp.m_mod.hMainWindow,WM_WA_IPC,i,IPC_GETPLAYLISTTITLE);
      if (p) strncpy(fi.filetitle, p, 50);
   }
   strcpy(fi.filetitle+40, "...");
   sprintf(buf, "%d. %s", fi.fileindex+1, fi.filetitle);
   mPL->AppendMenu(MF_STRING | ((i && (i%br==0)) ? MF_MENUBARBREAK : 0)
      | ((i==j) ? MF_CHECKED : 0),
      ID_PLAYLIST_ITEM + i, buf);
}
::SendMessage(h, WM_WA_IPC, IPC_PE_SETCLEAN, 0);
bMenuReloaded = false;
Es geht dabei nicht um eine übersetzung sondern wie ich es in meiner DLL interpretieren muss
damit die Rückgabe erfolgreich ist.
Hoffe das ich mich verständlich genug ausgedrückt habe ;)

Im moment habe ich es so gelößt allerdings wird so nur ein Titel übergeben weiss
nicht ob es sinn macht da ein array zu übergeben

Delphi-Quellcode:
      if StreamInfo.Title <> nil then
      begin
        ReturnStr := StreamInfo.Title + chr(0);
      end else
        ReturnStr := 'BassVis - BrewIdeas©EmilWeiss' + chr(0);

      p := @ReturnStr;
      Inc(p, 1);
      Result := longint(p);
bzw.. ob es als array von der anderen anwendung angenommen wird.

gruss Emil

1234588 1. Jan 2008 18:38

Re: Listeinträge aus anwendung übergeben
 
das problem ist, das man nicht einfach so pointer die auf zeichenketten zeigen, uebergeben kann. von programm zu dll geht das wunderbar, aber von programm zu programm funktioniert das nicht ohne weiteres (protected mode).
entweder du machst den speicherbereich der zeichenkette global verfuegbar, oder du arbeitest mit atoms:

GlobalAddAtom()
GlobalGetAtomName()
GlobalDeleteAtom()



das laesst sich auch verkuerzen:
Delphi-Quellcode:
      p := @ReturnStr;
      Inc(p, 1);
indem man gleich die addresse des ersten zeichens benutzt:
Delphi-Quellcode:
      p := @ReturnStr[1];

EWeiss 1. Jan 2008 18:44

Re: Listeinträge aus anwendung übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von 1234588
das problem ist, das man nicht einfach so pointer die auf zeichenketten zeigen, uebergeben kann. von programm zu dll geht das wunderbar, aber von programm zu programm funktioniert das nicht ohne weiteres (protected mode).
entweder du machst den speicherbereich der zeichenkette global verfuegbar, oder du arbeitest mit atoms:

GlobalAddAtom()
GlobalGetAtomName()
GlobalDeleteAtom()



das laesst sich auch verkuerzen:
Delphi-Quellcode:
      p := @ReturnStr;
      Inc(p, 1);
indem man gleich die addresse des ersten zeichens benutzt:
Delphi-Quellcode:
      p := @ReturnStr[1];

Die Reihenfolge ist ..

Von der EXE zur Dll die Playlisteinträge schicken
danach ließt das Winamp Plugin (DLL) die Daten aus der (meiner) DLL ein.

Irgendwie scheint das alles nicht so recht zu funktionieren ...

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.

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