Avatar billede burningice Nybegynder
14. marts 2003 - 14:10 Der er 12 kommentarer og
1 løsning

Find ud af hvem/hvad der lukkede mit program

Jeg har et lille program, hvor jeg i min Closin event har koden

            e.Cancel = true;
            this.Hide();

dette gør at programmet bare bliver skjult, og er at finde nede i min ProcessLinje... for at lukke programmet er der en File>Exit menu som udfører fælgende kode

            Closing -= new System.ComponentModel.CancelEventHandler(frmMain_Closing);
            Close();

det virker helt efter hensigten, bortset fra en lille ting. Når man lukker windows mens programmet kører, så vil det jo ikke lukkes :(

Mit spørgmål er derfor, om der er en måde hvorpå man i sin Closin event kan tjekke på hvem/hvad der vil lukke programmet?
Eller hvis der var nogen der havde en ide hvordan det ellers kunne løses, ville det være super :)
Avatar billede gulbaek Nybegynder
14. marts 2003 - 15:38 #1
Hvad er det præcist du gerne vil ?
Avatar billede simon.ulsnes Nybegynder
14. marts 2003 - 15:42 #2
gulbaek >> Hvad er det præcist du ikke forstår?

Jeg er ikke sikker i min sag, men det kan være at du kan finde noget via din eventhandlers sender-variabel.

// Simon
Avatar billede burningice Nybegynder
14. marts 2003 - 15:46 #3
simon.ulsness>> desværre... det eneste jeg kan er at sætte e.Cancel = true, hvilket gør at mit program ikke lukker alligevel ;)

gulbaek>> ja, tror ikke jeg kunne sige det bedre end simon ;)
Avatar billede gulbaek Nybegynder
14. marts 2003 - 15:47 #4
prøver lige at finde udaf hvad jeg egentlig mener :-)
Avatar billede gulbaek Nybegynder
14. marts 2003 - 16:02 #5
kan godt ske jeg lyder dum lige nu, men hvis jeg vil lukke mit program kalder jeg bare

Application.Exit();

Men har også lige kigget lidt på Closing Events, det burde være muligt at fortælle programmet hvad der lukkede det ned, kan bare ikke helt regne det ud lige nu.
Avatar billede simon.ulsnes Nybegynder
14. marts 2003 - 16:17 #6
Mit næste bud ville så være at bladre lidt i Windows Platform SDK og se om der ikke er en eller anden capture funktion i user32.dll eller sådan noget.
Windows må da for pokker fortælle programmer når det lukker ned?

// Simon
Avatar billede burningice Nybegynder
14. marts 2003 - 16:44 #7
simon.ulsnes>> hehe.. det er godt at hidse sig op... kom så... fight ;) hehe

gulbaek>> ja... hvis det ikke var fordi at det skulle minimeres når man trykker på det lille kryds oppe i højre hjørne, så ville det hele være lidt nemmere :)
Avatar billede simon.ulsnes Nybegynder
14. marts 2003 - 17:33 #8
cyberfessor << Nå ja, jeg er bare lidt generelt træt af Windows... (Linux styrer verden, yeah, for vildt, manner ;)
Avatar billede burningice Nybegynder
14. marts 2003 - 17:39 #9
simon.ulsnes>> huhuhuuu.. lad os starte en flamewar omkring windows vs linux :P
Avatar billede burningice Nybegynder
17. marts 2003 - 11:56 #10
*ser meget ydmyg ud*... jeg har fundet noget kode der gør det jeg vil... i et consolprogram :S... jeg kan dog ikke lige se hvordan, eller OM man kan lave det i en winform.
Er der nogen af jer der evt. kunne kigge på det og komme til et udkast til hvordan det kan gøres... ? :)

http://www.geocities.com/teohunboon/october-2002/October.htm
http://www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_20482010.html
http://www.dotnet247.com/247reference/msgs/14/70180.aspx
Avatar billede burningice Nybegynder
17. marts 2003 - 13:32 #11
nå... så fik jeg det sq til at virke... efter en del roden rundt på MSDN blev jeg ledt ind på sporet af Windows Messages, og ved at override WndProc kan jeg fange de messages der blev sendt til programmet. Det viser sig at der sendes en WM_QUERYSESSIONEND messages som har nummere 0x11, og ved at tjekke på den kan jeg få windows til at lukke programmet ned :)

        protected override void WndProc(ref Message msg)
        {
            if (msg.Msg == 0x11)
            {
                ForceExit = true;
            }

            base.WndProc(ref msg);
        }
Avatar billede simon.ulsnes Nybegynder
17. marts 2003 - 14:35 #12
"Jeg vil have point! For point er det vigtigste i verden, og jeg har i hvert fald fortjent dem meget mere end alle andre..."

Nej...
Jeg kan bare ikke lige holde mig fra at kommentere at det var noget i den stil jeg foreslog, bare uden konkret løsning. Så øv-bøv. Jeg tror bare jeg lukker... :-)
Avatar billede burningice Nybegynder
17. marts 2003 - 15:02 #13
"din eventhandlers sender-variabel."... hmmm.... nej... det var ikke det...

"Windows må da for pokker fortælle programmer når det lukker ned?"... joo.. jaa, du var derhen af... hvis det havde været en concolprogram kunne jeg bruge SetConsoleCtrlHandler fra kernel32.dll...

okok. jeg indrømmer det.. jeg ville beholde alle pointene for mig selv... æv bæv *evil grin*... jeg vil ha pooooooooint... mm... point point.. masser af point...

eller... noget ;) hehe
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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