Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.08.2010, 16:43
Badland Badland вне форума
Прохожий
 
Регистрация: 31.08.2010
Сообщения: 2
Репутация: 10
По умолчанию Отправка WM_DROPFILES

Доброго времени суток.
Пытаюсь раздуплить как перетаскивать объекты из моей проги в другую.
Нарыл код:
Код:
function DropFilesOnWnd(AWnd: HWND; AFiles: String): Boolean; overload;
var LInfo: PDragInfoA;
    LRes: Boolean;
    LHGlobal: Cardinal;
    i:integer;
begin
  LRes := False;
  if copy(AFiles, length(AFiles), 1) <> #0 then
    AFiles := AFiles + #0;
  LHGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf(TDragInfoA) + length(AFiles) + 1);
  if LHGlobal <> 0 then
  begin
    LInfo := GlobalLock(LHGlobal);
    if LInfo <> nil then
    begin
      LInfo.uSize := SizeOf(TDragInfoA);
      LInfo.fNC:=true;
      Move(AFiles[1], PAnsiChar(Cardinal(LInfo) + LInfo.uSize)^, Length(AFiles));
      GlobalUnlock(LHGlobal);
      LRes := PostMessageA(AWnd, WM_DROPFILES, LHGlobal, 0);
    end;
    if not(LRes) then
      GlobalFree(LHGlobal);
  end;
  result := LRes;
end;

вызываю его таким мокаром:
Код:
DropFilesOnWnd(WindowFromPoint(Mouse.CursorPos),'D:\boot.ini');

Собственно проблема:
Пишу все это счастье в Delphi 2009 на Win7
При отсылке сообщения, видимо из - за юникода, во первых отсылается половина длины строки. Во вторых например винамп разрезает всю строку посимвольно и считает каждый символ как отдельное имя файла. Также реагирует и скайп. Говорит, что папку нельзя отправлять.
Крутил и так и эдак... ничего в голову не приходит. Подскажите плиз как быть.
Ответить с цитированием
  #2  
Старый 02.09.2010, 14:09
Badland Badland вне форума
Прохожий
 
Регистрация: 31.08.2010
Сообщения: 2
Репутация: 10
По умолчанию

Разобрался )
Надо было юзать структуру PDROPFILES. Там есть fWide который отвечает за юникод )
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter