Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anwendungen steuern - Delphi unfähiger als andere Sprachen? (https://www.delphipraxis.net/100196-anwendungen-steuern-delphi-unfaehiger-als-andere-sprachen.html)

SirThornberry 24. Sep 2007 15:24

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Wenn man den Unterschied zwischen Sendmessage und keybd_event kennt, weiß man auch wann man was zu nutzen hat und was welche Nachteile hat. Der Urheber von PostKeyEx32 wusste zum Beispiel einfach wie keybd_event aufzurufen ist (steht ja auch in der Hilfe) und konnte dadurch seine Funktion drum herum bauen.

Ich denke einige sollte einfach nur zu der Erkenntnis kommen das Hilfe lesen meist mehr bringt also einfach nur fertige Funktionen anderer zu kopieren ohne zu verstehen was diese machen!

Ajin 24. Sep 2007 15:54

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Ich habe schon einiges in Hilfen gelesen, MSDN Library und jede Menge Beiträge von ähnlichen Themen. Leider wirds ab einer gewissen Stelle sehr kompliziert und ich steig da nicht mehr ganz durch. Deshalb probiere ich jede erdenkliche Möglichkeit aus.

"Andere Sprachen" Definieren kann ich nicht, ich kann nur vermuten dass es sich um C++ handelt da ich keinen Quelltext von diesen schönen Tools habe.

Das gleiche Thema

EWeiss 24. Sep 2007 16:04

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Bedenke das einige Anwendungen nur auf einen Tastendruck reagieren wenn sie aktiv sind.
Also könnte unterumständen ein APPACTIVATE von nöten sein um den Button tatsächlich drücken zu können.

bzw.. die Anwendung erst aktivieren bevor du das Kommando verschickst.

EDIT:
Sendmessage braucht einfach zu lange und ist nicht schnell genug zum senden von Keys.

gruss Emil

Ajin 24. Sep 2007 16:12

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Daran hab ich gedacht! :drunken:

SirThornberry 24. Sep 2007 16:16

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Zitat:

Sendmessage braucht einfach zu lange und ist nicht schnell genug zum senden von Keys.
:shock: Kannst du das genauer erklären? Ich hätte gedacht das keybd_event langsamer ist.
Dachte keybd_event plaziert den Key weiter unten (low-level gesehen). Und von dort aus wird es dann in die MessageQueue gelegt wovon es durch die Nachrichtenschleife abgeholt wird.
SendMessage hingegen sollte nichts in der Messagequeue ablegen sondern ruft direkt die Wnd-Proc auf.
So war zumindest bisher meine Annahme/Wissensstand.

EWeiss 24. Sep 2007 16:29

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Zitat:

Zitat von SirThornberry
Zitat:

Sendmessage braucht einfach zu lange und ist nicht schnell genug zum senden von Keys.
:shock: Kannst du das genauer erklären? Ich hätte gedacht das keybd_event langsamer ist.
Dachte keybd_event plaziert den Key weiter unten (low-level gesehen). Und von dort aus wird es dann in die MessageQueue gelegt wovon es durch die Nachrichtenschleife abgeholt wird.
SendMessage hingegen sollte nichts in der Messagequeue ablegen sondern ruft direkt die Wnd-Proc auf.
So war zumindest bisher meine Annahme/Wissensstand.

Ja ruft sie auf ;) Kommt aber zu spät oder zu langsam an.
In Bassvis habe ich zu anfangs auch Sendmessage ala Winamp verwendet.
Mußte aber feststellen das ohne vorrangesetzten Sleep es nicht möglich war die Daten in der Winproc zu verarbeiten.
Besonders kritisch wird das wenn die Anwendung auch noch OpenGl Plugins zur zeit verwendet.

Habe es deshalb geändert da ich den Anwender nicht zumuten konnte 100.te von Sleeps in seinen Code zu verwenden.

EDIT:
Kann es sein das er vielleicht die Keys nicht deklariert hat ?
Delphi-Quellcode:
keys : Array[0..255] of Boolean;
SendMessage:
Diese Funktion sendet eine Nachricht an ein Entsprechendes Fenster bzw. seiner Fensterprozedure und gibt dessen Rückgabe zurück.

PostMessage:
Diese Funktion sendet eine Nachricht an ein angegebenes Fenster welche nicht an das Fenster direkt sondern an dessen Nachrichteneingangspuffer übermittelt wird wobei nicht auf eine bestätigung des Threads gewartet wird.

gruss Emil

gabneo 24. Sep 2007 16:33

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach
 
Das dachte ich eigentlich auch??? :?:

@Sir Thornberry
Ich verstehe durchaus den Code den ich gepostet habe. Doch hänge ich gerade an der selben Wissenslücke an der du auch hängst, sollte schon erlaubt sein :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Seite 2 von 2     12   

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