Luk et andet program

Tags:    delphi

Er dette muligt?
Jeg har selv forsøgt mig med koden:

procedure TForm1.Button1Click(Sender: TObject);
var
Handle : Thandle;
begin
handle:=findwindow('C:\\program.exe',nil);
sendmessage(handle,WM_CLOSE,0,0);
end;

Programmet compiles fint, men gør ikke som det skal.

Hjælp.



7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Det her virker

Fold kodeboks ind/udKode 






-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ W++ w PS X+ tv+ b D G e- h! !r z--
------END GEEK CODE BLOCK------



Når jeg compiler, så viser den fejl ved TProcessEntry32... Mangler jeg et komponent?


Du skal huske at tilføje TLHelp32 under dine uses-

Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Dette skal virke fint hvis du spesifiserer klassenavnet og/eller tittelen på vinduet:
Fold kodeboks ind/udKode 


Mvh
DiZpel

[Redigeret d. 05/04-05 16:29:38 af DiZpel]



Når jeg compiler, så viser den fejl ved TProcessEntry32... Mangler jeg et komponent?



Nu kan jeg godt compile med functionen KillTask... Hvordan får jeg så denne function til at "dræbe" teksten i en Edit?



Nu kan jeg godt compile med functionen KillTask... Hvordan får jeg så denne function til at "dræbe" teksten i en Edit?

I en buttons OnClick event skriver du
KillTask(Edit1.Text);
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Nu har jeg gjort alt hvad I siger, men stadigvæk sker der intet når jeg kører programmet...

her er hele mit programs kode:



unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
KillTask(Edit1.Text);
end;

end.




t