Avatar billede hurra Novice
18. august 2001 - 11:46 Der er 20 kommentarer og
1 løsning

Event inden windows lukker ned

Jeg har lavet et program, hvor jeg har brug for at udføre en funktion, lige
inden computeren. Problmmet er at i funktionen der skal udføres, bliver et
andet program kaldt.
Det er ikke noget problem, at sætte CanClose til false, og så lade mit eget
program udføre alle de funktioner det skulle være. Men jeg kan ikke få lov
til at starte et andet program op, og det ville jeg gerne.
Er der nogen let løsning på det, eller bliver jeg nødt til at skrive koden
fra det andet program (det jeg kalder) ind i mit hoved program ?
Avatar billede kamikaze Nybegynder
18. august 2001 - 11:48 #1
Hvilket værktøj bruger du?
Avatar billede hurra Novice
18. august 2001 - 11:49 #2
ps. I første linie, skal der stå, at jeg vil udføre en funktion lige inden computeren lukker ned.
Avatar billede hurra Novice
18. august 2001 - 11:49 #3
Borland builder.
Avatar billede kamikaze Nybegynder
18. august 2001 - 12:03 #4
Kender du noget til Win32 API ShellExecute?
Avatar billede kamikaze Nybegynder
18. august 2001 - 12:14 #5
Hvis ikke har jeg noget kode du kan bruge...
Avatar billede hurra Novice
18. august 2001 - 12:16 #6
Ja, jeg kender den godt, men jeg har brugt ShellExecuteEx. Skulle de ikke virke meget ens ?
Avatar billede kamikaze Nybegynder
18. august 2001 - 12:38 #7
Jo ...Ex er bare extended. Jeg har haft problemet da jeg skulle køre WinZip inde fra en tråd. Du kan køre spawnl (fra proces.h) der kan udføre en proces og vente til den er færdig:

void __fastcall TDownloadForm::UnzipPackage(AnsiString sFile)
{
  AnsiString sFile = \"Dit_Fil_Navn\" // til parameter-overførsel til WinZip

  int iPos = sFile.Length();
  while (sFile[iPos--] != \'\\\\\');
  char *pgm = \"c:\\\\programmer\\\\winzip\\\\wzunzip.exe\";
  // pgm == Navnet på den .exe du vil køre

        spawnl(P_WAIT,
                pgm,
                pgm,
                \"-o\",
                \"-ybc\",
                sFile.c_str(),
                (sFile.SubString(1, iPos)).c_str(),
                NULL);
}
Avatar billede kamikaze Nybegynder
18. august 2001 - 12:39 #8
Husk lige :
#include \"process.h\"
Avatar billede hurra Novice
18. august 2001 - 13:47 #9
Ok, det virker nu. Filen bliver godt nok kørt, og windows bliver slet ikke sur. Der er lige et par små detaljer jeg godt kunne tænke mig anderledes. 1) Jeg har lavet en checkbox i mit program, hvor man kan vælge om man vil se et console vindue. Med ShellExecute, kunne sw_hide, men det er ikke en muglighed med spawnl, eller er det ?
2) Jeg kunne godt tænke mig, at det console vindue der bliver åbnet, selv lukker igen.
Avatar billede kamikaze Nybegynder
18. august 2001 - 23:31 #10
Mener du at du godt kunne tænke dig at køre consol-programmet uden at det bliver vist???? Jeg ved ikke om dette er muligt med spawnl, men mon ikke??? Det er vist et nyt spørgsmål...:-)
Avatar billede hurra Novice
19. august 2001 - 12:33 #11
Ja, det var det jeg mente. Der er et nyt problem ved spawnl. I går da jeg sad ved min ME maskine virkede det fint, programmet blev godt nok started op, når jeg lukkede computeren ned. Men nu sidder jeg på arbejde ved en 2k maskine, og her virker det ikke. Det skulle vel ikke være så heldigt at du har et bud på endnu en løsning ?
Tilgengæld bliver consol vinduet selv lukket her ude :-)
Avatar billede kamikaze Nybegynder
19. august 2001 - 17:00 #12
Ovenstående løsning (spawnl) har jeg brugt på win98, win2k og NT4.0 uden problemer, så det kan ikke være derfor det ikke virker på dit arbejde. Grunden til at det ikke virker på dit arbejde, kunne være fordi du ikke har Borland C++builder installeret der. Er det rigtigt?????

Builder bruger default sine biblioteker i run-time, dvs. laver en lille exe fil, og linker fra den til de medfølgende biblioteker. For at undgå dette (og dermed tillade at exe-filen kan køre hvorsomhelst), skal du ind i compilerens options:

Project->Options->Packages->>>> herinde skal der IKKE være kryds i \"Build With Runtime Packages\" (næsten nederst)
Avatar billede kamikaze Nybegynder
19. august 2001 - 17:01 #13
(Iøvrigt har mine konsol-vinduer altid selv lukket efter brug når jeg har spawnet dem...)

:-)
Avatar billede hurra Novice
19. august 2001 - 19:17 #14
Jeg har bcb installeret på arbejde. Programmet starter op som det skal og lægger sig i baggrunden. Når så jeg lukker computeren ned, skriver den noget med Access Violation (mener jeg det var), og den der standart \"programmet-vil-blive-lukket-om-5-sekunder\" kommer op. Mit andet program bliver ikke kaldt. Men hvis du har haft det til at virke på 2k, så burde jeg også (måske:)) at kunne få det til at virke, jeg må vel bare prøve igen :)
Avatar billede hurra Novice
19. august 2001 - 19:28 #15
ps. hvis jeg lukker programmet, altså uden at lukke computeren ned, så virker det fint, og mit andet program bliver kaldt. Det skulle altså ikke være pga. fejl i mit program. Kan det måske være nogle sikkerhed opsætninger i 2k ?
Avatar billede kamikaze Nybegynder
20. august 2001 - 09:19 #16
Jeg begynder lige at tvivle på det jeg selv sagde... om Win2k... Det er meget muligt at spawn er anderledes under 2k. Jeg tjekker op på det efter arbejde...
Avatar billede kamikaze Nybegynder
20. august 2001 - 20:53 #17
hmmmmmmm................. Det virker på min Win2k maskine....... Kan du evt. sende mig din kode????
Avatar billede hurra Novice
20. august 2001 - 20:57 #18
Ja, på mail eller bare her? hvor meget af det? bare de funktioner der bliver kaldt når jeg lukker ned?
Avatar billede kamikaze Nybegynder
21. august 2001 - 15:37 #19
Gerne på mail: c_strandbygaard@hotmail.com
og...hvor stort er det??? Nok bedst med det hele. Jeg kan evt. kigge på det i weekenden.
Avatar billede hurra Novice
18. september 2001 - 16:47 #20
Der er gået lang tid. Har du fået kikket på det ?
Avatar billede hurra Novice
22. september 2001 - 13:58 #21
Jeg har fået hjælp andet sted fra, og nu virker det. Men tak for tiden og hjælpen aligevel.
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