![]() |
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:
Zur Erklärung:
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. 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 |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Das ist der Tray somit such mal nach TrayIcon
|
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. |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Zitat:
![]() und hier im Forum auch nix ![]() |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Zitat:
|
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
|
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 |
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 |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Und dann gäbe es auch noch
![]() 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. |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Zitat:
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
alles klar danke, werd mein glück mal versuchen
erstatte dann bericht |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
das funkt leider alles nicht,
weder: PostMessage(AnDasGefundeneHandle, wm_syscommand, sc_close, 0); noch irgendwas anderes. diese KliiTask undWinSpy sind ja alles andere Programme, ich will ja ein Programm selber machen, (bzw. eher mit eurer Hilfe) und das layout auch selber gestalten können. Hat nicht jemand nen konkreten Code, den ich dort einfüge um ein Programm zu schliesen welches unten rechts in der Taskleiste iegt (genauer: einen Keybinder) was ich einfach per Onclick schließe? wäre mir seeehr hilfreich danke |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Nichts gegen Herumprobieren, aber man sollte schon in Grundzügen wissen, was man tut. "Funkt nicht" hilft uns allen nicht weiter. Bist Du sicher, dass Du auch das richtige Handle hast? Hast Du Dir WinSpy einmal angeschaut? Dann solltest Du bemerkt haben, dass das Programm Dir sogar entsprechenden Code generieren kann.
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
mein programm sieht so aus:
Delphi-Quellcode:
starten funktioniert ja... aber das beenden das programmes, da tut sich nichts.
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'),SC_CLOSE,0,0); Panel1.Visible:=false; end; end. ich weiß ja aucf welchem pfad das programm liegt, also hier zumbeispiel unter dem unterordner /Keybinder/ aber hiflt das was? also geht das auch iwie das er die datei auf dem pfad beendet? habe bissher keinen weg gefunden |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
SC_CLOSE ist keine Nachricht, sondern der WParam vom WM_SYSCOMMAND. Aber der Beispielcode wurde hier schon gepostet.
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Zitat:
dass WinSpy dir a) zeigt was für Fenster so auf deinem System sichtbar und unsichtbar rumschwirren mit allen von Dir benötigeten Informationen b) du damit ausprobieren kannst, ob das besagte Fenster zu schließen geht c) du von WinSpy direkt den Delphi-Code präsentiert bekommst, den du dann in deine Anwendung übernehmen kannst (da ist ein Script-Modul dabei, wo du so lange mit rumexperimentierst, bis alles so ist wie gewünscht und dann schwupps in die Anwendung) Aber stimmt, das müsste man ja wieder selber erarbeiten :roll: |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Eigentlich wollte ich ja nicht Antworten aber man sieht doch das marco1234 keine Ahnung bzw.. über kein Grundwissen verfügt.
Ist weiter nicht schlimm dafür ist ja ein Forum da.. Aber ich glaube er sucht jemand der es für ihn macht. Zitat:
gruss |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Etwas OT, aber:
Danke für den Link zu WinSpy, das Ding kannte ich noch gar nicht. wirklich nützliches Tool. |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
hm. okay anscheinend ist es doch nciht so einfach wie ich gedacht hätte.
denn ihr scheint ja irgendwie azuh nicht so richtig zu wissen was zu utn ist, bzw scheint es größere arbeit zu sein. ich will icht das ihr alles für mich macht, ich brauchte bloß hilfe für DIESE EINE ZEILE. aber naja ich weiß jetzt zuumindest, das ich mit fragen wohl eher nichtmehr hier her kommen werde danke |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Wir wissen ganz genau, was zu tun ist. Nur du verweigerst jegliche Eigeninitiative und nimmst unsere Ratschläge und Hilfe nicht an.
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
hm achso... na dann
jeglich eigenaktivität ist zwar nicht war, ich probiere eure ratschläge ja aus, aber wenn sie nicht funktionieren? zum Beispiel jetzt hab ich dieses Windows Spy soo geh ich bei ansicht auf anzeige>Prozesse. da find ich das auch. aber was nun? wenn ich anklicke keine reaktion. wenn ich das selbe mit nem normalen offenen fenster mache z.B firefox seh ich da die infos. aber der vodegenerator bleibt immer grau und ich kann ihn nicht öffnen. wie lege ich fest, das er mir nen code generiert, um diesen einen prozess zu schließen? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Geh auf "Fenster auswählen" und ziehe den Button bei gedrückter Maustaste auf das Fenster, das Du haben willst. Anschließend auf "Tools - Codegenerator" und Du bekommst den Code zum Ermitteln des Fensters. Somit kannst Du das Handle ermitteln, an das Du dann WM_SYSCOMMAND mit SC_CLOSE schicken kannst. Reicht das als Zusammenfassung?
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
ja danke das klingt schon seeeeeehr gut super
aber ein problem. wohin und wie schreibe ich dann diesen WM_SYSCOMMAND also ganz unten an die datei? und wie sieht dann diese zeile aus mit dem WM_SYSCOMMAND? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Ich zitiere Dich mal:
Zitat:
[edit] Wobei: wenn Du das Programm selbst startest, kannst Du auch ganz gezielt diese Message an alle Fenster des Prozesses schicken, aber das hatten wir in Deinem anderen Thread ja bereits erwähnt. [/edit] |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Delphi-Quellcode:
so müsste das doch okay sein oder?
procedure TForm1.Button2Click(Sender: TObject);
var wndMain, wndChild: HWND; begin wndMain := FindWindow('AutoIt v3','AutoIt v3'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'Edit', nil); if wndChild <> 0 then begin ShowMessage('65702' + IntToStr(wndChild)); FlashControl(wndChild); // internal function SendMessage('65702') SC_CLOSE,0,0): end; end; end; end. 65702 ist das handle des programmes sagt mit WinSpy FlashControl und SC_CLOSE,0,0; und das semikolon beim 3. end von unten wird mir rot unterstrichen ;-( Why? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Schau Dir mal
![]() |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
SendMessage('65702') SC_CLOSE,0,0):
Ich habe mal alle Fehler markiert. Und genau einen Beitrag über deinem steht, was man mit SC_CLOSE machen soll. So was meine ich. |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
hm okay da reichen wohl meine fähigkeiten mal wieder nicht aus
"Und da schickst Du jetzt WM_SYSCOMMAND hin mit SC_CLOSE als wParam." wie schicke ich etwas als wParam.? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Du hast dir die Hilfe, die sogar verlinkt wurde, nie angeguckt, kann das sein?
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
doch habe ich aber ich werde nicht schlau daraus
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Ich weiß nicht mehr, wie ich da noch helfen soll :|
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Ein letzter Versuch:
Code:
LRESULT WINAPI SendMessage(
__in HWND hWnd, __in UINT Msg, __in WPARAM wParam, __in LPARAM lParam ); |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
@Luckie noch mehr vorkauen bitte
SendMessage( <--- Funktionsname __in HWND hWnd, <--- Handle vom Fenster/Form __in UINT Msg, <--- Message (was soll getan werden) __in WPARAM wParam, <--- ein Parameter mit Namen wParam __in LPARAM lParam <--- ein Parameter mit Namen lParam ); |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
Man kann alles zunächst im WinSpy ausprobieren und wenn dann alles funktioniert in den eigenen Code übernehmen.
Allerdings sollte man wissen, dass sowas wie
Delphi-Quellcode:
oder
ShowMessage
Delphi-Quellcode:
nichts mit dem Schließen des Fensters zu schaffen hat.
FlashControl
Somit kann man das auch gleich rauslassen. Also mit dem folgenden Code kann ich ganz hervorragend das Download-Fenster von Firefox schließen. Wenn man das geschafft hat, dann sollte das Copy/Paste in die eigene Anwendung noch zu schaffen sein. |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Letzter Versuch (nicht großartig getestet):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const NameDesProgramms = 'TripoX Keybinder 0.1a.exe'; var StartupInfo: TStartupInfoA; ProcessInfo: TProcessInformation; begin ZeroMemory(@StartupInfo, SizeOf(StartupInfo)); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOW; if CreateProcessA(nil, PAnsiChar(NameDesProgramms), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then try PID := ProcessInfo.dwProcessId; //PID ist eine private DWORD-Variable finally CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end; procedure TForm1.Button2Click(Sender: TObject); function EnumWindowsProc(Wnd: HWnd; aPID: DWORD): BOOL; stdcall; var hProcess: DWORD; begin GetWindowThreadProcessID(Wnd, hProcess); if hProcess = aPID then PostMessage(Wnd, WM_SYSCOMMAND, SC_CLOSE, 0); Result := true; end; begin if PID <> 0 then EnumWindows(@EnumWindowsProc, PID); end; |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
okay der letzte code von deddyH sieht ganz gut aus und auch beim einfügen wenig rot
ich füge nur den button2onclick ein, da ich ja das öffnen schon hinbekommen habe. doch er makiert mir immer diese 'PID' Rot. woran liegt daS? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Zitat:
|
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
dazu möchte ich mich jetzt nicht äußern xD
ja aber was ist damit gemient "//PID ist eine private DWORD-Variable" ist damit gemaint ich kann das weglassen? |
AW: Programm für schließung eines Programes in der Taskleiste rechts neben der Uhr
Meinst du die ist umsonst da? Wie wäre es, wenn du sie einfach mal deklarieren würdest?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr. |
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