Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr (https://www.delphipraxis.net/157808-programm-fuer-schliessung-eines-programes-der-taskleiste-rechts-neben-der-uhr.html)

marco1204 25. Jan 2011 19:22

Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Ich würde gern ein Delphiprogramm erstellen, mit dem ich ein Programm schließe. Das Problem: es soll ein Programm untern rechts in der Spalte sein, also keins was offen ist, sondern halt dort neben der Uhr (kp wie man das nennt)
Ich habe es soweit geschafft:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellApi, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Application.Handle,'open','TripoX Keybinder 0.1a.exe',''{Parameter},'Keybinder\',SW_SHOW);
  Panel1.Visible:=true
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendMessage(FindWindow(nil,'TripoX Keybinder 0.1a.exe'),WM_CLOSE,0,0);
  Panel1.Visible:=false;
end;

end.
Zur Erklärung:
Bei Button1Click wird das Programm gestartet, welches sich in einem Unterordner befindet. Funktioniert Einwandfrei
Bei Button2Click will ich, dass es das Programm wieder schließt, doch es ist ja nicht offen sondern nur in der Leiste als Symbol unten Rechts.
Wie lautet der Befehl, das er von dort ein Programm schließt?
Danke im Vorraus

Sir Rufo 25. Jan 2011 19:29

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Das ist der Tray somit such mal nach TrayIcon

marco1204 25. Jan 2011 19:34

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
und wie gehts das??
Mit:SendMessage(TrayIcon(nil,'TripoX Keybinder 0.1a.exe'),WM_CLOSE,0,0); gehts irgendwie nicht.
und Google hilft irgendwie auch ni.

Sir Rufo 25. Jan 2011 19:38

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Zitat:

Zitat von marco1204 (Beitrag 1077294)
und wie gehts das??
Mit:SendMessage(TrayIcon(nil,'TripoX Keybinder 0.1a.exe'),WM_CLOSE,0,0); gehts irgendwie nicht.
und Google hilft irgendwie auch ni.

Ja das doofe google, nie steht da was, da bimmelt auch keine Glocke und vorgekaut wird da auch nix :roll:
Bei Google suchenDelphi TrayIcon
und hier im Forum auch nix
Hier im Forum suchenTrayIcon

cookie22 25. Jan 2011 19:53

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Zitat:

Zitat von marco1204 (Beitrag 1077291)
Ich würde gern ein Delphiprogramm erstellen, mit dem ich ein Programm schließe. Das Problem: es soll ein Programm untern rechts in der Spalte sein, also keins was offen ist, sondern halt dort neben der Uhr (kp wie man das nennt)
Ich habe es soweit geschafft:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellApi, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Application.Handle,'open','TripoX Keybinder 0.1a.exe',''{Parameter},'Keybinder\',SW_SHOW);
  Panel1.Visible:=true
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendMessage(FindWindow(nil,'TripoX Keybinder 0.1a.exe'),WM_CLOSE,0,0);
  Panel1.Visible:=false;
end;

end.
Zur Erklärung:
Bei Button1Click wird das Programm gestartet, welches sich in einem Unterordner befindet. Funktioniert Einwandfrei
Bei Button2Click will ich, dass es das Programm wieder schließt, doch es ist ja nicht offen sondern nur in der Leiste als Symbol unten Rechts.
Wie lautet der Befehl, das er von dort ein Programm schließt?
Danke im Vorraus

Nur weil du das Fenster nicht siehst, heißt es ja nicht, dass es nicht da ist. Das Fenster ist unsichtbar solange die Anwendung im Tray ist.

marco1204 25. Jan 2011 20:02

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
ja das ich das fenster nis ehe ist ja klar. Problem ist bloß, das es trotzdem mit dem befehl den ich momentan hbe nicht funktioniert

Aphton 26. Jan 2011 00:18

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Liefert ShellExecute kein Handle zum Fenster? :idea:

Edit: Oder schlimmstenfalls per CreateProcess & TerminateProcess arbeiten

vergessen 26. Jan 2011 03:29

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Ist "TripoX Keybinder 0.1a.exe" von Dir?

Falls JA, kannst Du mit FindWindow nicht nur nach der Titelzeile des (unsichtbaren) Fensters suchen lassen!

Schau' Dir mal die Hilfe zu FindWindow GENAUER an ;-)

Und "SendMessage" lieber nicht benutzen, besser "PostMessage"!

Statt "WM_CLOSE" würde ich eher "SC_CLOSE" verschicken ;-)

So ungefähr in der Art: PostMessage(AnDasGefundeneHandle, wm_syscommand, sc_close, 0);

MfG

sx2008 26. Jan 2011 09:31

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Und dann gäbe es auch noch PsKill.exe von Microsoft (ehemals SysInternals).
Damit kann man recht bequem alle möglichen Programme abschiesen.
Es würde ausreichen PsKill über eine simple Batchdatei zu starten ohne Delphi zu bemühen.

Sowieso kann man mit Delphi vieeeeel interessantere (und produktivere) Dinge machen, als nur einen Prozess zu killen.
Das Destruktive kann man ruhig einer Batchdatei überlassen.

SirThornberry 26. Jan 2011 11:59

AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
 
Zitat:

Zitat von vergessen (Beitrag 1077358)
Und "SendMessage" lieber nicht benutzen, besser "PostMessage"!

Noch besser ist PostThreadMessage. PostMessage und SendMessage funktionieren nicht zwischen Desktops. Und dann hat man das Problem wie bei Acrobat Reader wo sich nichts tut wenn meine eine PDF per Doppelklick öffnen will nur weil auf einem anderen Desktop bereits der Acrobat Reader geöffnet ist. Nichtmal in dem bereits geöffnetem Reader wird die Datei geöffnet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Seite 1 von 5  1 23     Letzte »    

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