Delphi Clipboard Data Size

0

Witam mam problem,
kod:

function GetClipboardSize(): Integer;
var
  hData : DWORD;
begin
  Result := -1;
  if OpenClipboard(0) then
  begin
    if IsClipboardFormatAvailable(CF_TEXT) then
    begin
      hData := GetClipboardData(CF_TEXT);
      CloseClipboard();
      Result := GlobalSize(hData);
    end;
        if IsClipboardFormatAvailable(CF_BITMAP) then
    begin
      hData := GetClipboardData(CF_BITMAP);
      CloseClipboard();
      Result := GlobalSize(hData);
    end;

        if IsClipboardFormatAvailable(CF_METAFILEPICT) then
    begin
      hData := GetClipboardData(CF_METAFILEPICT);
      CloseClipboard();
      Result := GlobalSize(hData);
    end;
    end;
  end;

Powinien podawac mi wielkosc pliku w bajtach zapisanego w schowku,
gdy zapisze tekst to pokazuje mi prawidlowo a gdy wkleje obrazek/program do schowka to cos sie krzaczy i pokazuje -1 i cos z schowkiem sie knoci bo nie da sie kopiowac wtedy.

0

czy nikt nie wie?

0

TomRiddle: zajebiste rady jak zwykle w cenie :) Do zająca: zwraca Tobie funkcja -1, bo nic się nie kaszani tylko to co jest w Schowku nie jest ani typu CF_BITMAP, ani CF_METAFILEPICT, ani CF_TEXT i dlatego wykonuje się kod z przed wszystkich if'ów. Zobacz sobie jakie mogą być typy schowków. Ja nie wiem jaki powinien być dla danych w stylu plik, ale na http://www.swissdelphicenter.ch/torry/showcode.php?id=2059 wiudać jak działa funckja GetClipBoardFormatName oraz na http://www.delphipages.com/forum/showthread.php?t=186379 widać jak skopiować TStream do schowka oraz wykonać inne operacje na schowku. Rady TomRiddle bym nie bral pod uwagę, bo po to masz Schowek żeby nie zapisywać jeszcze tego co w nim jest na dysku, jeżeli nie trzeba tego robić. Chłopak chce pomagać i to się chwali, tylko czasem nie wiem czy do końca myśli nad tym co doradza ;/

0

W przypadku Bitmap to chyba można GetObject i masz min. wielkość (szerokość i wysokość) bitmapy oraz ilość bitów na piksel a z tego można by wyliczyć ile zajmuje obraz dodać do tego rozmiar nagłówka i chyba powinno być ok (to tylko moja urojona teoria nie sprawdzałem).

0

Ale to nie chodzi konkretnie o ten wynik -1 ale o to ze jak wlacze program to nie moge kopiowac nic, wszystko sie chrzani i nie dziala kopiowanie ani wklejanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1