powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сохранение файла из буфера
11 сообщений из 11, страница 1 из 1
сохранение файла из буфера
    #39527073
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложение работает через RDP. Появилась необходимость добавлять файл пдф с локального на сервер через приложение (на диск файл с переименовыванием, в базу ссылку на файл)
Думал проще всего это сделать скопировав нужный файл в проводнике (на локальной машине), затем кнопка в приложении (RDP).
пробую использовать этот код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
procedure TForm3.Button2Click(Sender: TObject);
var
  hDrop: THandle;
  MyStream: TMemoryStream;
  Files: TStringList;
  NumFiles, FileIdx: DWORD;
  FileName: array[0..MAX_PATH] of Char;
  I: Integer;
  fs: tfilestream;
begin
  Files := TStringList.Create;
  try
    Clipboard.Open;
    try
      if Clipboard.HasFormat(CF_HDROP) then
      begin        
        hDrop := Clipboard.GetAsHandle(CF_HDROP);
        NumFiles := DragQueryFile(hDrop, $FFFFFFFF, nil, 0);
        if NumFiles <> 0 then
        begin
          for FileIdx := 0 to NumFiles-1 do
          begin
            if DragQueryFile(hDrop, FileIdx, FileName, MAX_PATH) <> 0 then
              Files.Add(FileName);
          end;
        end;
      end;
    finally
      Clipboard.Close;
    end;
    for I := 0 to Files.Count-1 do
    begin
      MyStream := TMemoryStream.Create;
      try
        MyStream.LoadFromFile(Files[I]);
        MyStream.Position := 0;        

        fs := tfilestream.create('C:\1\test.pdf', fmCreate);
        try
          MyStream.position := 0;
          fs.copyfrom(MyStream, 0);
        finally
          fs.free;
        end;

      finally
        MyStream.Free;
      end;
    end;
  finally
    Files.Free;
  end;
end;



Код работает при копировании в буфер на той же машине где работает приложение. При копировании локально, а приложение - удаленно нет. RDP настроено на использование буфера, т.е. через проводник файл копируется локально и вставляется на удаленной машине.
ЗЫ Вручника вставлять не вариант - т.к. юзверя работают с приложением через RemoteApp

Поможите, если кто знает тему!
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527105
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GCdrПоможите, если кто знает тему!
Там передается не файл, а имя файла. Проводник умеет забирать файл с удаленной машины.

ИМХО.
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527106
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверить можно любым просмотрщиком буфера.
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527111
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

проверял этим кодом:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
procedure TForm3.Button1Click(Sender: TObject);

var
  f: THandle;
  buffer: Array [0..MAX_PATH] of Char;
  i, numFiles: Integer;

begin

Clipboard.Open;
  try
    f := Clipboard.GetAsHandle(CF_HDROP);
    if f <> 0 then
    begin
      numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0);
      memo1.Clear;
      for i:= 0 to numfiles - 1 do
      begin
        buffer[0] := #0;
        DragQueryFile( f, i, buffer, sizeof(buffer));
        memo1.lines.add(buffer);
      end;
    end;
  finally
    Clipboard.close;
  end;

end;



локально - пишет в мемо имена файлов, удаленно - нет
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527113
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GCdrлокально - пишет в мемо имена файлов, удаленно - нет
Дак этот код ограничивает тип содержимого. Проверь просмотрщиком.
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527132
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman Проверь просмотрщиком.
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527133
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527134
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527165
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
при копировании локально, удаленно на сервере в буфере 2-я картинка.
Как это может мне помочь?
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527195
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему (по нескольким темам в сети), проводник использует нечто недокументированное.
Обычно рекомендуют иметь подключенную шару клиентского пк https://stackoverflow.com/questions/5905059/from-an-application-running-in-remote-desktop-how-to-programmatically-get-a-fil
https://superuser.com/questions/966428/is-there-a-way-to-programatically-copy-and-paste-to-an-rdp
...
Рейтинг: 0 / 0
сохранение файла из буфера
    #39527646
GCdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буду, наверное подхватывать через dropbox или там oneDrive.
Или может кто подскажет какое другое более интересное решение?!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сохранение файла из буфера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]