お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"フルパスをクリップボードにコピー(Delphi最小アプリ)"



SendToフォルダに入れてエクスプローラなどからフルパスを取り出すアプリです。
なるべく早く起動させたいのでライブラリは使わず、APIだけを使っています。
クリップボードを APIで操作するときの参考にしてください。

なお、空のプログラムをコンパイルしたときと同じサイズの実行ファイルができ
るので、おそらく Delphiで作れる最小のアプリです。




//エクスプローラなどからクリップボードにフルパスをコピーするツール
//                                             (written by ぜえた)
program PathCopy;

uses Windows;

function SkipExeName(s: PChar): PChar;
begin
  Result := s;
  if Result^ = '"' then begin
    repeat
      Inc(Result);
    until Result^ = '"';
    Inc(Result);
  end else begin
    repeat
      if Result^ = #0 then Exit;
      Inc(Result);
    until Result^ = ' ';
  end;
  while Result^ = ' ' do Inc(Result);
end;

label 0;
var
  CmdStr: PChar;
  MemHandle: HGlobal;
  PathStr: PChar;
begin
  CmdStr := SkipExeName(CmdLine);
  MemHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, lstrlen(CmdStr) + 1);  if MemHandle = 0 then Exit;
  PathStr := GlobalLock(MemHandle);
  if PathStr <> nil then begin
    lstrcpy(PathStr, CmdStr);
    GlobalUnlock(MemHandle);
    if not OpenClipboard(0) then goto 0;
    EmptyClipboard;
    SetClipboardData(CF_TEXT, MemHandle);
    CloseClipboard;
    Exit;
  end;
0:GlobalFree(MemHandle);
end.

                                                    ぜえた (QZC05100)

Original document by ぜえた          氏 ID:(QZC05100)


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

Copyright 1996-2002 Delphi Users' Forum