AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RegisterHotKey funktioniert nicht unter Vista!

RegisterHotKey funktioniert nicht unter Vista!

Ein Thema von Hedge · begonnen am 25. Mär 2009 · letzter Beitrag vom 25. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2   
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 02:23
Vor einer Weile schrieb ich ein kleines Tool, das beim Drücken von STRG+G das Programmfenster anzeigen sollte.
Ein User des Tools berichtete vor Kurzem, dass unter Vista das Fenster nicht erscheint.
Ich selbst habe kein Vista zum Prüfen, aber vielleicht ist Jemanden hier ja das Problem geläufig.

Registriert habe ich den Hotkey folgendermaßen:

Delphi-Quellcode:
Hotkey_id := GlobalAddAtom('MyHotKey_1');
  RegisterHotKey(Handle, Hotkey_id, MOD_CONTROL, 71);
Weiß Jemand was verkehrt laufen könnte?
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 03:54
Warum probierst du es nicht einfach in einem virtuellen PC aus?
http://www.microsoft.com/Downloads/d...displaylang=en
Ich würde generell dazu raten, denn sonst kannst du dir ja nie sicher sein, dass deine Programme unter anderen Betriebssystemen laufen.

Dieses spezielle Problem muss ich einmal testen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 05:57
Danke für deine Hilfe.

Ich besitze kein Windows Vista und bin eigentlich auch nicht interessiert daran (bis auf die Kompatibilitätsgeschichten).
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:08
Zitat von Hedge:
Ich besitze kein Windows Vista
Deshalb habe ich ja auch den Link gepostet wo du dir Vista kostenlos als Virtual PC Image herunterladen kannst...

Ich habe XP nicht mehr normal installiert, nur noch auf einem Testrechner und eben virtuell. Nur so kann ich überhaupt noch schauen, ob die Anwendungen dort und unter früheren Betriebssystemen laufen. Denn normal arbeite ich nur noch mit Vista und Linux bzw. bald nur noch mit Windows 7 und Linux.

Als Softwareentwickler kann ich ja nicht einfach ausliefern und dann die Benutzer fragen ob es auf anderen Betriebssystemen funktioniert.

Jedenfalls habe ich deinen Code soweit du ihn gepostet hast eben getestet, der funktioniert auch unter Vista problemlos, die Anwendung reagiert normal auf Strg + G. Das Problem liegt woanders. Um das zu testen wäre eine virtuelle Maschine mit Vista wohl die beste Lösung.

Wie zeigst du das Fenster denn an? Vielleicht liegt da der Hund begraben.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#5

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:15
Mein Tool nutzen im besten Fall 5 Leute (mich inklusive), deswegen war mir das ziemlich egal.

direkt bei FormCreate wird es folgendermaßen versteckt:

Delphi-Quellcode:
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW );
ShowWindow(Application.Handle, SW_SHOW);
angezeigt wird es dann mit:

Delphi-Quellcode:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
ShowWindow(Handle, SW_SHOWNOACTIVATE);
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:21
Also abgesehen davon, dass das Fenster beim Start dadurch bei mir nicht versteckt wird (warum eigentlich überhaupt so kompliziert?), funktioniert das. Wenn ich es nach dem Start manuell minimiere (was allerdings nicht mehr richtig klappt mit dem Quelltext), dann wird es bei Strg + G angezeigt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#7

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:31
Am Start hat noch ein

ShowWindow(Handle, SW_HIDE); gefehlt.

Das Ganze ist so komplex weil ich den Eintrag des Programms dauerhaft aus der Taskleiste verbannen wollte und es immer wieder Ärger gab, dass der Eintrag beim Zeigen des Fensters wieder auftauchte.

Ich werde das mal mit dem Virtual PC probieren, danke
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:33
Zitat von Hedge:
Das Ganze ist so komplex weil ich den Eintrag des Programms dauerhaft aus der Taskleiste verbannen wollte und es immer wieder Ärger gab, dass der Eintrag beim Zeigen des Fensters wieder auftauchte.
Dieses Problem gibt es zum Glück ab Delphi 2007 nicht mehr. Bis Delphi 2006 hab es ja das unsichtbare Application-Window, das in der Taskleiste sichtbar war. Mit dem ärgerst du dich da ja auch herum, und unter Vista funktioniert deshalb auch die Taskleistenvorschau nicht.
Ab Delphi 2007 ist dieses Problem weg und das Fenster hat direkt einen eigenen Eintrag in der Taskleiste.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#9

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:35
Zitat:
Ab Delphi 2007 ist dieses Problem weg und das Fenster hat direkt einen eigenen Eintrag in der Taskleiste.
Was meinst du mit "eigenen Eintrag" ?
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: RegisterHotKey funktioniert nicht unter Vista!

  Alt 25. Mär 2009, 06:38
Ganz genau weiß ich noch nicht wie das gemacht ist, das probiere ich gerade für ein Fensterskinning-Tool aus, aber in der Taskleiste der Eintrag gehört offenbar jetzt wie in anderen Sprachen auch direkt zum Fenster, nicht zu einem versteckten Fenster im Hintergrund. So hatte das bisher ja auch nur Borland mit Delphi gemacht.

Was ich mich frage:
Wäre es nicht sinnvoller einfach gar kein Fenster anzuzeigen am Anfang statt es sofort auszublenden? Dann könntest du das Fenster erzeugen und anzeigen, wenn es gebraucht wird.
Für den Empfang des Hotkeys kannst du dir ja die nonVCL Tutorials usw. anschauen, da siehst du wie der Botschaftsempfang auch ohne echtes Fenster geht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:42 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