パソコンで動作しているアプリケーションのEXE名を取得するには?

解決


TH  2005-04-13 01:59:06  No: 14271

パソコンで動作しているアプリケーションのEXE名を取り出して処理したいのですが、タスクマネージャに表示される様なEXE名を取り出す方法がありましたら教えて下さい。


s  2005-04-13 03:57:34  No: 14272

他に動いているアプリケーションの一覧を知るには?
http://www.borland.co.jp/qanda/delphi/d0003287.html


TH  2005-04-13 22:17:27  No: 14273

ありがとうございました。
試してみましたが、TProcessEntry32等が未定義になりました。
「該当するバージョン:Delphi 1.0,Delphi 2.0,Delphi 3.0/Delphi3.1,Delphi4」となっていましたが、DelPhi 7.0ではどの様に使えばよろしいのでしょうか?


jok  2005-04-13 23:43:40  No: 14274

ここ

https://www.petitmonte.com/bbs/answers?question_id=1652

の GetAllProcessModuleName か GetProcessModule が役に立つでしょう。


s  2005-04-14 00:12:18  No: 14275

>DelPhi 7.0ではどの様に使えばよろしいのでしょうか?
http://madia.world.coocan.jp/delphi/Win32API/Process.htm


s  2005-04-14 00:29:16  No: 14276

B社のFAQサンプル間違っているようです。  (訂正依頼しました)
Pr.dwSize := sizeof (PROCESSENTRY32);を下記の場所に入れてください。

    List.Clear;
       Pr.dwSize := sizeof (PROCESSENTRY32);
    Flag := Process32First( ListHandle, Pr);

http://www.borland.co.jp/qanda/delphi/d0003287.html
>http://support.microsoft.com/default.aspx?scid=kb;ja;175030
> 注 : Process32First() を呼び出す前に、PROCESSENTRY32 構造体の
>  dwSize メンバに sizeof (PROCESSENTRY32) を設定するようにしてください。

>DelPhi 7.0ではどの様に使えばよろしいのでしょうか?
サンプルを試すには、
uses TLHELP32;
を追加してください
type
  TForm1 = class(TForm)
  ...
  public
    { Public 宣言 }
    procedure GetProcessesList(List: TStringList);
  ...
  end;
という具合に、    procedure GetProcessesList(List: TStringList);
を追加してください


TH  2005-04-14 21:39:13  No: 14277

数多くのレス、ありがとうございました。
サンプルを参照してプログラム作成を行います。


Mr.XRAY  URL  2005-04-15 08:47:43  No: 14278

質問内容が,EXE名を知りたいということですので,他の方の様にプロセス
の一覧で取得するのが正攻法だとは思います.
一方,もし,起動中のアプリだけに操作をする場合であれば,直接
ハンドルを取得する以下のようなコードも考えられます.

参考までに.

implementation

{$R *.DFM}

// 使用コンポーネントは以下の通り
// Button1 (TButton)
// ListView (TListView);
// ImageList1 (TImageList)

//=============================================================================
//  現在起動中のアプリの一覧を作成
//  ここでは[Ctrl]+[Alt]+[Delete]で表示されるタスクマネージャの[アプリケーシ
//  ョン]タブの表示を真似てみた.
//
//  ・タイトルがあり,表示されているウィンドウのみを対象とする
//  ・他のウィンドウに所有されていないウィンドウのみとする
//  ・非可視のウィンドウはリスト対象から除く
//  ・タスクトレイアプリケーションも除く
//  リストするウィンドウはGetWindow等でも制御可能.詳細は以下を参照
//  http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html
//=============================================================================
function EnumWindowProc(Handle: hWnd; lPalam: Integer):Boolean;Stdcall;
Var
     Title : array[0..MAX_PATH] of char;
     AItem : TListItem;
     AIcon : TIcon;
begin
     Result:=True;
     //所有されていないウィンドウのみ
     if GetWindow(Handle,GW_OWNER)<>0 then exit;
     //非可視ウィンドウは除く
     if not IsWindowVisible(Handle) then exit;

     if GetWindowText(Handle, Title,MAX_PATH-1 )>0 then begin
       AIcon:=TIcon.Create;
       if AnsiUpperCase(Title)<>'PROGRAM MANAGER' then begin
         AItem:=Form1.ListView1.Items.Add;
         AItem.Caption:=Title;
         AIcon.Handle:=GetClassLong(Handle,GCL_HICONSM);
         AItem.ImageIndex:=Form1.ImageList1.AddIcon(AIcon);
       end;
     end;
end;
//=============================================================================
//  一覧表示用のListViewの設定
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
     ListView1.ViewStyle:=vsReport;
     ListView1.SmallImages:=ImageList1;
     ListView1.Columns.Add;
     ListView1.Columns[0].Caption :=' タスク';
     ListView1.Columns[0].Width   :=326;
end;
//=============================================================================
//  ボタンクリックでウィンドウのリストを作成
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
     ListView1.Items.Clear;
     ImageList1.Clear;
     EnumWindows(Addr(EnumWindowProc), 0);
end;

end.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加