Avatar billede stone Forsker
17. maj 2001 - 11:00 Der er 7 kommentarer og
2 løsninger

luk program fra listbox

her er lidt kode som viser alle aktiv kørende programmer i en listbox.
spørgsmålet er:
hvordan kan jeg ved klik på det enkelte Item i listbox,lukke for det aktiv kørende program?


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;
    Label1: TLabel;
    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.Button1Click(Sender: TObject);
  var
    WindowInfo : TFindWindowStruct;
begin
    EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
end;



end.
Avatar billede borrisholt Novice
17. maj 2001 - 11:03 #1
Du laver en PostMessage(WM_CLOSE,[HandlePåHovedVindue], 0,0); Så lukker programmet.

Jens B http://fotx.net/borrisholt
Avatar billede ziron Nybegynder
17. maj 2001 - 11:08 #2
Sendmessage kunne man vel også bruge :-)

/ZIRON
Avatar billede ziron Nybegynder
17. maj 2001 - 11:38 #3
sådan kom lige med det:

SendMessage(HandlePåHovedVindue, WM_SYSCOMMAND,SC_CLOSE,0);

/ZIRON
Avatar billede stone Forsker
18. maj 2001 - 20:32 #4
hvad skal stå i [handlepåhovedvindue]
Avatar billede ziron Nybegynder
20. maj 2001 - 12:13 #5
det som du finder i dit program, altså det i listboxen, det er det som der skal stå....

/ZIRON
Avatar billede stone Forsker
21. maj 2001 - 00:23 #6
jeg ved ikke på forhånd hvad der er på listen, da
programmet kører på forskellige pc\'er.
programmet finder alle kørende programmer,og jeg kan ikke vide hvad for programmer der kører på forskellige pc\'er
Avatar billede ziron Nybegynder
21. maj 2001 - 00:27 #7
nej når du kører det som du får ved hjælp af den kode du har der oppe, så har du noget i listboxen og når du så kilker på en linine finder du ud af hvad der står i den linie og og indsætter det på HandlePåHovedVindue plads...

kan du ikke finde ud af det så skirv lige :-)

/ZIRON
Avatar billede stone Forsker
21. maj 2001 - 23:02 #8
Ziron: det forstår jeg ikke .....hjælp
Avatar billede ziron Nybegynder
21. maj 2001 - 23:15 #9
sådan så får du det hele:

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;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(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.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;

end.

/ZIRON
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