AGB  ·  Datenschutz  ·  Impressum  







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

Hook WH_GESTURENOTIFY

Ein Thema von Mossi · begonnen am 28. Jul 2015 · letzter Beitrag vom 29. Jul 2015
 
Mossi

Registriert seit: 6. Feb 2004
Ort: Wenzenbach
35 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Hook WH_GESTURENOTIFY

  Alt 29. Jul 2015, 14:45
Jetzt hab ich es doch mal mit WM_TOUCH probiert. Das Ausgabe-Kontroll auf dem Lehrerschirm hab ich mit RegisterTouchWindow aktiviert und jetzt bekomme ich auch die WM_TOUCH Meldungen.
Jetzt muss das ganze nur noch im Hook verarbeitet werden und da hab ich dann gleich das nächste Problem:

hier meine HookProcedure, wie sie jetzt aussieht:
Delphi-Quellcode:
function TouchHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  GetTouchInputInfo: function (hTouchInput: HTOUCHINPUT; cInputs: UINT;
                     pInputs: PTOUCHINPUT; cbSize: Integer): BOOL; stdcall;
  res: Boolean;
  lib: Cardinal;
  touchInputs: array of TTouchInput;
  data: CWPSTRUCT;
begin
  Result := CallNextHookEx(Touch_HookHandle, nCode, wParam, lParam);
  if nCode < 0 then
    exit;

  if nCode = HC_ACTION then
  begin
    data := PCWPSTRUCT(lParam)^;
    case data.message of
      WM_GESTURENOTIFY: OutputDebugString('WM_GESTURENOTIFY');
      WM_GESTURE: OutputDebugString('WM_GESTURE');
      WM_TOUCH:
       begin
        OutputDebugString('WM_TOUCH');
        OutputDebugString(PChar(IntToStr(data.lParam) + '/' + IntToStr(data.wParam) + '/' + IntToStr(data.message)));
        lib := LoadLibrary(PChar('user32.dll'));
        if lib <> 0 then
        begin
          GetTouchInputInfo := GetProcAddress(lib, 'GetTouchInputInfo');
          if @GetTouchInputInfo <> nil then
          begin
            SetLength(TouchInputs, data.wParam);
            res := GetTouchInputInfo(HTOUCHINPUT(data.lParam),
              data.wParam, @TouchInputs, SizeOf(TTouchInput));
            if not res then
              OutputDebugString(PChar(SysErrorMessage(GetLastError)))
            else
              OutputDebugString(PChar(IntToStr(touchinputs[0].cxContact) + 'x' + IntToStr(touchinputs[0].cyContact)));
          end;
        end;
       end;
    end;
  end;
end;
Ich laufe jetzt leider immer in einen Fehler. Get TouchInputInfo liefert FALSE zurück und der Fehler von GetLastError ist "invalid handle"
Lieg ich da falsch, wenn ich davon ausgehe, dass in lParam das Handle drin steht? Oder ist es zu diesem Zeitpunkt bereits wieder ungültig.
MSDN schreibt folgendes:
Zitat:
The touch input handle received in the LPARAM of a touch message. The function fails with ERROR_INVALID_HANDLE if this handle is not valid. Note that the handle is not valid after it has been used in a successful call to CloseTouchInputHandle or after it has been passed to DefWindowProc, PostMessage, SendMessage or one of their variants.
  Mit Zitat antworten Zitat
 


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 01:57 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