/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Få resultat af eksternt VB-programkald ind~
Fra : Henrik Olsen


Dato : 01-10-03 12:14

Jeg har et Visual Basic program, som jeg kalder fra PHP. Nu har jeg brug for
at kunne få et resultat tilbage fra VB-kaldet, men ved ikke hvordan.

Jeg ved at jeg kan køre programmet med f.eks. exec, ``-syntaks o.l., men jeg
ved ikke hvordan jeg får VB-programmet til at returnere et resultat til PHP
(eller bare til kommandolinjen det blev kaldt fra).

Jeg forstår af nogle, at problemet ligger i, at VB-programmet i bund og
grund er et Windows-program med sin egen tråd, som - når først det er
kaldt/startet - intet har at gøre med den kaldende kommandolinje, og derfor
ikke kan returnere et resultat dertil. Hvad gør jeg så?

Konkret har jeg en lille applikation i VB, som kan styre WinAmp ved simple
kommandolinjekald, f.eks. "wc.exe ply" for at starte afspilning. Nu skal
applikationen udvides, så jeg ikke kun skal starte kommandoer i WinAmp, men
også kunne returnere parametre, som er udtrukket fra WinAmp af
VB-programmet.

Kan det slet ikke lade sig gøre med VB?

Kom endeligt med svar, løsning, alternativer eller kommentarer til
problemstillingen.

Venlig hilsen
Henrik Olsen

PS. Jeg anvender Visual Basic 6.0 fra Visual Studio, og har næsten ingen
erfaring med det, men en del med PHP gennem flere år.



 
 
Nezar Nielsen (01-10-2003)
Kommentar
Fra : Nezar Nielsen


Dato : 01-10-03 12:57

Henrik Olsen wrote:

> Konkret har jeg en lille applikation i VB, som kan styre WinAmp ved simple
> kommandolinjekald, f.eks. "wc.exe ply" for at starte afspilning. Nu skal
> applikationen udvides, så jeg ikke kun skal starte kommandoer i WinAmp, men
> også kunne returnere parametre, som er udtrukket fra WinAmp af
> VB-programmet.
>

string exec ( string command [, array output [, int return_var]])
....
If the output argument is present, then the specified array will be
filled with every line of output from the command. Line endings, such as
\n, are not included in this array. Note that if the array already
contains some elements, exec() will append to the end of the array. If
you do not want the function to append elements, call unset() on the
array before passing it to exec().

If the return_var argument is present along with the array argument,
then the return status of the executed command will be written to this
variable.

Dvs. hvis du i dit program laver output via STDOUT kan du fange dem op
med andet argument til exec... hvis dit program returnerer en eller
anden exitcode kan du fange den med tredje argument...

--
Mvh. Nezar Nielsen
http://fez.dk


Henrik Olsen (01-10-2003)
Kommentar
Fra : Henrik Olsen


Dato : 01-10-03 19:20

"Nezar Nielsen" <tumpen@fez.dk> wrote in message
news:blefdn$bbuv0$1@ID-179598.news.uni-berlin.de...

<klip>

> Dvs. hvis du i dit program laver output via STDOUT kan du fange dem op
> med andet argument til exec... hvis dit program returnerer en eller
> anden exitcode kan du fange den med tredje argument...

Ja tak. Jeg ved bare ikke hvordan jeg får mit VB-program til at skrive til
STDOUT, da det tilsyneladende ikke er muligt, da det kører i sin egen tråd.
Korrekt?



Nezar Nielsen (02-10-2003)
Kommentar
Fra : Nezar Nielsen


Dato : 02-10-03 10:33

Henrik Olsen wrote:
>>Dvs. hvis du i dit program laver output via STDOUT kan du fange dem op
>>med andet argument til exec... hvis dit program returnerer en eller
>>anden exitcode kan du fange den med tredje argument...
>
>
> Ja tak. Jeg ved bare ikke hvordan jeg får mit VB-program til at skrive til
> STDOUT, da det tilsyneladende ikke er muligt, da det kører i sin egen tråd.
> Korrekt?

Selvfølgelig kan man skrive til STDOUT (det er jo ikke kalderen(php)'s
STDOUT du skal skrive til, blot programmets egen)... det kan de sikkert
svare på hvordan man gør i VB-gruppen, FUT dertil.

--
Mvh. Nezar Nielsen
http://fez.dk


Tomas Christiansen (02-10-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 02-10-03 21:23

Nezar Nielsen skrev:
> Selvfølgelig kan man skrive til STDOUT (det er jo ikke kalderen(php)'s
> STDOUT du skal skrive til, blot programmets egen)... det kan de sikkert
> svare på hvordan man gør i VB-gruppen, FUT dertil.

Jeg nu ved ikke hvor selvfølgeligt det er.

Almindelige 32bit Windows har ikke defineret en stdin og stdout, men det har
såkaldte "console" programmer derimod.
Problemet er blot at MS ikke mente at det var noget som man havde brug for i
VB, så man kan ikke (IKKE, _ikke_) lave console-programmer i VB.

MEN nu er er jo heldigvis folk som ikke tror at 'Gates kommer næst efter
Gud, så de har lavet en DLL som muliggør det umulige, og som man kan bruge
til at skrive til stdout og til at læse fra stdin.

Det ser vist endda ud til at der findes flere af slagsen.
Èn af dem (som jeg dog ikke selv har afprøvet) ligger på siden:

http://home.tiscali.be/franky.braem17/
(Klik på "Redirect" under "ATL Controls")

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste