Dahl Skrevet 28. april 2004 Del Skrevet 28. april 2004 (endret) Akkurat som topic, hvordan kan jeg bruke Prt Screen, Home, End, Insert osv som snarveistaster? For eksempel med Prt Screen. Da kan jeg selvfølgelig bruke GetAsyncKeyState, men problemet med denne funksjonen er at den blir tatt for å være en keylogger... procedure TForm1.Timer1Timer(Sender: TObject); var result: string; i: byte; begin for i := 8 To 222 do begin if GetAsyncKeyState(i)=-32767 then begin case i of 44 : result := 'Prt Screen'; //44 er Prt Screen end; Når jeg prøver å kjøre denne koden, begyner Norton AntiVirus å gå helt berserk, og advarer gang på gang om en keylogger, og stopper operasjonen. Så hvordan kan jeg gjøre dette uten å bli tatt for å være et virus? Endret 28. april 2004 av @kd Lenke til kommentar
ChrML Skrevet 1. mai 2004 Del Skrevet 1. mai 2004 (endret) Det scriptet er veldig normalt å bruke i keyloggers, så det er kanskje ikke så rart, men skal den tasten funke for ditt program, eller når som helst (til og med når programmet er minimert?). Endret 1. mai 2004 av chrml Lenke til kommentar
Dahl Skrevet 2. mai 2004 Forfatter Del Skrevet 2. mai 2004 Det scriptet er veldig normalt å bruke i keyloggers, så det er kanskje ikke så rart, men skal den tasten funke for ditt program, eller når som helst (til og med når programmet er minimert?). Riktig, den skal funke når programmet er minimert også. Det var derfor jeg bare kom på akkurat denne metoden, sliter fortsatt med at programmet mitt blir tatt for å være en keylogger... Lenke til kommentar
Legion Skrevet 2. mai 2004 Del Skrevet 2. mai 2004 har du sett på noen av hook'ene fra torry Lenke til kommentar
ChrML Skrevet 2. mai 2004 Del Skrevet 2. mai 2004 Da blir det værre, for brukere vil aldri kunne stole på om programmet ditt faktisk er en keylogger, eller om den bare bruker dem som snarvei, etc..., og det er virkelig annoying om du skal publisere ett program som blir detecta som virus. Du kan lage deler av programmet ditt som en device driver (akkurat som CloneCD gjør for full tilgang til CD/DVD brenneren). Da skulle det ikke være no problem å fange opp key events. Lenke til kommentar
Dahl Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 har du sett på noen av hook'ene fra torry Takk skal du ha for linken! chrml: Hvordan gjøres dette? Lenke til kommentar
ChrML Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Jeg har alt annet en peiling på åssen man lager en device driver, men det skal visst være fullt mulig i Delphi (med DLL filer regner jeg med). However, det å lage en device driver bare for å fange opp noen tastetrykk, er egentlig ganske bortkasta, så det må være en annen vei, som Norton ikke detecter som keylogger. Det er virkelig synd at Norton detecter ett program som bruker en såpass enkel API som keylogger, men det er vel en vei rundt det. Lenke til kommentar
DidzisK Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Hva med å bruke OnKeyUp, er det ikke mye enklere? Dette funker helt greit hos meg (jeg har NAV installert, den detekterer ingenting): procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessageFmt('Key %d',[key]); end; Jeg får 44 fra PrintScreen, akkurat som du. Lenke til kommentar
ChrML Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Dette skal funke når som helst, til og med når programmet er minimert, så det ville ikke funka. Det funker nettopp bare når fokusen er satt på Form1 i ditt tilfelle. Lenke til kommentar
DidzisK Skrevet 5. mai 2004 Del Skrevet 5. mai 2004 Bare pirking kanskje. Med snarveitaster forstår man ofte tastene som kaller funksjoner innenfor den aktive formen. Så min kode kan være nok i mange tilfeller (mange kaller dette KISS prinsip - keep it simple, stupid). Som regel må du sette Form1.KeyPreview=True, hvis du har andre kontroller på formen som kan ha fokus, der har du rett. Lenke til kommentar
Dahl Skrevet 11. mai 2004 Forfatter Del Skrevet 11. mai 2004 Nå er jeg forvirra.... Vil det funke med OnKeyUp når fokusen er et annet sted enn Form1? Hvis nei, så er hele vitsen med dette programmet borte... Lenke til kommentar
gerri28 Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 Her er en snutt som funker selv om programmet er minimert eller ikke har fokus, tror ikke dette skal bli detected som virus unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private Procedure WMHotkey( Var msg: TWMHotkey ); message WM_HOTKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin If not RegisterHotkey( Handle, 1, 0, VK_SNAPSHOT ) Then ShowMessage('Kan ikke bruke "Print screen" som hotkey'); If not RegisterHotkey( Handle, 2, 0, VK_HOME ) Then ShowMessage('Kan ikke bruke "Home" som hotkey'); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin UnRegisterHotkey( Handle, 1 ); UnRegisterHotkey( Handle, 2 ); end; procedure TForm1.WMHotkey( Var msg: TWMHotkey ); begin case msg.HotKey of 1: label1.caption := 'Prt Screen'; 2: label1.caption := 'Home'; end; end; end. Lenke til kommentar
Dahl Skrevet 13. mai 2004 Forfatter Del Skrevet 13. mai 2004 Tusen takk skal du ha! Tester den når jeg kommer hjem, er på skolen nå. Kjip Norsk-time!!! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå