Avatar billede lahnkiller Nybegynder
08. august 2002 - 02:25 Der er 18 kommentarer og
1 løsning

Kør/start en fil

davs...

Jeg sidder og leger med C++ og kan faktisk ikke ret meget, derfor vil jeg gerne havde hjælp til at starte et program vha en lille menu.

Jeg har selv lavet sådan, at hvis man taster 2 lukker programmet ned, og jeg har lavet lidt blinkende tekst, men når jeg taster 1 hvad skal der så stå der???

Her er min kode:


# include "conio.h"
# include "stdio.h"
# include "dos.h"
# include "stdlib.h"
# include "graphics.h"
# include "io.h"
# include "sys\stat.h"
# include "fcntl.h"
# include "share.h"
# include "process.h"

int main(void)

{
int handle;
int status;
char valg;
START:
clrscr();
textbackground(DARKGRAY);
    {
    textcolor(BLINK+RED);
    cprintf("\r\n                    |||TAST");
    textcolor(BLINK+GREEN);
    cprintf(" 2 ");
    textcolor(BLINK+RED);
    cprintf("FOR AT AFSLUTTE|||\n");
    textcolor(WHITE);
    }
cprintf("\rTast 1 for at komme ind paa www.MEGAGAMES.COM :=D");
cprintf("\rDette er bare en test,");
cprintf("\n\rtast venligst en tast for");
cprintf("\n\rat faa en linie mere stukket i hovedet");
valg = getc(stdin);

/*
    if(valg=='3')
    {
    cprintf("Dette er en linie som er til for sjov ;=P");
    delay(1000);
    }
*/
        if(valg=='2')
        {
        exit('0');
        }

            if(valg=='1')
            {

            int handle;
            int status;

            handle = sopen("d:\\te.txt", O_RDONLY, SH_DENYNO, S_IREAD);

            if (!handle)
            {
              printf("sopen failed\n");
              exit(1);
            }

            status = access("d:\\te.txt", 6);
            if (status == 0)
              printf("read/write access allowed\n");
            else
              printf("read/write access not allowed\n");

            close(handle);
            return 0;


            }
goto START;
}
Avatar billede lahnkiller Nybegynder
08. august 2002 - 02:30 #1
når jeg så havde fået programmet til at starte D:\TE.TXT kunne jeg bare udskifte det med "C:\Program Files\Internet Explorer\Iexplore.exe" www.megagames.com eller noget lign...
Avatar billede lahnkiller Nybegynder
08. august 2002 - 02:41 #2
nå, vil i seng, var måske "lidt" optimistisk at regne med et svar på denne tid af døgnet, men jeg vender tilbage så hurtigt som muligt.
Avatar billede chries Nybegynder
08. august 2002 - 08:23 #3
den fortæller, hvis filen IKKE kan åbnes.
derefter fortæller den, om den kan skrive til filen (ie. fil readonly)
Avatar billede lahnkiller Nybegynder
08. august 2002 - 10:36 #4
ja, men kan jeg ikke få det til at åbne et program? - f.eks Internet Explorer?
Avatar billede kamikaze Nybegynder
08. august 2002 - 11:31 #5
Jo, så kan du fx. inkludere <windows.h> og bruge ShellExecute.
Avatar billede kamikaze Nybegynder
08. august 2002 - 11:33 #6
ShellExecute(NULL,
                "open",
                "notepad.exe",
                "TE.TXT",
                NULL,
                SW_SHOW);
Avatar billede kamikaze Nybegynder
08. august 2002 - 11:34 #7
Ovenstående åbner filen TE.TXT med applikationen notepad. Du kan gøre det samme med IE, ved bare ikke lige hvad .exe-filen hedder til IE.

Btw: Husk #include <windows.h>
Avatar billede lahnkiller Nybegynder
08. august 2002 - 12:23 #8
jeg har lige prøvet, men jeg har tilsyneladende ikke headeren Windows.h, hvor kan jeg downloade den?
Avatar billede kamikaze Nybegynder
08. august 2002 - 13:26 #9
Hvilken kompiler bruger du?

Skriver du #include <windows.h> eller #include "windows.h"?
Avatar billede lahnkiller Nybegynder
08. august 2002 - 13:33 #10
Borland Turbo C++ 3
jeg skriver "windows.h" og jeg har ikke en fil som hedder Windows.h i min include mappe, desuden har jeg også Dev++, men den kan ikke finde filen graphics.h headeren.
Avatar billede kamikaze Nybegynder
08. august 2002 - 17:09 #11
Kender ikke Turbo C++ 3, men det er vist en gammel sag.

Normalt skal du skrive <windows.h>, så kigger kompileren i de(t) bibliotek pathen er sat til. Hvis du skriver "windows.h" kigger kompileren først i dit 'current directory'.

I dev++ har du helt sikkert windows.h., men jeg ved ikke om du bare kan kopiere den?!?

Ellers kan du jo kompilere flg. i Dev++:

#include <windows.h>
#include <conio.h>

int main()
{
  ShellExecute(NULL,
                "open",
                "notepad.exe",
                "TE.TXT",
                NULL,
                SW_SHOW);
  getch();
  return 0;
}

for lige at se at det virker.
Avatar billede lahnkiller Nybegynder
08. august 2002 - 17:17 #12
Jeg ved godt det er en gammel sag, men det er det program som vi bruger på min uddanelse, så jeg er tvunget til det. Ok, jeg kan godt lige prøve at skrive <windows.h> jeg tror dog ikke det hjælper, da jeg har kopieret windows.h over til min Turbo C++ INCLUDE folder, men den skriver over 50 fejl når jeg prøver at kompilere.
Ang. Dev++ så har jeg prøvet at kopilere programmet der, men den har ikke "graphics.h", så jeg er lidt på herrens mark... kan du ellers anbefale et andet C++ program, som jeg kan bruge til privat brug?
Avatar billede lahnkiller Nybegynder
08. august 2002 - 18:56 #13
Er der nogen som kan anbefale det godt C++ program?
Avatar billede kamikaze Nybegynder
09. august 2002 - 00:07 #14
Jamen, standarden til windows er nok Microsoft Visual C++, men den koster en bondegård. Dev++ kan næsten det samme, og kan stort set kompilere kode der er lavet til MSVC++. Den er ovenikøbet gratis og er derfor den jeg bedst kan anbefale...
Avatar billede kamikaze Nybegynder
11. august 2002 - 11:44 #15
Kan du få det til at virke???
Avatar billede soepro Nybegynder
13. august 2002 - 12:29 #16
Under TC++ 3.0 kan du ikke bruge Windows ting, og skal derfor bruge enten system()

system("C:\\Progra~1\\Inter~1\\Iexplore.exe  http://www.megagames.com");

(husk de ekstra backslashes) eller spawnl() kommandoen:

spawnl(P_WAIT, "C:\\Progra~1\\Inter~1\\Iexplore.exe", "C:\\Progra~1\\Inter~1\\Iexplore.exe", "http://www.megagames.com", NULL);

Husk også på at gamle DOS programmer ikke "forstår" lange navne, og at du derfor skal bruge 'Progra~1' i stedet for 'Programmer' osv. i sti-navnene. (De korte navne kan du se ved at lave 'dir' i en DOS-boks.)
Avatar billede lahnkiller Nybegynder
29. august 2002 - 15:31 #17
soepro, det du skriver giver ingen fejl når jeg kompilerre det, men når så programmet køres, sker der ingenting! hvad kan fejlen være?
Avatar billede soepro Nybegynder
29. august 2002 - 15:50 #18
Check som udgangspunkt, at du kan skrive det der står i system() fra en alm. DOS-box, og få det ønskede resultat:

C:\Progra~1\Inter~1\Iexplore.exe http://www.megagames.com

Samme gælder spawnl(), idet du dog skal udelade parameter 2 og den sidste:

C:\Progra~1\Inter~1\Iexplore.exe http://www.megagames.com

Der er muligt at du skal "hugge" en gang quotes rundt om din parameter for at det virker:

C:\progra~1\intern~1\iexplore.exe "http://www.megagames.com"
eller
"C:\progra~1\intern~1\iexplore.exe" "http://www.megagames.com"

virker begge her hos mig. (Bemærk det ekstra 'n' i \\Intern~1)
Avatar billede lahnkiller Nybegynder
23. januar 2003 - 17:09 #19
svarer nu, for at lukke spørgsmålet da det ikke er aktuelt mere, og intet af det ovenstående virkede :-(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester