Avatar billede hensewg Nybegynder
06. april 2008 - 13:51 Der er 10 kommentarer og
1 løsning

reagere selvom der ikke er fokus?

Kan man gøre sådan at sit program reagere på en række taste tryk efter hinanden, selv om formen ikke har fokus, F. eks. hvis den er minimeret?

her er min kode til tastetrykkende:

var
  Form1: TForm1;
  cheat: boolean;
  i: integer;

  const
  keyword: array [0..10] of char = ('s','h','u','t','d','o','w','n',' ','-','a');

procedure TForm1.FormCreate(Sender: TObject);
begin
  i := 0;
  cheat := false;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = keyword[i] then
    begin
      if i = 10 then
        begin
          form1.Caption := 'Snyd';
          cheat := true;
          i := 0;
        end
      else
        begin
          i := i+1;
        end
    end;
end;
Avatar billede psycosoft-funware Nybegynder
06. april 2008 - 14:44 #1
Avatar billede psycosoft-funware Nybegynder
06. april 2008 - 14:52 #2
Avatar billede hensewg Nybegynder
06. april 2008 - 14:59 #3
kan du så ikke lige forklare mig, hvordan jeg gør sådan, at den skal reagere i rækkefølge. F. eks. først A, så b,c,d,e og så f tilsidst, og så skal den lave en besked?
Avatar billede hrc Mester
07. april 2008 - 08:28 #4
hensewq: du er ikke interesseret i at få en masse hotkeys defineret er du? Du vil snuse på det aktive programs (eksempelvis kommandoprompten) tastetryk, ikke?
Avatar billede w13 Novice
07. april 2008 - 10:24 #5
hensewq>> Du må bare tilføje tasten i et array hver gang og så aflæse på det.
Avatar billede hrc Mester
07. april 2008 - 11:54 #6
w13: Tror ikke du læste hele spørgsmålet (i øvrigt gør han hvad du foreslår). Det er ikke tastetryk i eget program. Det er andres...

hensewq: Er det ikke det her du leder efter:

type
  procedure WMQueryEndSession(var Msg : TWMQueryEndSession); message WM_QUERYENDSESSION;

procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  form1.Caption := 'Snyd';
  cheat := true;
  Msg.Result := 0; // Håndteret, undertrykket!
{
  if MessageDlg('Afslut program og luk windows?',mtConfirmation,[mbYes,mbNo], 0) = mrNo then
    Msg.Result := 0
  else
    Msg.Result := 1;
}
end;

Propper du ovenstående ind i din mainform vil den fange når windows forsøges lukket - og da Msg.Result sættes til nul, undertrykkes den forsøget.

For mere information kan du kigge her: http://msdn2.microsoft.com/en-us/library/aa376890(VS.85).aspx
Avatar billede w13 Novice
07. april 2008 - 12:00 #7
Jo, den er jeg med på.

Jeg tænker på, at når der skal tjekkes på, om tastekombinationen (f.eks. "shutdown" eller "hello" eller whatnot) er godkendt, så må han nok tilføje hvert nye tastetryk i et array eller en variable.
Avatar billede w13 Novice
07. april 2008 - 12:03 #8
hrc>> Men ønsker hensewq en kode til at stoppe sit program fra at lukke? Det kan jeg ikke se, fremgår nogen steder.
Avatar billede hrc Mester
07. april 2008 - 12:16 #9
w13: Hvis ikke han ønsker at standse noget kan han bare sætte msg.result = 1
Avatar billede hensewg Nybegynder
07. april 2008 - 15:20 #10
Jeg skal bare have den til at registrer en række tastetryk, når programmet er minimeret (eller uden fokus), og hvis serien af tastetryk er rigtig, så skal den starte et andet program. hvis ikke skal [I] resete.
Avatar billede hensewg Nybegynder
22. april 2008 - 21:45 #11
Da der ikke har været nogen svar på det sidste lukker jeg tråden
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