18. august 2001 - 11:46Der 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 ?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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.
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...:-)
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 :-)
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)
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 :)
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 ?
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...
Jeg har fået hjælp andet sted fra, og nu virker det. Men tak for tiden og hjælpen aligevel.
Synes godt om
Ny brugerNybegynder
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.