Autor Beitrag
Spooky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Fedora Core 1, Win XP Prof Corp.
D6 Enterprise, D7 Enterprise
BeitragVerfasst: Di 02.12.03 18:16 
moin ich habe nen prog geschrieben nur komme ich momentan nicht weiter
und zwa starte ich eine anwendung ueber shellexecute
aber wie kann ich die anwendung wieder schliessen ?
giebts dafuer auch nen befehl ?

_________________
gruss
Spooky
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 19:44 
Such mal im Forum, wurde schon oft gefragt und beantwortet.
ixtreme
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 19:47 
vielleicht sagst du ihm noch nach was er suchen soll....
Spooky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Fedora Core 1, Win XP Prof Corp.
D6 Enterprise, D7 Enterprise
BeitragVerfasst: Di 02.12.03 19:49 
genau das dachte ich auch gerade *g*
ich habe schon gesucht aber nix gefunden :(

_________________
gruss
Spooky
ixtreme
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 20:03 
Such mal nach Handle oder FindWindow.....

Hier ein Code, falls du den Titel vom Programm weißt! In diesem Beispiel wäre es notepad

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  h: hwnd;
begin
  h := FindWindowByTitle('notepad');
  if h <> 0 then // if we found notepad
    CloseWindow(h)
  else
    ShowMessage('not found.');
end;


und hier die function dazu:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  // Get the first window
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    // retrieve its text
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
      // Get the next window
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;
Spooky Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Fedora Core 1, Win XP Prof Corp.
D6 Enterprise, D7 Enterprise
BeitragVerfasst: Di 02.12.03 20:09 
Undefinierter Bezeichner: 'FindWindowByTitle'
Undefinierter Bezeichner: 'SW_CLOSE'

giebts nich sowas aehnliches wie
ausblenden Quelltext
1:
ShellExecute(Application.Handle, 'CLOSE' ,PChar(optionen.botexe.text), nil, PChar(optionen.botfolder.Text), sw_ShowMaximized);					

_________________
gruss
Spooky
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 21:57 
ixtreme hat folgendes geschrieben:
vielleicht sagst du ihm noch nach was er suchen soll....

:roll: Nach was wohl? Suche in: Delphi-Forum, Delphi-Library PROGRAMM BEENDEN, Suche in: Delphi-Forum, Delphi-Library FENSTER SCHLIEßEN, Suche in: Delphi-Forum, Delphi-Library ANWENDUNG BEENDEN. Da dürfte er genug finden.

@ixtrem: Das was du da an Source anbietest ist aber auch nicht das grüne vom Ei. Wozu gibt es denn FindWindow? genau damit man sich nicht selbst durch alle fenster itterieren muss. Und so wie du das machst ist es auch noch denkbar schlecht. So findest du nämlich nicht immer alle. Wenn du es schon so umständlich machst, dann nimm EnumWindows.

Da wohl wieder niemand den fünf Zeiler auf die Reihe bekommt und die Sucvhe angeblich auch nichts bringt weil man nicht in der lage ist sie zu bedienen. So geht's:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  hWnd: THandle;
begin
  hWnd := FindWindow(nil, 'Rechner');
  if hWnd <> 0 then
    SendMessage(hWnd, WM_CLOSE, 0, 0)
  else
    RaiseLastOSError();


Das funktioniert aber nur, wenn der du auch das Hauptfenster erwischst, ansonsten läuft der Prozess munter weiter. Deswegen lieber einen Snapshot machen (Suche in: Delphi-Forum, Delphi-Library CREATETOOLHLEP32SNAPSHOT) und mit Suche in: Delphi-Forum, Delphi-Library TERMINATEPROCESS abschießen. Das ist allerdings die harte Methode.
ixtreme
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 03.12.03 17:33 
danke, nimmt mir einiges an Arbeit ab :-)