In C den Standard Browser öffnen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Naja, für den ersten Teil benutze ich ja nun strcpy und für die folgenden Argumente strcat.
    Das funktioniert ja auch alles ganz prima, jedoch funktioniert das Öffnen des Browsers aufgrund eines bestimmten Teils im Code nicht, was jedoch nicht allzuviel Sinn macht, da ein fast identischer Teil (es sind beides if-Teile mit darauffolgenden String-Manipulationen) direkt darunter ist.

    Teil A + Teil B -> Öffnen des Browsers funktioniert nicht
    Teil A -> Öffnen des Browser funktioniert nicht
    Teil B -> Öffnen des Browsers funktioniert
    Weder Teil A noch Teil B -> Öffnen des Browsers funktioniert

    Beide Teile sind abgesehen von dem zweiten strtr-Wert und der char-Namen wie gesagt identisch.

    So funktioniert auch alles wunderbar, nur falls Teil A -> Öffnen des Browser funktioniert nicht.

    Hinsichtlich der "Unregelmäßigkeit" bzw. der Tatsache, wann es funktioniert und wann nicht, recht paradox..
  • Ich sags ungern, aber es gibt Alternativen. Du kannst aus dem HKEY_CLASSES_ROOT das Defaultprogramm für HTML-Dateien auslesen. Wenn du den Pfad hast, kannst du mit WinExec() (deprecated!) oder CreateProcess() benutzen. Aber wie gesagt, die "richtige" Lösung wäre ShellExecute - also in deinem Fall rausfinden warum es nicht immer funktioniert.

    Kleiner Hinweis: Error Code 2 ist "File not Found"

    API-Funktionen die selber reallozieren benötigen dyn. Speicher denn das geht nur wenn der Speicher auf dem Heap liegt und nicht auf dem Stack.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Folgender Code funktioniert mit VS 2005 tadellos:

    Quellcode

    1. #define _CRT_SECURE_NO_DEPRECATE
    2. #include <windows.h>
    3. #include <stdio.h>
    4. #include <string.h>
    5. int main ()
    6. {
    7. char adresse[20];
    8. strcpy(adresse, "http://google.com");
    9. ShellExecute(NULL, "open", adresse, NULL, NULL, SW_SHOW);
    10. printf ("GetLastError () = %d\n", GetLastError ());
    11. return 0;
    12. }
    Alles anzeigen


    Probier den mal bei dir aus....
  • Ersteinmal Danke für den Hinweis, SeBa. Der Grund für den Fehler ist ja jetzt auch bekannt.


    Wie ich schon sagte funktioniert das Öffnen des Browsers an sich nun einwandfrei.
    Dein Code würde ebenfalls einwandfrei funktionieren, phax.


    Hier mal die beiden Teile des Codes, welche ansonsten wie gesagt einwandfrei funktionieren.

    Quellcode

    1. FILE* fp = fopen("info.txt", "r");
    2. if (fp == NULL) return 0;
    3. char buffer[8000];
    4. char * temp;
    5. char u1[100]; char u2[100]; char u3[100]; char u4[100];
    6. char p1[100]; char p2[100]; char p3[100]; char p4[100];
    7. int xu = 1; int xp = 1;
    8. while (!feof(fp))
    9. {
    10. fgets(buffer, 8000, fp);
    11. if (strstr(buffer, "Info 1"))
    12. {
    13. temp = (char*) malloc (strlen(buffer+20));
    14. strcpy (temp, buffer+20);
    15. strcpy (buffer, temp);
    16. free(temp);
    17. if (xu == 1) { strcat(u1, buffer); char *p = strchr( u1, '\n' ); if ( p ) *p = '\0'; xu++; }
    18. else if (xu == 2) { strcat(u2, buffer); char *p = strchr( u2, '\n' ); if ( p ) *p = '\0'; xu++; }
    19. else if (xu == 3) { strcat(u3, buffer); char *p = strchr( u3, '\n' ); if ( p ) *p = '\0'; xu++; }
    20. else if (xu == 4) { strcat(u4, buffer); char *p = strchr( u4, '\n' ); if ( p ) *p = '\0'; xu++; }
    21. }
    22. if (strstr(buffer, "Info 2"))
    23. {
    24. temp = (char*) malloc (strlen(buffer+20));
    25. strcpy (temp, buffer+20);
    26. strcpy (buffer, temp);
    27. free(temp);
    28. if (xp == 1) { strcat(p1, buffer); char *p = strchr( p1, '\n' ); if ( p ) *p = '\0'; xp++; }
    29. else if (xp == 2) { strcat(p2, buffer); char *p = strchr( p2, '\n' ); if ( p ) *p = '\0'; xp++; }
    30. else if (xp == 3) { strcat(p3, buffer); char *p = strchr( p3, '\n' ); if ( p ) *p = '\0'; xp++; }
    31. else if (xp == 4) { strcat(p4, buffer); char *p = strchr( p4, '\n' ); if ( p ) *p = '\0'; xp++; }
    32. }
    33. }
    34. fclose(fp);
    35. char adresse[20];
    36. strcpy(adresse, "http://google.com");
    37. ShellExecute(NULL, "open", adresse, NULL, NULL, SW_SHOW);
    Alles anzeigen


    Die beiden Teile Info 1 und Info 2 sind wie man sieht mehr oder weniger identisch.

    Jedoch funktioniert das Öffnen des Browser nur wenn ich Info 1 weglasse.
    Dadurch, dass es mit Info 2 ja funktioniert, macht es so erstmal nicht wirklich Sinn.
  • Ok, folgendes:

    Wenn ich die Applikation per Doppelklick ausführe, öffnet sich der Browser nicht.
    Wenn ich die Applikation per Compiler, Konsole, WinRAR, ... ausführe, öffnet sich der Browser.


    Edit: Also bei einem Bekannte funktioniert es auch per Mausklick... hm.

    Edit: Ich scheine der einzige zu sein, bei dem es aus irgendeinem Grund nicht per Mausklick funktioniert. Naja soll's halt so sein.