[ n1tr0 @ 11.05.2011. 13:31 ] @
Elem znam kako da izvucem kopiranu sliku i text iz clipboarda, ali imam problem jer treba da izvucem kopirane fajlove iz clipboarda, tj. explorera. Nisam siguran da windows explorer(u Win 7) uopste stavi imena(putanje) kopiranih fajlova u clipboard jer bude prazan, a znam da je pre na win98 i mislim xp kopirao u clipboard citave putanje.
Da li neko zna kako se mogu izvuci kopirani fajlovi iz win explorera - dakle ako neko oznaci fajlove i klikne copy, gde se oni smestaju i da li je moguce iz .NET okruzenja ili preko nekog dll-a pristupiti imenima(putanjama) tih fajlova? (OS kao sto vec rekoh je Windows 7)
Radim u C# ali generalno bilo kakva referenca bi mi posluzila.

Poz.
[ Boris B. @ 11.05.2011. 14:29 ] @
Pogledaj Clipboard.GetFileDropList(). Za explorer nije problem, problem je OLE drag&drop, kao sto su mailovi iz outlooka...
[ n1tr0 @ 11.05.2011. 15:40 ] @
Poz Borise - vec sam probao tako - cak i po tutorial primerima, ali nije mi poslo za rukom - tj. dobijao sam informaciju da je Clipboard empty.
Moguce da je bilo zato sto sam trazio highestAvailable dozvolu za aplikaciju prilikom pokretanja(zbog ovoga nekim cudom Drag & Drop ne radi takodje) pa sam promenio sada na asInvoker. Ali probacu ponovo tako...
[ n1tr0 @ 11.05.2011. 16:04 ] @
Izgleda da je jos jedan od fascinantnih bug-ova. Ako stavim:
Code:
<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

Onda radi, a ako stavim:
Code:
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

onda ne radi.
Isti slucaj je kod Drag&Drop - sa invoker-om radi sa Administrator ne radi...
[ Boris B. @ 11.05.2011. 20:17 ] @
Možda nije bag. Priznajem da se nisam susretao sa clipboardom u scenariju sa različitim execution levelima, ali onako po intuciji mi izgleda logično da ne radi. Ako kažeš asInvoker znači da koristiš privilegije korisnika koji je ulogovan, tj. koji je pokrenuo explorer.exe. Ako program pokreneš AsAdministrator to je onda verovatno kontekst drugog korisnika, i logično je da nemaju isti clipboard (zamišljam 5 korisnika na terminal serveru kako koriste jedan clipboard i vidim da ne ide ).

Ako hoćeš da testiraš da li je to u pitanju pozovi iz svog programa explorer.exe (new Process(...).Run) i iz tog explorera uradi Copy pa vidi da li će onda radi.

[ Boris B. @ 12.05.2011. 09:39 ] @
Sad sam se setio, sigurno je to što sam ti napisao u prethodnom postu. ;)

Na Win7 koristim Total Commander kao Run as admin, da mogu lepo da pišem u Program Files. Kada pustim film iz Total Commandera ne radi mi drag&drop titlova sa desktopa, dok inače radi.

Znači sigurno Windows gleda na to kao na različite korisnike koji nemaju isti clipboard.
[ n1tr0 @ 17.05.2011. 15:05 ] @
Citat:
Boris B.: Kada pustim film iz Total Commandera ne radi mi drag&drop titlova sa desktopa, dok inače radi.
Pronaci cu clanak - nasao sam negde na msdn prijavljeno kao bug da ako program trazi requireAdministrator ne moze da funkcionise drag and drop. Moguce bas zbog toga sto si rekao. :)
Da ne zna neko mozda da li je moguce da samo jedna funkcija ili metoda zahteva admin dozvole - npr. metoda Save ukoliko se snima negde gde su potrebne admin dozvole (da ne treba citav program da bude na requireAdministrator)?
[ n1tr0 @ 21.05.2011. 19:59 ] @
Jel se iko suocio sa ovim problemom:
- ako otvorite outlook i u mail-u ima neki attachment - konkretno slika - kliknete desni na njega i copy
Gde se sacuvaju bilo kakvi podaci o attachmentu - da li se snimi slika na clipboard ili putanja do fajla. Sta god pokusam - ContainsImage, ContainsData, ContainsText... sve moguce mi vraca null. Ali ako u Exploreru uradite paste, kopirace taj fajl.
Da li postoji neko resenje da se dodje do toga koji fajl je kopiran ili nesto slicno?
[ Boris B. @ 21.05.2011. 21:20 ] @
Citat:
Boris B.: ...Za explorer nije problem, problem je OLE drag&drop, kao sto su mailovi iz outlooka...


Znači tu smo .

Ono što treba da tražiš je OLE DragDrop, stvar nije podržana .Net frameworkom i treba ti dosta unsafe WinAPI i COM koda da bi proradila. Dobra vest je da kada radi, onda radi i za outlook i za sve ostale programe koji podržavaju OLE drag drop. Imaš ovde jedan od primera mada treba da se popravlja, pogledaj postove ispod koda.