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