PDA

View Full Version : richiamo a un programma esterno in c


Miky Mouse
23-07-2005, 19:47
ciao a tutti...
mi servirebbe di far aprire un programma (un browser) al mio programma in c.... che comando posso usare?

grazie a tutti, e scusate per la domanda stupida ma sono alle prime armi :p

Fenomeno85
24-07-2005, 20:07
ma potresti usare semplicemente system

~§~ Sempre E Solo Lei ~§~

Miky Mouse
25-07-2005, 09:40
ma potresti usare semplicemente system

~§~ Sempre E Solo Lei ~§~

mi potresti spiegare meglio?

Fenomeno85
25-07-2005, 10:53
mi potresti spiegare meglio?

metti che per esempio vuoi lanciare dir nella cartella dove si trova il programma

syestem ("dir");


~§~ Sempre E Solo Lei ~§~

DanieleC88
25-07-2005, 11:25
E tu saresti un Fenomeno? :asd:
LOL :D

Dai, se devo venire io, Linuxiano, ad insegnarti le API Win32... usa ShellExecute, così puoi anche fare aprire il browser standard, senza dover passare tutto il percorso, che può variare da sistema a sistema.

Fenomeno85
25-07-2005, 12:22
E tu saresti un Fenomeno? :asd:
LOL :D

Dai, se devo venire io, Linuxiano, ad insegnarti le API Win32... usa ShellExecute, così puoi anche fare aprire il browser standard, senza dover passare tutto il percorso, che può variare da sistema a sistema.

si ma il mio dovrebbe funzionare anche sotto linux o sbaglio?? :D

~§~ Sempre E Solo Lei ~§~

Miky Mouse
25-07-2005, 12:40
dovrei aver risolto con winexec... però non ho capito stà storia del system, può lanciare anmche gli eseguibili o solo i comandi??

Fenomeno85
25-07-2005, 12:41
dovrei aver risolto con winexec... però non ho capito stà storia del system, può lanciare anmche gli eseguibili o solo i comandi??

lancia tutto

~§~ Sempre E Solo Lei ~§~

DanieleC88
25-07-2005, 12:45
E vabbe', ma è poco professionale! :Prrr:

Fenomeno85
25-07-2005, 12:49
E vabbe', ma è poco professionale! :Prrr:

eh eh eh :D

~§~ Sempre E Solo Lei ~§~

Miky Mouse
25-07-2005, 13:43
e se voglio lanciare un programma che non si trova nella stessa cartella del programma? gli indico il percorso tra virgolette o senza? tutto questo perche adesso non sono a casa... altrimenti farei qualche prova... ma appena torno... :sofico:

grazie a tutti cmq ;) :p

Fenomeno85
25-07-2005, 14:13
e se voglio lanciare un programma che non si trova nella stessa cartella del programma? gli indico il percorso tra virgolette o senza? tutto questo perche adesso non sono a casa... altrimenti farei qualche prova... ma appena torno... :sofico:

grazie a tutti cmq ;) :p

esatto esempio vuoi lanciare firefox:

system ("c:\\programmi\\mozilla\\firefox.exe");


~§~ Sempre E Solo Lei ~§~

Ziosilvio
25-07-2005, 14:55
La funzione di libreria standard system va benissimo se stai scrivendo un'applicazione da console, perché restituisce il valore d'uscita alla shell.
In un'applicazione interamente a finestre, forse c'è qualcosa di più adatto (ShellExecute?), ma non ne so nulla.

La sintassi è semplicissima: system(cmd) sospende l'esecuzione del programma e passa alla shell la stringa cmd, che la esegue in un altro processo (sotto Linux, questo viene ottenuto mediante una fork); quando cmd termina, l'esecuzione ritorna al programma originario e system restituisce il valore restituito da cmd.
Per il parametro cmd vale la solita sintassi delle stringhe in C: quindi:
system("dir")
ma:
system("C:\\Programmi\\GLQuake\\glquake.exe");
e soprattutto:
system("\"C:\\Programmi\\Mozilla Firefox\\firefox.exe\"");

Miky Mouse
25-07-2005, 14:59
ok perfetto funge tutto ;)

domanda da perfetto novellino.... come si chiama il delay in c??? o se è proprio delay qual'è la sintassi? ma esiste da qualche parte un sito con il listato di tutti i comandi (non mi viene il termine) del c?? ogni vota è un ammazzata trovare quelli giusto :cry:

Ziosilvio
25-07-2005, 15:39
come si chiama il delay in c?
Una funzione di ritardo "standard", se ricordo bene, non esiste.
esiste da qualche parte un sito con il listato di tutti i comandi (non mi viene il termine) del c?
Un elenco di tutte le funzioni definite nella libreria standard del linguaggio C si trova nell'Appendice B del Kernighan&Ritchie --- che, se ancora non possiedi, dovresti correre a comprare (soprattutto ora che è uscita la ristampa Pearson con una nuova traduzione e una nuova impaginazione).

Fenomeno85
25-07-2005, 16:23
si chiama Sleep (time) (win) e sleep(time) (unix)

~§~ Sempre E Solo Lei ~§~

Fenomeno85
25-07-2005, 16:25
Una funzione di ritardo "standard", se ricordo bene, non esiste.

Un elenco di tutte le funzioni definite nella libreria standard del linguaggio C si trova nell'Appendice B del Kernighan&Ritchie --- che, se ancora non possiedi, dovresti correre a comprare (soprattutto ora che è uscita la ristampa Pearson con una nuova traduzione e una nuova impaginazione).

guarda che basta cercare in interdet e si ha tutto ...

http://www.cplusplus.com/ref/indexr.html

e msdn è imho migliore dei libri per sapere delle funzioni

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
25-07-2005, 16:36
si chiama Sleep (time) (win) e sleep(time) (unix)

~§~ Sempre E Solo Lei ~§~

è in time.h?

Fenomeno85
25-07-2005, 17:07
è in time.h?

windows.h

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
25-07-2005, 17:08
windows.h

~§~ Sempre E Solo Lei ~§~

su windows però.

Fenomeno85
25-07-2005, 17:09
su windows però.

si scusa ... su linux dovrebbe essere time.h

aspetta che verifico subito

~§~ Sempre E Solo Lei ~§~

Fenomeno85
25-07-2005, 17:31
scusa ma ho dovuto reinstallare la macchina virtuale :D

cmq si è sotto time.h in linux

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
25-07-2005, 17:33
scusa ma ho dovuto reinstallare la macchina virtuale :D

cmq si è sotto time.h in linux

~§~ Sempre E Solo Lei ~§~

hai fatto tutto questo per me? ma sei davvero un Fenomeno!! :D

:flower:

Grazie :)

Fenomeno85
25-07-2005, 17:49
hai fatto tutto questo per me? ma sei davvero un Fenomeno!! :D

:flower:

Grazie :)

si ma non ti allargare troppo :asd:

~§~ Sempre E Solo Lei ~§~

Miky Mouse
25-07-2005, 20:37
come sempre mitici :sofico:

grazie per l'aiuto

ps il (time) dello sleep è in ms o s o cosa?

Fenomeno85
25-07-2005, 20:40
come sempre mitici :sofico:

grazie per l'aiuto

ps il (time) dello sleep è in ms o s o cosa?

ms se non ricordo male in windows mentre secondi in linux (sicuro)


~§~ Sempre E Solo Lei ~§~

Miky Mouse
25-07-2005, 20:41
ms se non ricordo male in windows mentre secondi in linux (sicuro)


~§~ Sempre E Solo Lei ~§~

sotto windows è sicurametne secondi ;) appena accertato cronometro alla mano

Fenomeno85
25-07-2005, 20:44
sotto windows è sicurametne secondi ;) appena accertato cronometro alla mano

ottimo :O


~§~ Sempre E Solo Lei ~§~

DanieleC88
26-07-2005, 09:25
Veramente, su Linux, sleep() è in unistd.h.
man rulezz!!!

SLEEP(3) Linux Programmer's Manual SLEEP(3)

NAME
sleep - Sleep for the specified number of seconds

SYNOPSIS
#include <unistd.h>

unsigned int sleep(unsigned int seconds);

DESCRIPTION
sleep() makes the current process sleep until seconds seconds have
elapsed or a signal arrives which is not ignored.

RETURN VALUE
Zero if the requested time has elapsed, or the number of seconds left
to sleep.

CONFORMING TO
POSIX.1

BUGS
sleep() may be implemented using SIGALRM; mixing calls to alarm() and
sleep() is a bad idea.

Using longjmp() from a signal handler or modifying the handling of
SIGALRM while sleeping will cause undefined results.

SEE ALSO
alarm(2), signal(2)

GNU 1993-04-07 SLEEP(3)

Fenomeno85
26-07-2005, 09:27
includendo time funziona che azzo ti devo dire :D

~§~ Sempre E Solo Lei ~§~

Ziosilvio
26-07-2005, 10:03
guarda che basta cercare in interdet e si ha tutto
Ho detto che non esiste una funzione sleep standard, non che non esiste una funzione sleep.
E il fatto che sotto Windows sia dichiarata in windows.h e il suo argomento sia in millisecondi, mentre sotto Linux sia dichiarata in unistd.h e il suo argomento sia in secondi, non fa che confermare la mia affermazione.
http://www.cplusplus.com/ref/indexr.html
Che parla delle funzioni definite nell'header standard time.h -- nel quale, guarda caso, la funzione sleep non esiste.

Fenomeno85
26-07-2005, 10:16
Ho detto che non esiste una funzione sleep standard, non che non esiste una funzione sleep.
E il fatto che sotto Windows sia dichiarata in windows.h e il suo argomento sia in millisecondi, mentre sotto Linux sia dichiarata in unistd.h e il suo argomento sia in secondi, non fa che confermare la mia affermazione.

Che parla delle funzioni definite nell'header standard time.h -- nel quale, guarda caso, la funzione sleep non esiste.

senti io avevo solo include stdio.h e time.h e funzionava di + non so che dirti :O

~§~ Sempre E Solo Lei ~§~