Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 20:37   #1
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
Вопрос Работа с буфером обмена.

Программа работает с буфером обмена. Работа начинается только тогда когда к компьютеру подключена флэха и работа идёт только с флэхой.
Когда что-либо копируем с флэхи с помощью клавиш Ctrl+V или любым аналогичным способом, то содержимое буфера обмена отображается в проге и всё это сохраняется в лог-файл. А теперь проблема: как сделать так чтобы содержимое буфера добавлялось в listbox корректно.
Вот код проги:
Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMan, StdCtrls, ShellApi, clipbrd, ExtCtrls ;

type
  TMainForm = class(TForm)
    XPManifest: TXPManifest;
    lst_log: TListBox;
    timer_scan: TTimer;
      procedure timer_scanTimer(Sender: TObject);
      private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

const
  DRIVE_REMOVABLE_ID = 2;

implementation

{$R *.dfm}

function AddDataFile(FileName: string): boolean;
var
  drv_id: string;
begin
  Result := False;
  drv_id := IncludeTrailingBackslash(ExtractFileDrive(FileName));
  if GetDriveType(PChar(drv_id)) = DRIVE_REMOVABLE_ID then Result := True;
end;

procedure TMainForm.timer_scanTimer(Sender: TObject);
var
  f: THandle;
  buffer: array [0..MAX_PATH] of Char;
  i, numFiles: Integer;
begin
  if not Clipboard.HasFormat(CF_HDROP) then Exit;
  Clipboard.Open;
  try
    f := Clipboard.GetAsHandle(CF_HDROP);
    if f <> 0 then
    begin
      numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0);
            for i := 0 to numfiles - 1 do
      begin
        buffer[0] := #0;
        DragQueryFile(f, i, buffer, SizeOf(buffer));
        if AddDataFile(buffer) then
        begin
          lst_log.Items.Add(buffer);
          lst_log.Items.SaveToFile('doc.txt');
        end;
      end;
    end;
  finally
    Clipboard.Close;
  end;
end;

end.
star007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel работа с буфером обмена S0ny Microsoft Office Excel 4 19.05.2010 12:09
Не могу разобраться с буфером обмена Morphling Общие вопросы Delphi 1 25.04.2010 19:46
Работа с буфером обмена Gerzs Общие вопросы Delphi 2 26.03.2010 15:15
Работа с буфером обмена АлексейМк Общие вопросы C/C++ 1 05.08.2009 00:24
Работа с буфером обмена(win) NikLik Общие вопросы Delphi 6 24.06.2008 00:59