PDA

View Full Version : Indirizzi http e programma in C


Napalm
07-06-2002, 08:28
Salve, vorrei sapere se è posssibile creare un programmino in C contenente dei comandi che gli facciano aprire tramite IE un determinato indirizzo HTTP contenuto nel programma stesso, è possibile?
Thx.

NapalM

cionci
07-06-2002, 10:56
Originariamente inviato da Napalm
[B]Salve, vorrei sapere se è posssibile creare un programmino in C contenente dei comandi che gli facciano aprire tramite IE un determinato indirizzo HTTP contenuto nel programma stesso, è possibile?

Certo...
Basta usare la API ShellExecute :

ShellExecute(puntFinestraPadre, "open", "http://www.iltuosito.com", NULL, NULL, SW_SHOW);

Napalm
07-06-2002, 12:20
Originariamente inviato da cionci
[B]
Certo...
Basta usare la API ShellExecute :

ShellExecute(puntFinestraPadre, "open", "http://www.iltuosito.com", NULL, NULL, SW_SHOW);

Scusa ma la mia ignoranza in materia ( x programmare uso Turbo C):
devo specificare qualche tipo di #include particolare nel prog?

main ()
{
int io;

if ( io == 5)
ShellExecute(puntFinestraPadre, "open", "http://www.iltuosito.com", NULL, NULL, SW_SHOW);

}

funzionerebbe un prog così???
Grazie mille x le info :)

NapalM

cionci
07-06-2002, 12:29
No...in Turbo C non funzionerebbe...

Devi usare un compilatore che genera un eseguibile per windows e devi avere il Win32 SDK che ti fornisce gli include e le varie librerie...

Con Turbo C prova ad usare questo comando :

system("explorer http://www.miosito.com");

system dovrebbe essere in stdlib...comunque controlla nell'help...

okay
07-06-2002, 13:52
che significa
puntFinestraPadre

cionci
07-06-2002, 14:31
Originariamente inviato da okay
[B]che significa
puntFinestraPadre
Puntatore alla finestra padre (HWND)...

Napalm
07-06-2002, 19:37
Ciao cionci prima di tutto grazie mille x l'aito, poi ti vorrei far vedere una cosa:
#include <stdio.h>
#include <stdlib.h>

main ()
{
char string1[16];

printf ("Enter the string");
scanf ("%s", string1);

system("explorer http://www.miosito.com/%s", string1);

}

così non funzia, suppongo che la funzione non sia implementata.
In pratica partendo da un sito "primario" l'utente inserisce come stringa (string1) la pagina di quel sito da visualizzare e lui l'andrà a copiare accanto al sito primario in modo da aprirla.
E' possibile o no farlo??

NapalM

cionci
08-06-2002, 01:54
Originariamente inviato da Napalm
[B]Ciao cionci prima di tutto grazie mille x l'aito, poi ti vorrei far vedere una cosa:
#include <stdio.h>
#include <stdlib.h>

main ()
{
char string1[16];

printf ("Enter the string");
scanf ("%s", string1);

system("explorer http://www.miosito.com/%s", string1);

}

così non funzia, suppongo che la funzione non sia implementata.
In pratica partendo da un sito "primario" l'utente inserisce come stringa (string1) la pagina di quel sito da visualizzare e lui l'andrà a copiare accanto al sito primario in modo da aprirla.
E' possibile o no farlo??

Sì...in altri ambienti non c'è alcun problema a farlo...
Comunque la system non funziona in quel modo...

La system prende una stringa in ingresso...se ci vuoi concatenare un'altra stringa devi usare un altro metodo...ad esempio :

char cmd[1024];
sprint(cmd, "explorer http://www.miosito.com/%s", string1);
system(cmd);

oppure usi strcat...

Rimetti a posto il codice e riprova...

Napalm
08-06-2002, 09:43
#include <stdio.h>
#include <stdlib.h>

main ()
{
char str1[16];
char cmd[1024];

printf ("Stringa 1\n");
scanf ("%s", str1);

sprint(cmd, "explorer http://%s/Forum/index.php?s=", str1);
system(cmd);

}

C'è un piccolo problema, quando faccio compile non mi dà nessun errore mentre quando faccio make EXE files mi dà un errore..questo: Linker error: Undefined symbol '_sprint' in module prova.c
Come mai??

NapalM

ps: non finirò mai di ringraziarti cmq :)

okay
09-06-2002, 22:46
questo in vc6 a me funziona:

ShellExecute( NULL, "open", "http://www.tuosito.it/programmi.html", NULL, NULL, SW_SHOWNORMAL);

cionci
10-06-2002, 16:20
Originariamente inviato da okay
[B]questo in vc6 a me funziona:

ShellExecute( NULL, "open", "http://www.tuosito.it/programmi.html", NULL, NULL, SW_SHOWNORMAL);
Ma lui non può usare le API...

Napalm : è sprintf non sprint...scusa...ho scritto male...

Napalm
10-06-2002, 18:35
Ma figurati Cionci, non hai nulla di cui scusarti mi stai dando una grossa mano.:)
Allora il programma è così:

#include <stdio.h>
#include <stdlib.h>

main ()
{
char str1[16];
char cmd[1024];

printf ("Stringa 1");
scanf ("%s", str1);

sprintf(cmd, "explorer [url]http://%s/Forum/index.php?s=[/url]", str1);
system(cmd);

}


Ora il programma funziona ma se metto l'ip della board di un mio amico (a cui si riferisce /Forum/index.php?s= ) al posto di aprirsi un pagina html mi apre la finestra dell'explorer di windows con i vari hd e cd-rom. Come mai?

NapalM

cionci
11-06-2002, 11:49
Molto strano...forse non riconosce l'indirizzo come indirizzo http valido... Prova a sostituire la parola "explorer" con "iexplore"...

Ciao :)

Napalm
12-06-2002, 09:57
"iexplore" non è riconosciuto come comando interno o esterno, un programma eseguibile o file bat.

Azz...adesso boh....anche stò problema..grgrgrggrg

:)

NapalM

cionci
12-06-2002, 10:42
Allora ci devi mettere il path per raggiungere Internet Explorer...

Napalm
12-06-2002, 11:28
#include <stdio.h>
#include <stdlib.h>

main ()
{
char str1[16];
char cmd[1024];

printf ("Stringa 1");
scanf ("%s", str1);

sprintf(cmd, "C:\Programmi\Internet Explorer\iexplore.exe [url]http://%s/Forum/index.php?s=[/url]", str1);
system(cmd);

}

Scritto così mi dice: "C:ProgrammiInternet" non è riconosciuto come comando interno o esterno, un programma eseguibile o file bat.
Probabilmente non riesce ad interpretare la path xchè nel compile mi dava 3 warning e tutti e 3 dopo la "\".
Ho provato a smanettarci un pò ma sembra non digerirla stà path!

NapalM

cionci
12-06-2002, 11:33
Devi mettere il doppio \ e credo che tu debba usare i nomi corti per le directory...

Ad esempio :

sprintf(cmd, "C:\\Progra~1\\Intern~1\\iexplore.exe http://%s/Forum/index.php?s=", str1);

Napalm
12-06-2002, 11:35
Originariamente inviato da cionci
[B]Devi mettere il doppio \ e credo che tu debba usare i nomi corti per le directory...

Ad esempio :

sprintf(cmd, "C:\Progra~1\Intern~1\iexplore.exe http://%s/Forum/index.php?s=", str1);

Ti dovrebbero fare un monumento cionci..adesso funzia alla grande..... grazie mille....grazie ma grazie tanto davvero.:)

NapalM

cionci
12-06-2002, 11:40
Originariamente inviato da Napalm
[B]Ti dovrebbero fare un monumento cionci..adesso funzia alla grande..... grazie mille....grazie ma grazie tanto davvero.:)

Figurati...è stato un piacere ;)