Delphi Tips 
-----------------------------

0147  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/11 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/11 osamu 編集
クリップボードにコピーされたファイル・ディレクトリ

> クリップボードからペーストなのですが、どのようにしたらファイル名
> なのか確認できますか?その取り出し方も教えていただけないでしょうか?

プログラム上、考慮することが2点(だけかな?)、あります。

1) Explorer上で「コピー」した場合は、クリップボード内にCF_HDROPフォーマットのデータが入るようになってます。この場合、ファイルの有無はこのフォーマットの有無で判断できます。例は下のほうに置いておきます。

2) IE4が出てから、Explorerに「アドレス」なるコンボボックスが付きやがりまして、ここでディレクトリ名の「コピー」、できちまうんスよ、ったく。こいつ、テキスト形式(CF_TEXT)なんでね、これも考慮するとくりゃ、テキストがファイル名として正しいのか、白黒つけなきゃならないんスね。あ〜こりゃこりゃ。ちと面倒なコトをするハメになりそうっスよ、ったく。くぁ〜、まぃったねぇ。あっしぁ、面倒みきれませんぜ。なんせ あっし、ほれ、バカなんで。

// uses Clipbrd, ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
var
  i,
  n: integer;
  hDrop: THandle;
  szFile:  array[0..MAX_PATH-1] of Char;
begin
  if HasFormat(CF_HDROP) then
  begin
    hDrop := GetAsHandle(CF_HDROP);
    n := DragQueryFile(hDrop, $FFFFFFFF, szFile, MAX_PATH); // -1かな?(64bit用)
    Caption := Format('FileCount : %d', [n]);
    for i := 0 to n - 1 do
    begin
      DragQueryFile(hDrop, i, szFile, MAX_PATH);
      ListBox1.Items.Add(szFile);
    end;
  end;
end;
参照: [Delphi-ML:25073] <その他Windows関連> <Windows> <ファイル>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp