AGB  ·  Datenschutz  ·  Impressum  







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

Prozess ohne Nachfrage beenden

Ein Thema von stockholm · begonnen am 9. Dez 2008 · letzter Beitrag vom 11. Aug 2009
Antwort Antwort
stockholm

Registriert seit: 31. Okt 2008
Ort: Reichenbach an der Fils
16 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 13:31
Hallo,

ich habe nun gefühlte 10.000 Lösungen und Thread gelesen, die leider ALLE auf TerminateThread aufbauen. Dumm ist leider, dass das Programm, welches ich beenden möchte, darauf nur mit einem "Möchten Sie das Programm wirklich schließen?" antwortet.

Also, gibt es einen -einfachen- weg, das Programm zu schließen?

Handle bekannt.

Danke
Vielen Dank für die Aufmerksamkeit,
stockholm
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 13:42
Wenn du den Prozess mit MSDN-Library durchsuchenterminateProcess beendest, dann fragt das Programm unter Garantie nicht mehr nach, weil es das gar nicht mehr kann. Nach einem Genickschuss, sagst du nämlich auch nichts mehr.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stockholm

Registriert seit: 31. Okt 2008
Ort: Reichenbach an der Fils
16 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 13:44
Zitat von Luckie:
Wenn du den Prozess mit MSDN-Library durchsuchenterminateProcess beendest, dann fragt das Programm unter Garantie nicht mehr nach, weil es das gar nicht. Nach einem Genickschuss, sagst du nämlich auch nichts mehr.
Ich ich da nun seit gut 2 Stunden dran und nahe einer Explosion

Delphi-Quellcode:
procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);
  if isWindow(hWindowHandle) then
  begin
    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;
Diese Funktion greift auf TerminateProcess zurück, right?

Und das Programm antwortet mit... "Möchten Sie das Programm wirklich schließen?"...
Vielen Dank für die Aufmerksamkeit,
stockholm
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 13:52
Vielleicht nützt dir ja das hier was ^^
klick (man beachte das Michael selbst von der Benutzung abrät)

oder das, da gehts zwar um Dienste, aber vielleicht kann man das ja anderweitig benutzen (siehe #12 in dem Thread)
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 14:00
Zitat von stockholm:
Diese Funktion greift auf TerminateProcess zurück, right?
Nein:
SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult); Es wird erst versucht das Fenster des Prozesses "normal" zu schliessen. Und das löst natürlich bei manchen Fenstern eine Nachfrage aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stockholm

Registriert seit: 31. Okt 2008
Ort: Reichenbach an der Fils
16 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: Prozess ohne Nachfrage beenden

  Alt 9. Dez 2008, 14:27
Danke.
Danke, Danke Danke.
Vielen Dank für die Aufmerksamkeit,
stockholm
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Prozess ohne Nachfrage beenden

  Alt 10. Aug 2009, 09:15
Hallo,

ich bin gerade dabei, meine Projekte auf D2009 umzustellen.
Hierbei habe ich Probleme mit der Windows Funktion SendMessageTimeout .

Delphi-Quellcode:
function foo : Boolean;
var
  wnd: HWND;
  DWResult: DWORD;
begin
    wnd := FindWindow('irgend ein Windowname',NIL);
    if wnd <> 0 then
      if SendMessageTimeout(Wnd, WM_Close, 0, 0, SMTO_NORMAL, 3000, DWResult) = 0 then
        // .....
end;
Bisher hat dieser Aufruf immer funktioniert. Jetzt meckert der Compiler:
Zitat:
"Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen"
Die Erklärung in der Hilfe lautet:

Zitat:
SendMessageTimeout Function
--------------------------------------------------------------------------------
Sends the specified message to one of more windows.

Syntax

LRESULT SendMessageTimeout( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam,
UINT fuFlags,
UINT uTimeout,
PDWORD_PTR lpdwResult
);
Ich scheine etwas zu übersehen, aber was? Wäre über jede Hilfe dankbar.
  Mit Zitat antworten Zitat
alf.stefan

Registriert seit: 11. Apr 2003
88 Beiträge
 
Delphi 7 Professional
 
#8

Re: Prozess ohne Nachfrage beenden

  Alt 11. Aug 2009, 14:08
ist der letzte Parameter nicht ein pointer?

hast Du es schon so versucht?

 if SendMessageTimeout(Wnd, WM_Close, 0, 0, SMTO_NORMAL, 3000, @DWResult) = 0 then
  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 12:14 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