14. marts 2003 - 14:10Der 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 :)
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.
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.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 :)
*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... ? :)
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 :)
"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... :-)
"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
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.