AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tastatur Hook

Ein Thema von 1234567890987654321 · begonnen am 22. Jul 2010 · letzter Beitrag vom 27. Jul 2010
Antwort Antwort
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#1

AW: Tastatur Hook

  Alt 22. Jul 2010, 19:57
Ne, es soll auch in Firefox+Notepad+IE usw. funktionieren.
Und der Fehler ist in der Zeile
hHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, hInstance, 0);
und heisst:
project1.lpr(54,55) Error: Incompatible type for arg no. 2: Got "<address of function(LongInt, LongWord, LongWord)Word;StdCall>", expected "<procedure variable type of function(LongInt, LongInt, LongInt):LongInt;StdCall>"

Wenn ich das @ weglasse, kommt in der gleichen Zeile der Fehler:
project1.lpr(54,42) Error: Wrong number of parameters specified for call to "KeyboardProc"

könnte villeicht jemand von euch die Dll kompilieren und sie hochlade(das währe sehr sehr (for i:=1 to 1000000 do s:=s+'sehr) nett)
oder hatt vllt. jemand eine andere Möglichkeit?
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#2

AW: Tastatur Hook

  Alt 22. Jul 2010, 20:02
Hab noch das gefunden, aber da ist wieder das @...
http://delphi.about.com/od/windowssh...board_hook.htm
Die version mit der Unit währ mir liber
ACHTUNG: ICH VERWENDE LAZARUS

Geändert von 1234567890987654321 (22. Jul 2010 um 20:05 Uhr)
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#3

AW: Tastatur Hook

  Alt 22. Jul 2010, 20:09
hab eine demo gefunden:
http://www.swissdelphicenter.ch/de/showcode.php?id=1722
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#4

AW: Tastatur Hook

  Alt 22. Jul 2010, 20:15
Wieder dass Problem mit den @
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Tastatur Hook

  Alt 22. Jul 2010, 20:24
Dir ist bekannt, dass du Beiträge auch editieren kannst oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#6

AW: Tastatur Hook

  Alt 23. Jul 2010, 07:11
Funktioniert es so?
Delphi-Quellcode:
type
  TKeyboardProc = function(nCode, wParam, lParam: LongInt): LongInt;
var Proc: TKeyboardProc;
begin
  ...
  Proc := KeyboardProc;
  hHook := SetWindowsHookEx(WH_KEYBOARD, Proc, hInstance, 0);
Die Parameter der Funktion müssten dann alle vom Typ LongInt sein, aber da Lazarus das ja anscheinend unbedingt so haben will...
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
464 Beiträge
 
Delphi XE4 Professional
 
#7

AW: Tastatur Hook

  Alt 23. Jul 2010, 10:53
Ein "Lazarus"-Quelltext für Tastaturhook als DLL

HTH Erich

Delphi-Quellcode:
{$mode objfpc}{$H+}

{$IFDEF WINDOWS}{$R Programmname32.rc}{$ENDIF}

uses
 Classes,
 Windows,
 ActiveX,
 ShlObj,
 Messages,
 SysUtils;



var
  HookHandle: Cardinal = 0;
  AppHandle: HWND;






function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := CallNextHookEx(HookHandle,
                           nCode,
                           wParam,
                           lParam);
  if nCode = HC_NOREMOVE then Exit;


    if ((lParam and (1 shl 30)) <> 0) then
    begin
        if wParam = VK_F4 then
        begin
            PostMessage(FindWindow(nil,'Fenstername von deinem Programm'), WM_USER + 8760, 300, 0);
        end
        else
        begin
            PostMessage(FindWindow(nil,'Fenstername von deinem Programm'), WM_USER + 8760,wParam,lParam);
        end;
    end;

end;

function StartHook32(ApplicationHandle: HWND): Boolean; stdcall;
begin
  Result := False;
  if HookHandle = 0 then
    begin
    HookHandle := SetWindowsHookEx(WH_KEYBOARD,
                                   @KeyboardHookProc,
                                   HInstance,
                                   0);
    AppHandle := ApplicationHandle;
    Result := TRUE;
    end;


end;

function StopHook32: Boolean; stdcall;
begin
  Result := UnhookWindowsHookEx(HookHandle);
  HookHandle := 0;
end;

exports
  StartHook32,
  StopHook32;
end.
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#8

AW: Tastatur Hook

  Alt 23. Jul 2010, 15:02
Funktioniert es so?
Delphi-Quellcode:
type
  TKeyboardProc = function(nCode, wParam, lParam: LongInt): LongInt;
var Proc: TKeyboardProc;
begin
  ...
  Proc := KeyboardProc;
  hHook := SetWindowsHookEx(WH_KEYBOARD, Proc, hInstance, 0);
Die Parameter der Funktion müssten dann alle vom Typ LongInt sein, aber da Lazarus das ja anscheinend unbedingt so haben will...
Nein leider nicht, und die Dll hab ich ja schon, aber trotzdem danke
und, der Fehler mit den @ taucht nur auf, wenn ich die unit Windows einbinde
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz