Předmět Autor Datum
Mrkni se sem.
Flash_Gordon 15.02.2008 16:54
Flash_Gordon
Díky, ale ten dotaz na MSDN je shodou okolností můj:-D Nevím jestli je moje angličtina až tak hrozná…
Mitch 15.02.2008 17:07
Mitch
Hmmm. Tak se mrkni sem a je3t2 sem.. Jdu do obchodu :)
Flash_Gordon 15.02.2008 17:37
Flash_Gordon
Ještě jednou dík za snahu, ale asi mi nepřeje štěstí. Druhý odkaz je článek, který jsem četl ale zas…
Mitch 15.02.2008 18:30
Mitch
Hůův. No ještě existuje event vytvářený při změně file systému. Jinak nevím. //Edit Jestliže ti j…
Flash_Gordon 15.02.2008 18:35
Flash_Gordon
O aktualizaci okna nejde. Prostě mám ListView, kde jsou položky reprezentující soubory v ISO obrazu…
Mitch 15.02.2008 20:07
Mitch
Stačí zajistit, aby se relativně efektivně extrahovaly na tvé známé umístění pouze ty soubory, které…
Flash_Gordon 16.02.2008 03:58
Flash_Gordon
To, o čo sa snažíš, takýmto spôsobom spraviť nejde (pokiaľ viem), pretože to pustenie objektu si už…
los 16.02.2008 11:40
los
Díky za tipy, o vytváření souborů už při započetí táhnutí jsem přemejšlel, ale je to jako se drbat p… poslední
Mitch 16.02.2008 13:05
Mitch

Díky, ale ten dotaz na MSDN je shodou okolností můj:-D Nevím jestli je moje angličtina až tak hrozná, každopádně mi byl vysvětlen opačný postup, tj. přetažení z exploreru do ListViewu. Rong mě tam odkazuje na článek na Codeprojectu který jsem ještě předtím četl ale odpověď na můj problém tam není.

Není problém aplikovat drag&drop pokud položky ListViewu reprezentují soubory fyzicky uložené na disku, protože se naplní pole cestama a pak se o to programátor nestará. Problém je pokud položky reprezentují soubory např. v archivu... Pak potřebuju při přetažení těchto položek do Exploreru cestu, kam ty soubory extrahuju.

//Edit:
Stejný dotaz je na thread463115.html bohužel bez řešení. Tady tazatel uvažuje spíš než o získání cesty z Exploreru, předání reference na stream ze kterého by se ty data pak vyčetla což asi bude reálnější. Jediná možnost kterou takhle mám je vykostit soubory z archivu do tempu během tažení a předat cesty na ně, ale to je v případě velkých souborů dost časově náročné.

Ještě jednou dík za snahu, ale asi mi nepřeje štěstí. Druhý odkaz je článek, který jsem četl ale zase se tam neříká nic o problému přetažení souborů, které nejsou v čase přetažení dostupné. První link vypadal nadějně, tazatel měl stejný problém a vypadalo to že ho vyřešil, ale zapoměl napsat jak:-)

O aktualizaci okna nejde. Prostě mám ListView, kde jsou položky reprezentující soubory v ISO obrazu a chtěl jsme uživateli dát možnost extrahovat tyto soubory pomocí drag&drop. Problém je že drag&drop z ListViewu do Exploreru je řešený tak, že informace o objektech (v tomhle případě souborech), které mají být součástí transakce se ukládají do instance DataObject a po přetažení si to Explorer už přebere. Jenže těžko můžu Exploreru poslat cesty k souborům, když jsou součástí ISO obrazu. Potřebuju získat místo, kam to uživatel přetáhl a potom už jsem shopen tam ty soubory extrahovat.

Stačí zajistit, aby se relativně efektivně extrahovaly na tvé známé umístění pouze ty soubory, které jsou nutné (vybrané) pro tuto operaci - tedy ty, které user vybral ("známé umístění" potom bude např. adresář z kama běží tvůj program (fantazii se meze nekladou).

Nakonec nastavíš "jako objekt přesunu" ty extrahované soubory ve "známém umístění" a nebo předáš referenci na objekt drag&drop (ten vytvořený uživatelem) vlastnímu konstruktoru paralelního vlákna, to by dokonce nadále bylo možné pracovat s programem, zatímco ten by extrahoval soubory, zobrazoval uživateli procentuální průběh a podobné vtipy.

A teď to nejlepší, časová náročnost je téměř totožná jako samotná extrakce - tedy v případě, že extrahováno je na totožný logický disk (přepisujou se jen odkazy v tabulce FAT), v horším případě (jiného disku, oddílu...) by se kopírovaly pouze uživatelem navolené soubory.

Otázkou je jestli to celé stojí za tu námahu (v porovnání s přínosem). :-/

To, o čo sa snažíš, takýmto spôsobom spraviť nejde (pokiaľ viem), pretože to pustenie objektu si už spracováva každá aplikácia po svojom.

Nechce sa mi to skúšať či to ide, ale skúsil by som sa pozrieť na udalosti QueryContinueDrag a GiveFeedback a pred pustením objektu v Exploreri (pri akcii DragAction.Drop), by som vytvoril na disku dočasný súbor s požadovaným obsahom. Takže by sa prenášali fyzicky súbory (nešlo by to priamo z pamäte do cieľového adresára).

Ak by to nešlo spraviť tesne pred pustením, tak by som vytvoril dočasný súbor už pri začatí operácie drag&drop.

edit: Tak to predsa len pôjde aj priamo z pamäte. Nečítal som to podrobne, ale nadpis vyzerá sľubne: Transferring Virtual Files to Windows Explorer in C#.

Díky za tipy, o vytváření souborů už při započetí táhnutí jsem přemejšlel, ale je to jako se drbat pravou rukou za levým uchem a když vidím, že třeba archivátory tohle nemají zapotřebí tak jsem chtěl zjistit jak to dělají.

Aspoň se nebudu nudit:-)

Zpět do poradny Odpovědět na původní otázku Nahoru