お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"フォーカスされているファイル名の取得"



07コナンです.こんXXは.

 これは としさん が示されたコードです.

 エクスプローラを開いたとします.で,何かファイル(フォルダでも何で
も)を左クリックでフォーカスします.このフォーカスされているファイル
名を(D3のプログラムから)取得する事って出来ます.
 フォームにボタンとエディットボックスを配置してください.



参考元:nifty:FDELPHI/MES/11/3621

unit Exp;

interface

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

const
  LVM_FIRST        = $1000;
  LVM_GETITEMCOUNT = LVM_FIRST + 4;
  LVM_GETITEM      = LVM_FIRST + 5;
  LVIF_TEXT        = 1;
  LVIF_STATE       = 8;
  LVIS_SELECTED    = 2;

type
  PLVItem = ^TLVItem;
  TLVItem = packed record
    mask: UINT;
    iItem: Integer;
    iSubItem: Integer;
    state: UINT;
    stateMask: UINT;
    pszText: PChar;
    cchTextMax: Integer;
    iImage: Integer;
    lParam: LPARAM;
  end;

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

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
var hMap, hWnd: Integer;
    Cnt, K: Integer;
    pMap: Pointer;
    pItem: PLVItem;
begin
     hMap := CreateFileMapping(-1, nil,
               PAGE_READWRITE, 0, 1024, 'MyFile');
     pMap := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
     pItem := pMap;
     with pItem^ do begin
          mask := LVIF_STATE or LVIF_TEXT;
          pItem^.iSubItem := 0;
          stateMask := LVIS_SELECTED;
          pszText := Ptr(Integer(pMap) + Sizeof(TLVItem));
          cchTextMax := 255;
          iImage := 0;
          lParam := 0;
     end;
     hWnd := FindWindow('ExploreWClass', nil);
     SetForegroundWindow(hWnd);
     Sleep(100);
     hWnd := FindWindowEx(hWnd, 0, 'SHELLDLL_DefView',nil);
     hWnd := FindWindowEx(hWnd, 0, 'SysListView32', nil);
     Cnt := SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
     for K := 0 to Cnt - 1 do begin
         pItem^.iItem := K;
         SendMessage(hWnd, LVM_GETITEM, K, Integer(pItem));
         if pItem^.state <> 0 then break;
     end;
     Edit1.Text := pItem^.pszText;
     UnmapViewOfFile(pMap);
     CloseHandle(hMap);
end;

end.

 // Lib50 + WIN95B + EmNifty Ver2.05
 // 98/04/16 (木) 12:27:12 07コナン


Original document by 07コナン      氏 ID:(QZM05143)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum