Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Key - Shell (https://www.delphipraxis.net/139788-windows-key-shell.html)

schwa226 5. Sep 2009 10:30


Windows Key - Shell
 
Hi,

ich schreibe gerade an einem Shell Ersatz.

Nun ist mir aufgefallen, wenn ich den Explorer beende, dass die Windows Taste auf dem Keyboard gar nicht mehr geht.
Also ein Hook oder ein KeyDown zeigt nichts mehr als wäre die Taste gar nicht mehr da.
WEnn die explorer.exe noch läuft geht der Hook oder auch das Keydown Event.

Wie schaffe ich es, dass die Windows Taste auch ohne der explorer.exe verwendbar ist?

Jemand einen Tipp?

jaenicke 5. Sep 2009 10:36

Re: Windows Key - Shell
 
Das kommt auch darauf an unter welchem Betriebssystem. Zumindest ab 2000/XP wird es da schon schwierig. Da musst du wohl direkt an den Treiber ran.

Ohne die explorer.exe funktioniert aber auch vieles andere nicht mehr, was du dann selbst ersetzen musst.

schwa226 5. Sep 2009 11:13

Re: Windows Key - Shell
 
An die Treiber...

Muss ich mal Goggeln.

Danke!

Die anderen "Sachen" habe ich bereits eigentlich, zumindest was unbedingt nötig, nachgebaut.

Christian Seehase 5. Sep 2009 12:19

Re: Windows Key - Shell
 
Moin Zusammen,

also bei mir ist die Windows-Taste auch ohne Explorer noch nutzbar (XP Pro SP3)
Ich habe sie allerdings mit MSDN-Library durchsuchenRegisterHotKey eingebunden.

schwa226 5. Sep 2009 12:40

Re: Windows Key - Shell
 
Ich habe es mit:
RegisterHotkey(Handle,id1,MOD_WIN,0);
RegisterHotkey(Handle,id1,0,MOD_WIN);

und das gleiche mit SC_TASKLIST versucht.

Da bekomme ich keinen Hotkey gesendet.
Ein registrierter Hotkey STRG-A wird Registriert und ich bekomme auch den HotKey gesendet.

Christian Seehase 5. Sep 2009 14:09

Re: Windows Key - Shell
 
Aber so geht's:

Delphi-Quellcode:
const
  VK_LWIN = $5B;
  VK_RWIN = $5C;
  VK_APPS = $5D;

begin
  if not RegisterHotKey(self.Handle,1,MOD_WIN,VK_LWIN) then ShowMessage(SysErrorMessage(GetLastError));
end;
Für die rechte Windows-Taste dann mit VK_RWIN.

schwa226 5. Sep 2009 15:04

Re: Windows Key - Shell
 
Super Danke!

Geht super!

Nun habe ich noch das Problem, wenn ich auch noch WIN+E für den Explorer machen will mir beide Hotkeys ausgelößt werden:

Delphi-Quellcode:
RegisterHotKey(MainFormHandle, id1, MOD_WIN, VK_LWIN);
RegisterHotKey(MainFormHandle, id2, MOD_WIN, VK_E);
Wenn ich nun die WIN-Taste drück und halte wird id1 ausgelößt drücke dann noch die E Taste dazu wird auch id2 ausgelößt.

Hätte versucht mit GetAsyncKeyState(VK_LWIN) <> 0 zu überprüfen ob die Taste von id1 noch unten ist.
Jedoch sagt mir Delphi dann das die immer 0 ist.
Also muss hier wahrscheinlich noch ein anderer TastenCode als VK_LWIN rein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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