Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Tastenaktion (https://www.delphipraxis.net/88830-tastenaktion.html)

zokka114 21. Mär 2007 17:50


Tastenaktion
 
Nabend !

ich hab folgendes Problem :

Ich möchte per Klick auf einen Button die gleiche Aktion auslösen als wenn ich die Windows-Taste drücke (z.b. die linke Windows-Taste).

Wäre kuhl wenn mir jemand helfen könnte!

MfG

Zokka114

bitsetter 21. Mär 2007 18:31

Re: Tastenaktion
 
Hallo,

ich glaube du meinst sowas hier:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  keybd_event(VK_LWIN, 0, 0, 0);
  keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;

zokka114 21. Mär 2007 19:55

Re: Tastenaktion
 
Klappt Super ! :thumb:
Danke!
Kannst du vielleicht erklären was die ganzen Werte, die in Klammern stehen, bedeuten ?

bitsetter 21. Mär 2007 20:57

Re: Tastenaktion
 
Hier kannst du es nachlesen:
keybd_event Function

und noch ein Link für die Liste der virtuellen Tastencodes:
Liste der virtuellen Tastencodes (VK_)

zokka114 21. Mär 2007 21:49

Re: Tastenaktion
 
Mein Ziel ist es Windows durch eine Folge von Tasten-Aktionen herunterzufahren.
Ich hab mich schon im Netz umgeschaut und festgestellt das man Windows XP nich einfach per "ExitWindowsEx" herunterfahren kann.
Nun dachte ich mir das man einfach virtuell die 'Windows-taste' dann die 'C-Taste' und dann die 'A-Taste' drücken lassen kann.
So müsste der Rechner mit einem klick runterfahren.

Nur Delphi erkennt VK_C und VK_A nicht !
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 keybd_event(VK_LWIN, 0, 0, 0);
 keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_C, 0, 0, 0);
 keybd_event(VK_C, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_A, 0, 0, 0);
 keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0);
end;
Warum funktionieren die einfachen Zahlen (z.B.VK_8) oder Buchstaben (z.B. VK_C) nicht ?

MfG

bitsetter 21. Mär 2007 22:10

Re: Tastenaktion
 
Zitat:

Quelle hiefür war die Unit WINDOWS und die unit SNDKEY32 von Delphi 7:
Ansonsten geht es auch so:
Delphi-Quellcode:
  keybd_event(ord('C'), 0, 0, 0);
  keybd_event(ord('C'), 0, KEYEVENTF_KEYUP, 0);
Zitat:

Zitat von zokka114
Mein Ziel ist es Windows durch eine Folge von Tasten-Aktionen herunterzufahren.
Ich hab mich schon im Netz umgeschaut und festgestellt das man Windows XP nich einfach per "ExitWindowsEx" herunterfahren kann.

Zu dem Thema kannst du das hier mal testen:
Abmelden / Reboot / Shutdown unter Win 95/98/ME/NT
Der Aufruf der Funktion erfolgt so:
Delphi-Quellcode:
ExitWin(EWX_SHUTDOWN);

DP-Maintenance 22. Mär 2007 10:12

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Klatsch und Tratsch" nach "Windows API / MS.NET Framework API" verschoben.

zokka114 22. Mär 2007 22:02

Re: Tastenaktion
 
Danke mit deiner Hilfe funktioniert jetzt mein Schutdown-Programm wie ich es wollte !

MfG zokka114 :-D

zokka114 24. Mär 2007 19:54

Re: Tastenaktion
 
Aber eine Frage hätte ich da noch ! :wink:

Wie kann man denn Zwei Tasten gleichzeitig "virtuell" drücken lassen ?

MfG

bitsetter 24. Mär 2007 20:01

Re: Tastenaktion
 
Hallo,

versuche es mal so:
Delphi-Quellcode:
  keybd_event(vk_Shift,0,0,0);
  keybd_event(ord('C'),0,0,0);
  keybd_event(vk_Shift,0,keyeventf_keyup,0);
  keybd_event(ord('C'),0,keyeventf_keyup,0);
VK_SHIFT und C


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
Seite 1 von 2  1 2      

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