Avatar billede noxiaz Nybegynder
19. april 2006 - 20:10 Der er 21 kommentarer og
1 løsning

slå alt+f4 fra

Er det muligt at slå ALT+F4 så man ikke kan slukke for programmet sådan? Hvis ja hvordan? :)
Avatar billede dr_chaos Nybegynder
19. april 2006 - 20:21 #1
noget i denne stil:

tilføj denne her til din form i initializecomponent:
this.KeyDown += new KeyEventHandler(DinForm_KeyDown);

og lav denne metode:




  void DinForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt && e.KeyCode == Keys.F4)
            {
                e.SuppressKeyPress = true;
            }
            else
            {
                e.SuppressKeyPress=false
            }

        }
Avatar billede noxiaz Nybegynder
19. april 2006 - 21:10 #2
Skal jeg "using" noget for at bruge det?
Avatar billede dr_chaos Nybegynder
20. april 2006 - 08:01 #3
nej det tvivler jeg på
Avatar billede noxiaz Nybegynder
20. april 2006 - 08:33 #4
Den siger fejl:
The type or namespace name 'KeyEventHandler' could not be found (are you missing a using directive or an assembly reference?)

Har set det ind I filen: MainForm.Designer.cs
private void InitializeComponent()
  {
    this.KeyDown += new KeyEventHandler(Login_KeyDown);

og det andet satte jeg ind i MainForm.cs:
void Login_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt && e.KeyCode == Keys.F4)
            {
                e.SuppressKeyPress = true;
            }
            else
            {
                e.SuppressKeyPress=false;
            }

        }
Avatar billede noxiaz Nybegynder
20. april 2006 - 08:35 #5
Den siger fejl: The type or namespace name 'KeyEventHandler' could not be found (are you missing a using directive or an assembly reference?)(CS0245)

Har sat det ind i filen: MainForm.Designer.cs

private void InitializeComponent()
        {
            this.KeyDown += new KeyEventHandler(Login_KeyDown);
            this.components = new System.ComponentModel.Container();

Det andet satte jeg ind i filen: MainForm.cs
    void Login_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt && e.KeyCode == Keys.F4)
            {
                e.SuppressKeyPress = true;
            }
            else
            {
                e.SuppressKeyPress=false;
            }

        }

Hvordan får jeg det til at virke? :)
Avatar billede noxiaz Nybegynder
20. april 2006 - 08:40 #6
Hvis jeg så flytter:

void Login_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt && e.KeyCode == Keys.F4)
            {
                e.SuppressKeyPress = true;
            }
            else
            {
                e.SuppressKeyPress=false;
            }

        }
Det ind i MainForm.Designer.cs siger den: The type or namespace name 'KeyEventArgs' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede dr_chaos Nybegynder
20. april 2006 - 10:06 #7
prøv med
System.Windows.Forms.KeyEventArgs
Avatar billede noxiaz Nybegynder
20. april 2006 - 15:46 #8
void Login_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
      if (e.Alt && e.KeyCode == Keys.F4)
      {
            e.SuppressKeyPress = true;
      }
      else
      {
          e.SuppressKeyPress=false;
      }
}

private void InitializeComponent()
{
this.KeyDown += new System.Windows.Forms.KeyEventHandler(Login_KeyDown);

Nu siger den: "The name 'keys' does not exist in the current context"
i denne linje: if (e.Alt && e.KeyCode == Keys.F4)
Avatar billede Slettet bruger
20. april 2006 - 15:48 #9
Hvad med at ligge en makro på Alt+F4, som ikke har nogen handling!~)
Avatar billede noxiaz Nybegynder
20. april 2006 - 15:50 #10
Åhh fordi jeg havde lagt det i den forkerte fil. Men man kan stadig lukke programmet med alt+f4 ? og den melder ikke nogen fejl når den compiler
Avatar billede noxiaz Nybegynder
20. april 2006 - 15:54 #11
spg, Det skal virke på alle computere, skal ikke være afhingelig af noget :)
Avatar billede Slettet bruger
20. april 2006 - 15:58 #12
Jeg vil pænt luske tilbage til min egen afdeling!~)
Avatar billede noxiaz Nybegynder
20. april 2006 - 16:43 #13
spg, Hehe ellers tak for svaret :P havde været en løsning hvis det var det kun skulle virke på min computer ;)
Avatar billede dr_chaos Nybegynder
20. april 2006 - 19:24 #14
System.Windows.Forms.Keys
tilføj evt
using System.Windows.Forms; i toppen af cs filen
Avatar billede noxiaz Nybegynder
20. april 2006 - 23:08 #15
Den compiler fint og siger ingen fejl. men kan stadig lukke med alt+f4?
Avatar billede dr_chaos Nybegynder
21. april 2006 - 07:59 #16
prøv at lave et breakpoint ved:
if (e.Alt && e.KeyCode == Keys.F4)
og se de værdier der fanges.
Avatar billede noxiaz Nybegynder
21. april 2006 - 17:08 #17
Breakpoint? - Prøvede at sætte MessageBox.Show("Tykkede på en tast") ind lige før if (e.Alt && e.KeyCode == Keys.F4) - men den skrev det aldrig lige meget hva jeg trykkede på?
Avatar billede dr_chaos Nybegynder
21. april 2006 - 18:26 #18
hmm det kan jeg se. Kunne heller ikke selv få det til at virke.
Du kan prøve med:
protected override void OnClosing(CancelEventArgs e)
{
System.Diagnostics.StackTrace O = new System.Diagnostics.StackTrace(true);
System.Diagnostics.StackFrame F = O.GetFrame(7);
if(F.GetMethod().Name == "DefWndProc")
e.Cancel = true; // user ended the application (ALT-F4, clicking the
corner X etc)
}
Avatar billede dr_chaos Nybegynder
21. april 2006 - 18:29 #19
eller bare
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
}
Avatar billede noxiaz Nybegynder
21. april 2006 - 19:39 #20
dr_chaos, Den siger fejl ved CancelEventArgs "The type or namespace name 'CancelEventArgs' could not be found (are you missing a using directive or an assembly reference?)"
Avatar billede noxiaz Nybegynder
21. april 2006 - 19:44 #21
Dr_chaos, perfekt ! :D brugte bare (System.ComponentModel.CancelEventArgs e) så virkede det :D Tak for hjælpen ;) send et svar du har fortjent de points ! :D
Avatar billede dr_chaos Nybegynder
21. april 2006 - 20:04 #22
svar :)
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