AGB  ·  Datenschutz  ·  Impressum  







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

API Tastaturhooks Problem

Ein Thema von DarkLord0 · begonnen am 31. Okt 2004 · letzter Beitrag vom 7. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
DarkLord0

Registriert seit: 31. Okt 2004
59 Beiträge
 
#1

API Tastaturhooks Problem

  Alt 31. Okt 2004, 13:46
hallo
ich bin dabei eine anwendung mit Borland Delphi 6 zu programmieren, bei der der user die möglichkeit haben soll, durch schnelltasten, bestimmte aktionen durchzuführen, auch wenn das programm gerade nicht aktiv, also minimiert, im tray oder sonstwo ist.
dazu muss ich wohl Windows API Hooks verweden. ich habe mir dazu bereits ein paar tutorials durchgelesen und die entsprechenden funktionen (Hook/Unhook) in eine DLL ausgelagert; das ganze funktioniert auch schon, allerdings treten dabei gewisse unschöne probleme auf, die es bei anderen programmen, die offensichtlich auch Hooks verwenden, nicht gibt.
und zwar sollen das ganze auch funktionieren wenn das system durch andere anwendungen belastet ist wie z.B. wenn ein spiel an ist.
und zwar wenn ich einen keyboardhook installieren lasse vom programm durch die DLL dann ist dieser so eingestellt ist, dass er auf alle tastatursignale reagiert und mit SendMessage oder PostMessage eine Nachricht an das Hauptprogramm schickt.
die nachricht empfange ich im hauptprogramm mit
(SendMessage) WndProc(var Mess:TMessage);
(PostMessage) Application.OnMessage
Mit SendMessage funktioniert es, das system ruckelt aber kurz.
Mit PostMessage funktioniert es generell auch, aber wenn das system stärker ausgelastet ist (also wenn ein spiel an ist) dauert es lange (bis zu 30 sek) bis das signal ankommt bzw bis das programm reagiert (es reagiert mit einem audio signal).

Ich weiß nicht ob man es nur mit SendMessage bzw PostMessage hinbekommen kann dass es einwandfrei funktioniert und weiß auch nicht woher die jeweiligen probleme kommen...vielleicht wartet das sytem bei sendmessage bis die nachricht da ist und ruckelt deswegen...

meine frage : kann man das problem generell so einfach lösen (also ohne verwendung von MMF o.ä.)?
und wenn nicht : wo finde ich tutorials für MMF in delphi ?
TIA
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: API Tastaturhooks Problem

  Alt 31. Okt 2004, 13:50
Hi,

wenn du SendMessage aufrufst, kehrt SendMessage erst wieder zu dem aufrendem Block zurück, wenn die Anweisung komplett abgearbeitet wurde. PostMessage hingegen kehrt sofort nach Abschicken zurück.

Falls Du PostMessage verwendest, könntest Du die Priorität von Deinem Programm höher ansetzen, sodass die Nachrichten eventuell schneller ankommen.

mfG
mirage228

P.S.: Herzlich Willkommen in der DP
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#3

Re: API Tastaturhooks Problem

  Alt 31. Okt 2004, 13:52
Lass das mit den Hooks, das geht viel einfacher: mit RegisterHotKey
Für beispiele such mal hier in der DP, da sollte es einiges geben.

ciao, Philipp

PS: Herzlich Willkommen in der DP!
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
DarkLord0

Registriert seit: 31. Okt 2004
59 Beiträge
 
#4

Re: API Tastaturhooks Problem

  Alt 31. Okt 2004, 18:32
danke schonmal
ich hab das mal mit den hotkey funktionen ausprobiert, allerdings habe ich da noch ein problem:
wenn eine taste als globaler hotkey für mein programm definiert ist, kann sie bei anderen programmen garnicht verwendet werden. (?)
falls das mit hotkeys nicht funktioniert : wie erhöhe ich denn die priorität meiner anwendung?

und noch etwas: ich suche eine gute komponente o.ä. mit der ich audio dateien mit einer bestimmten lautstärke (in prozent der lautstärke der datei) abspielen lassen kann. ich habe da schon etwas ("Wave Audio Package"), aber das macht dann auch wieder bei höherer systemauslastung probleme... das gehört jetzt wohl hier nicht rein aber weiß ja trotzdem hier jemand was dazu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: API Tastaturhooks Problem

  Alt 31. Okt 2004, 22:27
Moin Darklord,

Zitat von Darklord0:
wenn eine taste als globaler hotkey für mein programm definiert ist, kann sie bei anderen programmen garnicht verwendet werden. (?)
Ein Hotkey kann nur einmal registriert werden, wobei auch noch die Regel gilt: Wer zuerst kommt mahlt zuerst.
Sollte also ein anderes Programm den gewünschten Hotkey bereits belegt haben, hast Du keine Chance.

Zitat von Darklordß:
und noch etwas:...
Hier gilt die Regel: Neue Frage - Neuer Thread.
Mach' dafür also bitte einen neuen Thread auf.
Danke.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
DarkLord0

Registriert seit: 31. Okt 2004
59 Beiträge
 
#6

Re: API Tastaturhooks Problem

  Alt 1. Nov 2004, 00:12
Zitat von Christian Seehase:
Ein Hotkey kann nur einmal registriert werden, wobei auch noch die Regel gilt: Wer zuerst kommt mahlt zuerst.
Sollte also ein anderes Programm den gewünschten Hotkey bereits belegt haben, hast Du keine Chance.
ne, ich meinte das eigentlich so : wenn mein programm sich den hotkey registriert, hat diese taste in anderen programmen (z.B. notepad.exe) keine funktion/auswirkung mehr
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#7

Re: API Tastaturhooks Problem

  Alt 1. Nov 2004, 10:30
Zitat von DarkLord0:
ne, ich meinte das eigentlich so : wenn mein programm sich den hotkey registriert, hat diese taste in anderen programmen (z.B. notepad.exe) keine funktion/auswirkung mehr
Das ist richtig. Das selbe problem hatte ich auch ... naja, und manchmal ist da eine einfachere, dafür dümmere lösung besser: Hotkey "deaktivieren" und tastendruck simulieren ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
DarkLord0

Registriert seit: 31. Okt 2004
59 Beiträge
 
#8

Re: API Tastaturhooks Problem

  Alt 1. Nov 2004, 13:43
naja, vielleicht ist das mit hotkeys sowieso nicht das richtige.
ich müsste dann nämlich auch einfache buchstabentasten als hotykeys registrieren und da kann es ja wahrscheinlich immer mal sein dass die schon ein anderes programm hat (auf irgendeinem rechner).
deswegen nochmal zu der postmessage variante : wie kann ich denn die priorität meiner anwendung erhöhen?
und wären memory mapped files (über die ich bis jetzt nicht viel weiß) denn in der lage so einfache sachen wie postmessage oder sendmessage zu ersetzen oder "lohnt" sich das nur beim schicken größerer datenmengen?
  Mit Zitat antworten Zitat
DarkLord0

Registriert seit: 31. Okt 2004
59 Beiträge
 
#9

Re: API Tastaturhooks Problem

  Alt 6. Nov 2004, 01:08
tja, postmessage mit höherer priorität ausprobiert, ergebnis : es kommt wieder zu rucklern in anderen programmen.
noch jmd eine idee?
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#10

Re: API Tastaturhooks Problem

  Alt 6. Nov 2004, 13:44
Du könntest es auch mal über die SendIpcMessage-Funktion aus der MadCodeHook-Lib versuchen ... ich denke, dass diese funktion das packen könnte ... MadCodeHook ist ein bestandteil der MadCollection die unter http://www.madshi.net/ zum download angeboten wird.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz