Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prog-Startart: Per Mouse-Click oder Enter-Key? (https://www.delphipraxis.net/154668-prog-startart-per-mouse-click-oder-enter-key.html)

r29d43 20. Sep 2010 15:50

Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Hallo

Ich würde in meinem Programm gerne rauskriegen, wie dieses Prog gestartet wurde. Also per Mouse-Click auf die Prog-Ikone oder per Enter-Key (wenn die Prog-Ikone z.B. auf dem Desktop o. in der Schnellstartleiste selektiert war)?

Ich weiß, das dürfte ziemlich schwer werden, und ich glaube ja eigentlich auch selbst nicht daran...

Aber eventuell gibt es ja irgendwo im OS so eine Art von Abdruck bzgl. eines solchen letzten Vorganges.

Oder was könnte es da u.U. sonst noch an Möglichkeit geben?

Thx im Voraus,
rXdY

mkinzler 20. Sep 2010 15:55

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Hinterlege verschiedene Parameter

SirThornberry 20. Sep 2010 15:56

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Mit verschiedenen Parametern weiß er aber nicht ob das Icon auf dem Desktop doppelt angeklickt wurde oder ob es per Eingabeteaste ausgeführt wurde.
Im übrigen glaube ich nicht das es eine Möglichkeit gibt dies heraus zu finden. Denn der Desktop ist auch nur ein Programm welches andere Programme startet.
Und woher soll Windows wissen ob eine Api-Funktion zum starten eines Programmes aufgerufen wurde weil der Nutzer etwas angeklickt hat oder weil der Nutzer eine Taste gedrückt hat. Je nach Programm welches ein anderes Programm startet kann ja auch eine Kombination aus beidem erforderlich sein oder ein Befehl der über Netzwerk übertragen wurde.

Luckie 20. Sep 2010 20:42

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Wozu musst du das wissen?

himitsu 20. Sep 2010 21:01

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Jupp, eigentlich sollte es egal sein, über welches Icon man was gestartet hat, oder willst du etwa, im Programm, die User anders behandeln wenn sich entscheiden es von wo anders aus zu starten?

Das Einzige, welches man prüfen könnte, von welchem Programm aus es gestartet wurde (Explorer.exe oder was Anderes), aber was ist dann mit denen, welche eine eigene Sidebar oder was Anderes nutzen?

Ergo: Verwende Parameter und gut ist.

PS: Startmenü, Desktop und Schnellstart sind alles die Explorer.exe ,
in die Explorer.exe kannst du nicht reinschauen und demnach kann man da auch nicht unterscheiden. :zwinker:

Luckie 20. Sep 2010 21:18

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Es geht nicht um den Ort, sondern um das wie, ob mit Mausklick oder über die Enter-Taste, wenn das Icon auf dem Desktop den Fokus hat.

himitsu 20. Sep 2010 21:35

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
So oder so, es ist Sache der Explorer.exe ... und jetzt einen Hook in diese Anwendung zu laden und die Eingaben zu filtern und zu merken, würde wohl keinem User gefallen, vorallem da man dann alles in dieser Anwendung quasi abhören würde.

Sir Rufo 20. Sep 2010 21:49

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Obwohl es hier ja auch Quellen für einen globalen Keyboard-/Mouse-Hook gibt.

Damit wäre es zumindest möglich annäherungsweise herauszufinden, was vor dem Start der Application gedrückt wurde

himitsu 21. Sep 2010 08:10

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Dann drücke ich Enter und kurz darauf irgendwo mit der Maus auf den Desktop, bevor das Programm gestartet wurde, dann denkt dein Hook ich hätte es mit der Maus gestartet, war aber nicht so.

Und wie gesagt, nicht jeder mag es, wenn ein globaler Hook das System belauscht.

Sir Rufo 21. Sep 2010 08:48

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
darum schrieb ich ja auch annäherungsweise :mrgreen:

r29d43 21. Sep 2010 09:24

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Zitat:

Zitat von Luckie (Beitrag 1050854)
Es geht nicht um den Ort, sondern um das wie, ob mit Mausklick oder über die Enter-Taste, wenn das Icon auf dem Desktop den Fokus hat.

So ist es!

Zweck der Sache: Wenn das Prog. über die Enter-Taste gestartet wurde, dann soll anfänglich eine andere Button im Prog den Focus haben als sonst (beim MouseClick-Start) üblich ...um nach der Startanzeige mit nur einem weiteren Druck der Enter-Taste elegantest auch noch eine weitere Anzeige einsehbar zu machen. Per Mouse ist das eh kein Aufwand, und deswegen soll der Focus dann auch auf einer anderen (Haupt-)Button stehen...

Diese Sache ist also nicht sooo extrem wichtig (eher nur so eine kleine Spielerei am Rande), so dass auch so ein Hook vorab installiert dafür jetzt viel zu viel Aufwand wäre.

himitsu 21. Sep 2010 09:27

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Dann laß den Fokus besser auf dem "anderen" Button, egal wie gestartet wurde.

Es macht sich nicht sonderlich optiomal, wenn sich das Verhalten scheinbar "zufällig" ändert.

Und wer sagt, daß man dann nicht mit Enter weiterarbeiten kann/will, selbst wenn man das Programm über 'nen Mausklick gestartet hatte? :wink:

r29d43 21. Sep 2010 10:01

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
na ja, wenn ich mit Mausklick gestartet bin, dann greif ich danach eigentlich sowieso nicht mehr groß zur Tastatur. Dann ist es eh irgendwie egal, wo der Focus sitzt.

Das sollte auch nur so eine kleine Hilfe für Handhold-PCs sein, wo man ja oft keine Maus zur Verfügung hat, und wo die Mausbewegung immer so ein bisschen umständlich ist. Nach dem Starten des Progs und dem Aufbau der zweiten Anzeige wäre der Focus dann ja auch sowieso wieder zur dieser auch sonst normalen (Haupt-)Button zurückgewandert.

Aber event. generiere ich für diese zweite Anzeige auch nochmal einen extra Hotkey, das wäre imo auch noch ok.

hathor 21. Sep 2010 10:10

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Ich verstehe nicht, warum man daraus ein "Problem" macht!

Der Focus kann doch IMMER beim Programmstart auf dem Button sein, der mit dem ENTER-Key das OnClick-Ereignis verarbeiten soll.
Bei der Mouse- oder Touch-Bedienung ist es doch wurscht, wo der Focus beim Programmstart ist!

r29d43 21. Sep 2010 13:34

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Dieses anfängliche Anzeigen (gewisser Infos) ist da eher nur eine kleine Sache, die zwar ganz nützlich ist, aber eben nicht die Hauptsache des Progs (wie ja schon gesagt). Ich will halt nicht, dass bei einem normalen Prog-Start per Maus der Focus dann auf einer Button sitzt die irgendwo am äußeren Rand platziert ist, sondern dann sollte der schon mehr zentral auf dem Button der Hauptfunktion sitzen.

hathor 21. Sep 2010 14:09

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Man kann indirekt herausfinden, ob das Programm mit der Maus oder der Tastatur gestartet worden ist:

Beim Programmstart GetCursorPos-Function(Windows) im Abstand von wenigen Sekunden 2 x aufrufen.
Bei Ungleichheit wurde die Maus zum Starten benutzt...

Zitat:
Ich will halt nicht, dass bei einem normalen Prog-Start per Maus der Focus dann auf einer Button sitzt die irgendwo am äußeren Rand platziert ist, sondern dann sollte der schon mehr zentral auf dem Button der Hauptfunktion sitzen.

Ach, jetzt verstehe ich erst, was Du willst!!!

Delphi-Quellcode:
procedure MoveMouseIntoControl(AWinControl: TControl);
var rtControl: TRect;
begin
  rtControl := AWinControl.BoundsRect;
  MapWindowPoints(AWinControl.Parent.Handle, 0, rtControl, 2);
  SetCursorPos(rtControl.Left + (rtControl.Right - rtControl.Left) div 2,
    rtControl.Top + (rtControl.Bottom - rtControl.Top) div 2);
end;


Aufruf-Beispiel:
MoveMouseIntoControl(Button1);

r29d43 21. Sep 2010 15:17

AW: Prog-Startart: Per Mouse-Click oder Enter-Key?
 
Zitat:

Zitat von hathor (Beitrag 1050968)
Beim Programmstart GetCursorPos-Function(Windows) im Abstand von wenigen Sekunden 2 x aufrufen.
Bei Ungleichheit wurde die Maus zum Starten benutzt...

zur Not, ja!
thx, :-)

Aber den Code brauche ich nicht, denn wenn ich per Maus starte, dann wisch ich den Mauszeiger natürlich per Hand selbst in quasi 1/10tel Sekunde auf diesen Button.


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