AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anderes Programm beenden

Ein Thema von zeras · begonnen am 21. Mai 2020 · letzter Beitrag vom 21. Mai 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.477 Beiträge
 
Delphi 12 Athens
 
#1

AW: Anderes Programm beenden

  Alt 21. Mai 2020, 14:07
Du kannst es mit deinem eigenen Programm gern ausprobieren.

Denn es ist auch im Taskmanager der Unterschiet zwischen den Tabs "Prozesse" und "Details".
In Prozesse wird ein WM_CLOSE ans Hauptfenster WM_QUIT an den Prozess (Hauptthread) gesendet,
während in Details ein TerminateProcess ausgeführt wird.

Und ein Klick auf's [X], bzw. das Schließen im Taskleisten-Button sendet das WM_CLOSE ans dortige Fenster. (in uralten Delphis, bzw. bei Application.MainFormOnTaskbar=False, landet das von der Taskleiste nicht im MainForm.Handle, sondern geht an Application.Handle)



Entweder du merkst dir vom MSDN-Library durchsuchenCreateProcess das ProzessHandle oder die ProzessID
oder via MSDN-Library durchsuchenGetProcessTimes bekommst du die Startzeit.


Wenn deine Variablen compilerabhängige "Strings" sind, warum machst du es dir nicht einfach und nimmst dafür auch die compilerabhängigen Typen und Funktionen?
Delphi-Quellcode:
  // nicht die W/Wide oder A/Ansi, sondern die OHNE
  ...
  ShExecInfo.lpFile := PChar(Filename);
  ShExecInfo.lpParameters := PChar(Para);
  ShExecInfo.lpDirectory := PChar(ExtractFileDir(Filename));
  ...
  Result := ShellExecuteEx(@ShExecInfo);
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Mai 2020 um 14:16 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.653 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anderes Programm beenden

  Alt 21. Mai 2020, 18:19
Danke himitsu,

ich habe nun statt ShellExecuteEx CreateProcess genutzt und dann die ProzessID gemerkt. Dann kann ich bei Beenden
SendMessage(GetWindowFromID(dwProcessId), WM_CLOSE, 0, 0); nutzen und alles ist OK.
Auch deine Hinweise wegen Ansi und Wide habe ich umgesetzt. Ich hatte ein altes Beispiel genutzt und dort war es noch so beschrieben.

Jetzt muss ich nur noch versuchen, die Fensterpositionen zu merken, damit die beim nächsten Start der Programme wieder an derselben Stelle angezeigt werden.
Aber da werde ich bestimmt hier im Forum noch fündig

Danke nochmals.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:14 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