Вниз
Скачать: CL | DM;

ShFileOperation - Shnamemapping   Найти похожие ветки 

 
mikl2002   (2002-11-06 09:25) [0]

Кто нибудь знает как извлечь данные
psznewpath из hNameMappings^ типа shnamemapping
после вызова функции ShFileOperation


 
Opuhshii ©   (2002-11-06 09:58) [1]

typedef struct _SHFILEOPSTRUCT { // shfos
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;


Showmessage(Pchar(hNameMappings)) ;


 
Opuhshii ©   (2002-11-06 10:09) [2]

поспешишь. людей насмешишь,.. ну что же,. насмешим ещё разок,!


 
Alex4444444444   (2002-11-06 10:13) [3]

Is sobstvennogo opyta:

(1) hNameMappings, esli ne nil, ssylaetsya na structuru, v kotoroj pervye 4 byta = colichestvo elementov, a potom, array of _SHNAMEMAPPING.
(2) (na moj vzglyad, iz help"a eto ne ochevidno): perechislyayutsya ne vse skopirovannye/peredvinutye files, a tol"ko te, imena kotoryh automaticheski izmeneny systemoy (FOF_RENAMEONCOLLISION in Flags).
(3) Ne zabudte FOF_WANTMAPPINGHANDLE vo Flags
(4) Ne zabudte vyzvat" SHFreeNameMappings


typedef struct _SHNAMEMAPPING { // shnm
LPSTR pszOldPath; // address of old path name
LPSTR pszNewPath; // pointer to new path name
int cchOldPath; // number of characters in old path name
int cchNewPath; // number of characters in new path name
} SHNAMEMAPPING, FAR *LPSHNAMEMAPPING;


 
mikl2002   (2002-11-06 10:23) [4]

Я так и делал, вот код:
with OpStruc do begin
Wnd := Handle;
wFunc := FO_Copy;
pFrom := @frombuf;
pTo := @tobuf;
fFlags := FOF_NOCONFIRMATION and FOF_RENAMEONCOLLISION or FOF_WANTMAPPINGHANDLE ;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
ShFileOperation(OpStruc);
with shnamemapping(OpStruc.hNameMappings^) do
begin
fillchar(tobuf,sizeof(tobuf),0);
{psznewpath уже содерит полную чушь}
move(psznewpath^,tobuf,cchnewpath);
end;


 
Alex4444444444   (2002-11-06 10:56) [5]

Eshe raz: pervye 4 bytes soderzhat colichestvo elementov! Tak chto, v Delphi terminah, ona ssylaetsya na chto-to typa


record
Count: Integer;
Items: array[0..Something] of ^shnamemapping;
end;


(Sejchas ya uzhe ne pomnyu tochno, array of ^shnamemapping ili array of shnamemapping )


 
mikl2002   (2002-11-06 12:31) [6]

>Alex4444444444
Ок все работает
record
Count: Integer;
Items: array[0..Something] of ^shnamemapping;
end
Только я не пойму,что передавать SHFreeNameMappings
На SHFreeNameMappings(OpStruc.hNameMappings)ругается



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
14-61773
Anatoly Podgoretsky
2002-11-20 07:33
2002.12.19
Именинники 20 ноября


1-61597
nikolo
2002-12-10 12:16
2002.12.19
Как отобразить компонент после его создания?


1-61653
#Deus
2002-12-07 16:38
2002.12.19
OpenDialog


3-61435
AMS
2002-11-29 15:16
2002.12.19
XML и ADO! Нужна помощь!


1-61695
Dancho
2002-12-09 00:14
2002.12.19
Контейнер компонентов




   Наверх