[PHP/DELPHI] functie probleem

Pagina: 1
Acties:

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Topicstarter
Hoi,

Ik heb in delphi een commandline utillity gemaakt met een plugin interface. Wat je dan doet is het programma laden met
code:
1
host module.dll

Dit werkt als een trein :)

Ik wilde echter die output van de console gebruiken in m'n script met behulp van de , system(), functie in php. Hier loopt het fout. De module.dll roept een FindWindow functie aan om te controleren of winamp actief is. Op de normale commandline werkt het perfect. Als winamp uit staat meldt ie dat perfect en andersom. Roep ik het in een php script aan dan wordt de output 'Winamp is not active'; ookal is ie dat wel. Ik heb het ook nog geprobeerd met , exec(), en shell_exec, maar ik krijg hetzelfde resultaat:(

Ik draai windows XP met apache 1.3.24

Ik snap eigenlijk niet waar het probleem nu zit... ik denk bij php. Is het zo dat php een eigen user/sessie heeft draaien en mijn programma onder die user wordt uitgevoerd en dus aangeeft dat winamp niet aanwezig is omdat het niet "gezien" wordt onder die user...?

Help :P

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Inderdaad. Apache draait in een andere sessie (en user) en dus kan je niet de forms zien die jij als ingelogde gebruiker open hebt staan. Bij XP is dit nog veel moeilijker omdat je ook meerdere 'desktop' gebruikers tegelijk kan hebben.

Je kan WinAMP of elk ander programma niet op die manier benaderen vanaf een webserver.

Probeer het eens mbv Inter Process Communication. Bijvoorbeeld tcp/ip, pipes of mailslots tussen jouw dll (die als een subprocess bij apache wordt ingeladen) en een programmatje dat jij als ingeloggde user draait die op zijn beurt weer winamp bestuurd.

Als je je MP3s van afstand af wilt laten selecteren om ze later via winamp af te spelen zou je ook gebruik kunnen maken van een database om de gekozen nummers in op te slaan.

Verder zijn er ook mogelijkheden voor Delphi om MP3's af te spelen zonder hulp van winAMP

We adore chaos because we like to restore order - M.C. Escher


  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Topicstarter
Wat het programma doet is enkel een dll laden met een functie die systeeminformatie weergeeft. Een daarvan is een winamp.dll die informatie geeft over wat er op een moment gespeeld wordt.

Het aansturen was ik misschien later van plan (via een win-cgi heeft het wel eens gewerkt (onder win98); Die cgi gebruikte ook gewoon een FindWindow aanroep en dit werkte weer wel.

MP3 afspelen was ik niet van plan. Enkel een soort van sysinfo, dat heel makkelijk aan te passen is door nieuwe versies van modules of extra functionaliteit toe te voegen.

Ik heb gekeken naar IPC (inter process communication), maar ik kon daar eigenlijk alleen dingen vinden over het schrijven en lezen van shared geheugen. Is het niet gewoon mogelijk om apache onder dezelfde user als ik te draaien (administrator). Moet php misschien als cgi-module draaien?

Voorlopig los ik het wel op met een winampplugin die een serversocket bevat en daar de informatie naar toe schrijft, maar een erg nette oplossing vind ik het niet.

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Topicstarter
Ik heb het probleem nu opgelost door de serviceinstellingen te wijzigen :)

- Allow Service to Interact with Desktop aanzetten

De eerste keer werkte het niet... later opeens wel
Vreemd; maar het werkt nu :7 :+

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Bij een service kan je aangeven onder welke user rechten hij moet starten. Dat betekend overgens niet dat het dezelfde sessie wordt.

Zoals jij hebt getest zou het wel kunnen werken, maar het is niet erg betrouwbaar denk ik persoonlijk. Maar als dit het doet voor jouw maakt het niet uit natuurlijk :)

IPC kan alles zijn, als je maar gegevens van het ene process naar het andere krijgt. Shared Memory is een beetje teveel van het goede in dit geval :)

Een CGI of Module wordt opgestart door Apache en draait dus onder die sessie.

We adore chaos because we like to restore order - M.C. Escher


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 00:34

Delphi32

Heading for the gates of Eden

Op donderdag 04 juli 2002 15:50 schreef WOmBaT het volgende:
Ik heb het probleem nu opgelost door de serviceinstellingen te wijzigen :)

- Allow Service to Interact with Desktop aanzetten

De eerste keer werkte het niet... later opeens wel
Vreemd; maar het werkt nu :7 :+
Mwa, dat is nou niet een instelling waar ik vrolijk van zou worden. Mocht jouw progsel crashen dan ligt je desktop open voor de wereld, als ik het wat mag overdrijven. Ik zou hier nog eens zéér goed over nadenken!
Pagina: 1