Avatar billede headtaker Nybegynder
23. november 2003 - 23:17 Der er 8 kommentarer og
1 løsning

Luk andre programmer med delphi 7 ?

Hej jeg vil gerne lave et program, der skal kunne lukke andre programmer min computer kører. Hvis der sker en bestemt ting eller på et bestemt tidspunkt.

Mit problem er at jeg ikke kan finde ud af få delphi til at lukke andre programmer ?
Avatar billede stone Forsker
24. november 2003 - 00:14 #1
button1// indlæser alle aktive programmer
button2//lukker det program man klikker på i listbox'en

procedure EnumWindowsProc(hWindow : hWnd;
lParam  : LongInt);
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var
  lpBuffer : PChar;

begin
  GetMem(lpBuffer, 255);

  try
    if GetWindowText(hWindow, lpBuffer, 255) > 0 then
      Form1.ListBox1.Items.Add(lpBuffer);
  finally
    FreeMem(lpBuffer, sizeof(lpBuffer^));
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
  var
    WindowInfo : TFindWindowStruct;
begin
    EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
end;



procedure TForm1.ListBox1Click(Sender: TObject);
var
pro : String;
luk : HWND;
begin
pro := ListBox1.Items.Strings[ListBox1.ItemIndex];

luk :=  FindWindow(nil, PChar(pro));

SendMessage(luk, WM_SYSCOMMAND,SC_CLOSE,0);

end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.Clear;
end;
Avatar billede stone Forsker
24. november 2003 - 00:16 #2
ups det var clik på listbox der lukker programmet
Avatar billede headtaker Nybegynder
26. november 2003 - 23:35 #3
hhmmm....når jeg forsøger at bruge det du har skrevet, får jeg fejl i 
Form1.ListBox1.Items.Add(lpBuffer); ud defineret listbox1 hvad skal jeg gøre
er det muligt at du kan lave et eksempel til mig ?
Avatar billede stone Forsker
27. november 2003 - 00:39 #4
kommer her:
unit Unit1;

interface

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


type
  PFindWindowStruct = ^TFindWindowStruct;
  TFindWindowStruct = record
    Caption : string;
    ClassName : string;
    WindowHandle : THandle;
end;

  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure ListBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure EnumWindowsProc(hWindow : hWnd;
lParam  : LongInt);
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var
  lpBuffer : PChar;

begin
  GetMem(lpBuffer, 255);

  try
    if GetWindowText(hWindow, lpBuffer, 255) > 0 then
      Form1.ListBox1.Items.Add(lpBuffer);
  finally
    FreeMem(lpBuffer, sizeof(lpBuffer^));
  end;
end;




procedure TForm1.ListBox1Click(Sender: TObject);
var
pro : String;
luk : HWND;
begin
pro := ListBox1.Items.Strings[ListBox1.ItemIndex];

luk :=  FindWindow(nil, PChar(pro));

SendMessage(luk, WM_SYSCOMMAND,SC_CLOSE,0);

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    WindowInfo : TFindWindowStruct;
begin
    EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
end;

end.
Avatar billede headtaker Nybegynder
27. november 2003 - 16:06 #5
Nu, kom jeg da videre, jeg kan starte programmet men, den vil ikke indlæse programmerne,jeg bruger Delphi 7 under Win XP Pro, hvad kan det skyldes ?

Kan man ikke specifiere hvilke programmer man vil have lukket i kilde koden også lave en knap der kun lukker dem ?
Avatar billede stone Forsker
27. november 2003 - 18:40 #6
det har ikke noget med din delphi version at gøre, jeg kører både xp pro og 98
og der er ingen problemer med at indlæse aktive programmer.

til dit sp. 2 kan du kigge på et tidligere indlæg hvor programmet checker om
en text string er til stede i listgboxen er den det laver du den bare i en if sætning tilknyttet en knap.

http://www.eksperten.dk/spm/427182
Avatar billede headtaker Nybegynder
27. november 2003 - 22:29 #7
hhmmm.....det er vist lidt sort at det virker hos dig og ikke hos mig......jeg kan ikke se fejlen, men det er jo heller ik min kode.
Har du nogen ide til hvorfor det ikke virker ?
men hvis du har lavet en demo der virker hos dig, kunne du fx sende mig kilde koden, så kan jeg selv compiele den og teste om det virker hos mig.
mail: headtaker85@hotmail.com
Avatar billede stone Forsker
27. november 2003 - 22:55 #8
hermed sendt
Avatar billede headtaker Nybegynder
29. november 2003 - 01:45 #9
Ahaha.....Det virker.....Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester